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); | |
} | |
} |