blob: 28655ca7abdebc3de31c72bd7020676664a3f9e8 [file] [log] [blame]
/*****************************************************************************
* Copyright (c) 2011 Atos.
*
*
* 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:
* Atos - Initial API and implementation
* Nicolas FAUVERGUE (ALL4TEC) nicolas.fauvergue@all4tec.net - Bug 496905
*****************************************************************************/
package org.eclipse.papyrus.sysml.registry;
import java.util.ArrayList;
import java.util.Collections;
import java.util.HashMap;
import java.util.List;
import org.eclipse.emf.common.notify.AdapterFactory;
import org.eclipse.emf.ecore.EClass;
import org.eclipse.emf.ecore.EObject;
import org.eclipse.emf.edit.provider.ItemProviderAdapter;
import org.eclipse.papyrus.sysml.activities.provider.ActivitiesItemProviderAdapterFactory;
import org.eclipse.papyrus.sysml.allocations.provider.AllocationsItemProviderAdapterFactory;
import org.eclipse.papyrus.sysml.blocks.provider.BlocksItemProviderAdapterFactory;
import org.eclipse.papyrus.sysml.constraints.provider.ConstraintsItemProviderAdapterFactory;
import org.eclipse.papyrus.sysml.edit.provider.IComposableAdapterFactory;
import org.eclipse.papyrus.sysml.edit.provider.IRootAdapterFactory;
import org.eclipse.papyrus.sysml.modelelements.provider.ModelelementsItemProviderAdapterFactory;
import org.eclipse.papyrus.sysml.portandflows.provider.PortandflowsItemProviderAdapterFactory;
import org.eclipse.papyrus.sysml.requirements.provider.RequirementsItemProviderAdapterFactory;
import org.eclipse.papyrus.uml.internationalization.edit.providers.InternationalizationUMLItemProviderAdapterFactory;
import org.eclipse.uml2.uml.UMLPackage;
import org.eclipse.uml2.uml.edit.providers.AbstractionItemProvider;
import org.eclipse.uml2.uml.edit.providers.ActivityEdgeItemProvider;
import org.eclipse.uml2.uml.edit.providers.ActivityPartitionItemProvider;
import org.eclipse.uml2.uml.edit.providers.BehaviorItemProvider;
import org.eclipse.uml2.uml.edit.providers.ClassItemProvider;
import org.eclipse.uml2.uml.edit.providers.ClassifierItemProvider;
import org.eclipse.uml2.uml.edit.providers.CommentItemProvider;
import org.eclipse.uml2.uml.edit.providers.ConnectorEndItemProvider;
import org.eclipse.uml2.uml.edit.providers.ConnectorItemProvider;
import org.eclipse.uml2.uml.edit.providers.DataTypeItemProvider;
import org.eclipse.uml2.uml.edit.providers.DependencyItemProvider;
import org.eclipse.uml2.uml.edit.providers.InformationFlowItemProvider;
import org.eclipse.uml2.uml.edit.providers.InstanceSpecificationItemProvider;
import org.eclipse.uml2.uml.edit.providers.InterfaceItemProvider;
import org.eclipse.uml2.uml.edit.providers.NamedElementItemProvider;
import org.eclipse.uml2.uml.edit.providers.ObjectNodeItemProvider;
import org.eclipse.uml2.uml.edit.providers.OperationItemProvider;
import org.eclipse.uml2.uml.edit.providers.PackageItemProvider;
import org.eclipse.uml2.uml.edit.providers.ParameterItemProvider;
import org.eclipse.uml2.uml.edit.providers.ParameterSetItemProvider;
import org.eclipse.uml2.uml.edit.providers.PortItemProvider;
import org.eclipse.uml2.uml.edit.providers.PropertyItemProvider;
/**
* Get a registry of all SysML Adapter Factory classified by the UML class their
* correspond.
*
* Example:
*
* <Class.class> ->[ModelelementsItemProviderAdapterFactory,
* BlocksAdapterItemProviderFactory, RequirementsAdapterItemProviderFactory]
*
* @generated
*/
public class SysmlRegistryAdapterFactoryRegistry {
/**
* Keep track of the item provider of type ModelelementsItemProviderAdapterFactory
*
* @generated
*/
protected ModelelementsItemProviderAdapterFactory modelelementsAdapterFactoryItemProvider;
/**
* Keep track of the item provider of type BlocksItemProviderAdapterFactory
*
* @generated
*/
protected BlocksItemProviderAdapterFactory blocksAdapterFactoryItemProvider;
/**
* Keep track of the item provider of type PortandflowsItemProviderAdapterFactory
*
* @generated
*/
protected PortandflowsItemProviderAdapterFactory portandflowsAdapterFactoryItemProvider;
/**
* Keep track of the item provider of type ConstraintsItemProviderAdapterFactory
*
* @generated
*/
protected ConstraintsItemProviderAdapterFactory constraintsAdapterFactoryItemProvider;
/**
* Keep track of the item provider of type ActivitiesItemProviderAdapterFactory
*
* @generated
*/
protected ActivitiesItemProviderAdapterFactory activitiesAdapterFactoryItemProvider;
/**
* Keep track of the item provider of type AllocationsItemProviderAdapterFactory
*
* @generated
*/
protected AllocationsItemProviderAdapterFactory allocationsAdapterFactoryItemProvider;
/**
* Keep track of the item provider of type RequirementsItemProviderAdapterFactory
*
* @generated
*/
protected RequirementsItemProviderAdapterFactory requirementsAdapterFactoryItemProvider;
/**
* Registry for all SysML AdapterFactory
*
* @generated
*/
private List<AdapterFactory> adapterFactoryRegistry = new ArrayList<AdapterFactory>(7);
/**
* Registry of all {@link AdapterFactory} classified by corresponding UML element
*
* @generated
*/
private HashMap<EClass, ArrayList<AdapterFactory>> adapterFactoryRegistryMap = new HashMap<EClass, ArrayList<AdapterFactory>>();
/**
* Default adapterFactory
*
* @generated
*/
private InternationalizationUMLItemProviderAdapterFactory defaultAdapterFactory = new InternationalizationUMLItemProviderAdapterFactory();
/**
* Constructor + initialize
*
* @generated
*/
private SysmlRegistryAdapterFactoryRegistry() {
/**
* Initialize all AdapterFactories
*/
modelelementsAdapterFactoryItemProvider = new ModelelementsItemProviderAdapterFactory();
adapterFactoryRegistry.add(modelelementsAdapterFactoryItemProvider);
blocksAdapterFactoryItemProvider = new BlocksItemProviderAdapterFactory();
adapterFactoryRegistry.add(blocksAdapterFactoryItemProvider);
portandflowsAdapterFactoryItemProvider = new PortandflowsItemProviderAdapterFactory();
adapterFactoryRegistry.add(portandflowsAdapterFactoryItemProvider);
constraintsAdapterFactoryItemProvider = new ConstraintsItemProviderAdapterFactory();
adapterFactoryRegistry.add(constraintsAdapterFactoryItemProvider);
activitiesAdapterFactoryItemProvider = new ActivitiesItemProviderAdapterFactory();
adapterFactoryRegistry.add(activitiesAdapterFactoryItemProvider);
allocationsAdapterFactoryItemProvider = new AllocationsItemProviderAdapterFactory();
adapterFactoryRegistry.add(allocationsAdapterFactoryItemProvider);
requirementsAdapterFactoryItemProvider = new RequirementsItemProviderAdapterFactory();
adapterFactoryRegistry.add(requirementsAdapterFactoryItemProvider);
/**
* AdapterFactories for the ABSTRACTION elements
*/
adapterFactoryRegistryMap.put(UMLPackage.Literals.ABSTRACTION, new ArrayList<AdapterFactory>(Collections.singletonList(requirementsAdapterFactoryItemProvider)));
adapterFactoryRegistryMap.get(UMLPackage.Literals.ABSTRACTION).add(allocationsAdapterFactoryItemProvider);
/**
* AdapterFactories for the ACTIVITY_EDGE elements
*/
adapterFactoryRegistryMap.put(UMLPackage.Literals.ACTIVITY_EDGE, new ArrayList<AdapterFactory>(Collections.singletonList(activitiesAdapterFactoryItemProvider)));
/**
* AdapterFactories for the ACTIVITY_PARTITION elements
*/
adapterFactoryRegistryMap.put(UMLPackage.Literals.ACTIVITY_PARTITION, new ArrayList<AdapterFactory>(Collections.singletonList(allocationsAdapterFactoryItemProvider)));
/**
* AdapterFactories for the BEHAVIOR elements
*/
adapterFactoryRegistryMap.put(UMLPackage.Literals.BEHAVIOR, new ArrayList<AdapterFactory>(Collections.singletonList(requirementsAdapterFactoryItemProvider)));
adapterFactoryRegistryMap.get(UMLPackage.Literals.BEHAVIOR).add(activitiesAdapterFactoryItemProvider);
/**
* AdapterFactories for the CLASS elements
*/
adapterFactoryRegistryMap.put(UMLPackage.Literals.CLASS, new ArrayList<AdapterFactory>(Collections.singletonList(requirementsAdapterFactoryItemProvider)));
adapterFactoryRegistryMap.get(UMLPackage.Literals.CLASS).add(modelelementsAdapterFactoryItemProvider);
adapterFactoryRegistryMap.get(UMLPackage.Literals.CLASS).add(constraintsAdapterFactoryItemProvider);
adapterFactoryRegistryMap.get(UMLPackage.Literals.CLASS).add(blocksAdapterFactoryItemProvider);
/**
* AdapterFactories for the CLASSIFIER elements
*/
adapterFactoryRegistryMap.put(UMLPackage.Literals.CLASSIFIER, new ArrayList<AdapterFactory>(Collections.singletonList(blocksAdapterFactoryItemProvider)));
/**
* AdapterFactories for the COMMENT elements
*/
adapterFactoryRegistryMap.put(UMLPackage.Literals.COMMENT, new ArrayList<AdapterFactory>(Collections.singletonList(modelelementsAdapterFactoryItemProvider)));
/**
* AdapterFactories for the CONNECTOR elements
*/
adapterFactoryRegistryMap.put(UMLPackage.Literals.CONNECTOR, new ArrayList<AdapterFactory>(Collections.singletonList(blocksAdapterFactoryItemProvider)));
/**
* AdapterFactories for the CONNECTOR_END elements
*/
adapterFactoryRegistryMap.put(UMLPackage.Literals.CONNECTOR_END, new ArrayList<AdapterFactory>(Collections.singletonList(blocksAdapterFactoryItemProvider)));
/**
* AdapterFactories for the DATA_TYPE elements
*/
adapterFactoryRegistryMap.put(UMLPackage.Literals.DATA_TYPE, new ArrayList<AdapterFactory>(Collections.singletonList(blocksAdapterFactoryItemProvider)));
/**
* AdapterFactories for the DEPENDENCY elements
*/
adapterFactoryRegistryMap.put(UMLPackage.Literals.DEPENDENCY, new ArrayList<AdapterFactory>(Collections.singletonList(modelelementsAdapterFactoryItemProvider)));
/**
* AdapterFactories for the INFORMATION_FLOW elements
*/
adapterFactoryRegistryMap.put(UMLPackage.Literals.INFORMATION_FLOW, new ArrayList<AdapterFactory>(Collections.singletonList(portandflowsAdapterFactoryItemProvider)));
/**
* AdapterFactories for the INSTANCE_SPECIFICATION elements
*/
adapterFactoryRegistryMap.put(UMLPackage.Literals.INSTANCE_SPECIFICATION, new ArrayList<AdapterFactory>(Collections.singletonList(blocksAdapterFactoryItemProvider)));
/**
* AdapterFactories for the INTERFACE elements
*/
adapterFactoryRegistryMap.put(UMLPackage.Literals.INTERFACE, new ArrayList<AdapterFactory>(Collections.singletonList(portandflowsAdapterFactoryItemProvider)));
/**
* AdapterFactories for the NAMED_ELEMENT elements
*/
adapterFactoryRegistryMap.put(UMLPackage.Literals.NAMED_ELEMENT, new ArrayList<AdapterFactory>(Collections.singletonList(requirementsAdapterFactoryItemProvider)));
adapterFactoryRegistryMap.get(UMLPackage.Literals.NAMED_ELEMENT).add(allocationsAdapterFactoryItemProvider);
/**
* AdapterFactories for the OBJECT_NODE elements
*/
adapterFactoryRegistryMap.put(UMLPackage.Literals.OBJECT_NODE, new ArrayList<AdapterFactory>(Collections.singletonList(activitiesAdapterFactoryItemProvider)));
/**
* AdapterFactories for the OPERATION elements
*/
adapterFactoryRegistryMap.put(UMLPackage.Literals.OPERATION, new ArrayList<AdapterFactory>(Collections.singletonList(requirementsAdapterFactoryItemProvider)));
adapterFactoryRegistryMap.get(UMLPackage.Literals.OPERATION).add(activitiesAdapterFactoryItemProvider);
/**
* AdapterFactories for the PACKAGE elements
*/
adapterFactoryRegistryMap.put(UMLPackage.Literals.PACKAGE, new ArrayList<AdapterFactory>(Collections.singletonList(modelelementsAdapterFactoryItemProvider)));
/**
* AdapterFactories for the PARAMETER elements
*/
adapterFactoryRegistryMap.put(UMLPackage.Literals.PARAMETER, new ArrayList<AdapterFactory>(Collections.singletonList(activitiesAdapterFactoryItemProvider)));
/**
* AdapterFactories for the PARAMETER_SET elements
*/
adapterFactoryRegistryMap.put(UMLPackage.Literals.PARAMETER_SET, new ArrayList<AdapterFactory>(Collections.singletonList(activitiesAdapterFactoryItemProvider)));
/**
* AdapterFactories for the PORT elements
*/
adapterFactoryRegistryMap.put(UMLPackage.Literals.PORT, new ArrayList<AdapterFactory>(Collections.singletonList(portandflowsAdapterFactoryItemProvider)));
/**
* AdapterFactories for the PROPERTY elements
*/
adapterFactoryRegistryMap.put(UMLPackage.Literals.PROPERTY, new ArrayList<AdapterFactory>(Collections.singletonList(portandflowsAdapterFactoryItemProvider)));
adapterFactoryRegistryMap.get(UMLPackage.Literals.PROPERTY).add(constraintsAdapterFactoryItemProvider);
adapterFactoryRegistryMap.get(UMLPackage.Literals.PROPERTY).add(blocksAdapterFactoryItemProvider);
}
/**
* Singleton holder
*
* @generated
*/
private static class SingletonHolder {
protected static SysmlRegistryAdapterFactoryRegistry instance = null;
static {
instance = new SysmlRegistryAdapterFactoryRegistry();
}
}
/**
* @generated
*/
public static SysmlRegistryAdapterFactoryRegistry getSingleton() {
return SingletonHolder.instance;
}
/**
* Get the default AdapterFactory
*
* @return List<AdapterFactory> return the default adapter factory (UML)
* @generated
*/
public AdapterFactory getDefaultAdapterFactory() {
return defaultAdapterFactory;
}
/**
* Get the list of all AdapterFactory for this type
*
* @param Object
* element
* @return List<AdapterFactory> List of all the adapter factories which can handle the object element
* @generated
*/
public List<AdapterFactory> getAdapterFactoriesForType(Object element) {
if (element instanceof EObject) {
EObject eObject = (EObject) element;
ArrayList<AdapterFactory> result = adapterFactoryRegistryMap.get(eObject.eClass());
if (result != null) {
return result;
} else {
return Collections.singletonList(getDefaultAdapterFactory());
}
} else {
throw new RuntimeException("org.eclipse.papyrus.sysml.edit.utils.SysmlRegistryAdapterFactoryRegistery : This factory only works with EOBjects");
}
}
/**
* Set the the root AdapterFactory for all registered adapter factory
*
* @param AdapterFactory
* The adapter factory which will be the root
* @generated
*/
public void setRootAdapterFactory(IRootAdapterFactory adapter) {
for (AdapterFactory adap : adapterFactoryRegistry) {
if (adap instanceof IComposableAdapterFactory) {
((IComposableAdapterFactory) adap).setRootAdapterFactory(adapter);
}
}
}
/**
* Get a map of all UML ItemProvider needed
*
* @generated
*/
public HashMap<EClass, ItemProviderAdapter> getUMLItemProviderClassifedByUMLElement(AdapterFactory rootAdapterFactory) {
HashMap<EClass, ItemProviderAdapter> result = new HashMap<EClass, ItemProviderAdapter>();
result.put(UMLPackage.Literals.INSTANCE_SPECIFICATION, new InstanceSpecificationItemProvider(rootAdapterFactory));
result.put(UMLPackage.Literals.CONNECTOR_END, new ConnectorEndItemProvider(rootAdapterFactory));
result.put(UMLPackage.Literals.OPERATION, new OperationItemProvider(rootAdapterFactory));
result.put(UMLPackage.Literals.DEPENDENCY, new DependencyItemProvider(rootAdapterFactory));
result.put(UMLPackage.Literals.OBJECT_NODE, new ObjectNodeItemProvider(rootAdapterFactory));
result.put(UMLPackage.Literals.DATA_TYPE, new DataTypeItemProvider(rootAdapterFactory));
result.put(UMLPackage.Literals.PROPERTY, new PropertyItemProvider(rootAdapterFactory));
result.put(UMLPackage.Literals.BEHAVIOR, new BehaviorItemProvider(rootAdapterFactory));
result.put(UMLPackage.Literals.COMMENT, new CommentItemProvider(rootAdapterFactory));
result.put(UMLPackage.Literals.INTERFACE, new InterfaceItemProvider(rootAdapterFactory));
result.put(UMLPackage.Literals.ABSTRACTION, new AbstractionItemProvider(rootAdapterFactory));
result.put(UMLPackage.Literals.ACTIVITY_PARTITION, new ActivityPartitionItemProvider(rootAdapterFactory));
result.put(UMLPackage.Literals.CONNECTOR, new ConnectorItemProvider(rootAdapterFactory));
result.put(UMLPackage.Literals.PARAMETER_SET, new ParameterSetItemProvider(rootAdapterFactory));
result.put(UMLPackage.Literals.ACTIVITY_EDGE, new ActivityEdgeItemProvider(rootAdapterFactory));
result.put(UMLPackage.Literals.CLASSIFIER, new ClassifierItemProvider(rootAdapterFactory));
result.put(UMLPackage.Literals.NAMED_ELEMENT, new NamedElementItemProvider(rootAdapterFactory));
result.put(UMLPackage.Literals.PARAMETER, new ParameterItemProvider(rootAdapterFactory));
result.put(UMLPackage.Literals.PORT, new PortItemProvider(rootAdapterFactory));
result.put(UMLPackage.Literals.INFORMATION_FLOW, new InformationFlowItemProvider(rootAdapterFactory));
result.put(UMLPackage.Literals.CLASS, new ClassItemProvider(rootAdapterFactory));
result.put(UMLPackage.Literals.PACKAGE, new PackageItemProvider(rootAdapterFactory));
return result;
}
} // org.eclipse.papyrus.sysml.registry;