blob: 357d6c8e3a8f300d6774ad364ea669d9726ff85d [file] [log] [blame]
package org.eclipse.egf.producer;
import org.eclipse.core.runtime.CoreException;
import org.eclipse.egf.common.activator.EGFAbstractPlugin;
import org.eclipse.egf.model.fcore.Activity;
import org.eclipse.egf.model.fcore.Orchestration;
import org.eclipse.egf.producer.context.ActivityProductionContextProducer;
import org.eclipse.egf.producer.internal.registry.ActivityManagerProducerRegistry;
import org.eclipse.egf.producer.internal.registry.ActivityProductionContextProducerRegistry;
import org.eclipse.egf.producer.internal.registry.OrchestrationManagerProducerRegistry;
import org.eclipse.egf.producer.manager.ActivityManagerProducer;
import org.eclipse.egf.producer.manager.OrchestrationManagerProducer;
import org.osgi.framework.BundleContext;
/**
* The activator class controls the plug-in life cycle
*/
public class EGFProducerPlugin extends EGFAbstractPlugin {
/**
* Keep track of the ActivityManagerProducerRegistry
*/
private static ActivityManagerProducerRegistry __activityManagerProducerRegistry;
/**
* Keep track of the ActivityProductionContextProducerRegistry
*/
private static ActivityProductionContextProducerRegistry __activityProductionContextProducerRegistry;
/**
* Keep track of the OrchestrationManagerProducerRegistry
*/
private static OrchestrationManagerProducerRegistry __orchestrationManagerProducerRegistry;
// The shared instance
private static EGFProducerPlugin __plugin;
/**
* (non-Javadoc)
*
* @see org.eclipse.core.runtime.Plugin#start(org.osgi.framework.BundleContext)
*/
@Override
public void start(BundleContext context) throws Exception {
super.start(context);
__plugin = this;
}
/**
* (non-Javadoc)
*
* @see org.eclipse.core.runtime.Plugin#stop(org.osgi.framework.BundleContext)
*/
@Override
public void stop(BundleContext context) throws Exception {
if (__activityManagerProducerRegistry != null) {
__activityManagerProducerRegistry.dispose();
__activityManagerProducerRegistry = null;
}
if (__activityProductionContextProducerRegistry != null) {
__activityProductionContextProducerRegistry.dispose();
__activityProductionContextProducerRegistry = null;
}
if (__orchestrationManagerProducerRegistry != null) {
__orchestrationManagerProducerRegistry.dispose();
__orchestrationManagerProducerRegistry = null;
}
super.stop(context);
__plugin = null;
}
/**
* Returns the shared instance
*
* @return the shared instance
*/
public static EGFProducerPlugin getDefault() {
return __plugin;
}
/**
* Returns an ActivityManagerProducer based on an Fcore model Activity.
*
* @return an ActivityManagerProducer
*/
public static <P extends Activity> ActivityManagerProducer<P> getActivityManagerProducer(P activity) throws CoreException {
if (activity == null) {
return null;
}
if (__activityManagerProducerRegistry == null) {
__activityManagerProducerRegistry = new ActivityManagerProducerRegistry();
}
return __activityManagerProducerRegistry.getActivityManagerProducer(activity);
}
/**
* Returns an ActivityProductionContextProducer based on a parent
* IModelElementProductionContext<?>.
*
* @return an ActivityProductionContextProducer
*/
public static <P extends Activity> ActivityProductionContextProducer<P> getActivityProductionContextProducer(P activity) throws CoreException {
if (activity == null) {
return null;
}
if (__activityProductionContextProducerRegistry == null) {
__activityProductionContextProducerRegistry = new ActivityProductionContextProducerRegistry();
}
return __activityProductionContextProducerRegistry.getActivityProductionContextProducer(activity);
}
/**
* Returns an OrchestrationProducer based on a Fcore model Orchestration.
*
* @return an OrchestrationProducer
*/
public static <P extends Orchestration> OrchestrationManagerProducer<P> getOrchestrationProducer(P orchestration) throws CoreException {
if (orchestration == null) {
return null;
}
if (__orchestrationManagerProducerRegistry == null) {
__orchestrationManagerProducerRegistry = new OrchestrationManagerProducerRegistry();
}
return __orchestrationManagerProducerRegistry.getOrchestrationManagerProducer(orchestration);
}
}