blob: d3a79789fa0c6f39d9cd64853088a5ef7a029a70 [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2004, 2007 Boeing.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* Boeing - initial API and implementation
*******************************************************************************/
package org.eclipse.osee.ote.ui.test.manager.connection;
import java.io.IOException;
import java.util.Hashtable;
import java.util.logging.Level;
import org.eclipse.osee.framework.logging.OseeLog;
import org.eclipse.osee.ote.core.environment.status.IServiceStatusData;
import org.eclipse.osee.ote.core.environment.status.msg.CommandAddedMessage;
import org.eclipse.osee.ote.core.environment.status.msg.CommandRemovedMessage;
import org.eclipse.osee.ote.core.environment.status.msg.EnvErrorMessage;
import org.eclipse.osee.ote.core.environment.status.msg.SequentialCommandBeganMessage;
import org.eclipse.osee.ote.core.environment.status.msg.SequentialCommandEndedMessage;
import org.eclipse.osee.ote.core.environment.status.msg.TestCompleteMessage;
import org.eclipse.osee.ote.core.environment.status.msg.TestPointUpdateMessage;
import org.eclipse.osee.ote.core.environment.status.msg.TestServerCommandCompleteMessage;
import org.eclipse.osee.ote.core.environment.status.msg.TestStartMessage;
import org.eclipse.osee.ote.message.event.OteEventMessageUtil;
import org.eclipse.osee.ote.ui.test.manager.core.TestManagerEditor;
import org.osgi.framework.FrameworkUtil;
import org.osgi.framework.ServiceRegistration;
import org.osgi.service.event.Event;
import org.osgi.service.event.EventHandler;
/**
* @author Andrew M. Finkbeiner
*/
public final class TestManagerStatusListener implements EventHandler {
private final TestManagerServiceStatusDataVisitor testManagerServiceDataVisitor;
private ServiceRegistration<?> eventReference;
public TestManagerStatusListener(TestManagerEditor testManagerEditor, ScriptManager userEnvironment) {
this.testManagerServiceDataVisitor = new TestManagerServiceStatusDataVisitor(userEnvironment, testManagerEditor);
Hashtable<String, Object> properties = new Hashtable<>();
properties.put("event.topics", "ote/status/*");
eventReference = FrameworkUtil.getBundle(getClass()).getBundleContext().registerService(EventHandler.class.getName(), this, properties);
}
@Override
public void handleEvent(Event event) {
try {
IServiceStatusData statusData = null;
if(event.getTopic().equals(CommandAddedMessage.EVENT)){
CommandAddedMessage message = new CommandAddedMessage(OteEventMessageUtil.getBytes(event));
statusData = message.getObject();
} else if(event.getTopic().equals(CommandRemovedMessage.EVENT)){
CommandRemovedMessage message = new CommandRemovedMessage(OteEventMessageUtil.getBytes(event));
statusData = message.getObject();
} else if(event.getTopic().equals(EnvErrorMessage.EVENT)){
EnvErrorMessage message = new EnvErrorMessage(OteEventMessageUtil.getBytes(event));
statusData = message.getObject();
} else if(event.getTopic().equals(SequentialCommandBeganMessage.EVENT)){
SequentialCommandBeganMessage message = new SequentialCommandBeganMessage(OteEventMessageUtil.getBytes(event));
statusData = message.getObject();
} else if(event.getTopic().equals(SequentialCommandEndedMessage.EVENT)){
SequentialCommandEndedMessage message = new SequentialCommandEndedMessage(OteEventMessageUtil.getBytes(event));
statusData = message.getObject();
} else if(event.getTopic().equals(TestCompleteMessage.EVENT)){
TestCompleteMessage message = new TestCompleteMessage(OteEventMessageUtil.getBytes(event));
statusData = message.getObject();
} else if(event.getTopic().equals(TestPointUpdateMessage.EVENT)){
TestPointUpdateMessage message = new TestPointUpdateMessage(OteEventMessageUtil.getBytes(event));
statusData = message.getObject();
} else if(event.getTopic().equals(TestServerCommandCompleteMessage.EVENT)){
TestServerCommandCompleteMessage message = new TestServerCommandCompleteMessage(OteEventMessageUtil.getBytes(event));
statusData = message.getObject();
} else if(event.getTopic().equals(TestStartMessage.EVENT)){
TestStartMessage message = new TestStartMessage(OteEventMessageUtil.getBytes(event));
statusData = message.getObject();
}
if(statusData != null){
statusData.accept(testManagerServiceDataVisitor);
}
} catch (IOException e) {
OseeLog.log(getClass(), Level.SEVERE, event.getTopic(), e);
} catch (ClassNotFoundException e) {
OseeLog.log(getClass(), Level.SEVERE, event.getTopic(), e);
}
}
public void unregisterEventListener() {
eventReference.unregister();
}
}