package org.js.model.workflow.util; import java.util.List; import org.eclipse.emf.ecore.EObject; import org.eclipse.jwt.meta.model.core.Model; import org.eclipse.jwt.we.conf.model.Aspect; import org.eclipse.jwt.we.conf.model.AspectInstance; import org.eclipse.jwt.we.conf.model.ConfFactory; import org.eclipse.jwt.we.conf.model.Profile; import org.eclipse.jwt.we.conf.model.aspects.AspectManager; import org.js.graph.transform.stagemodel.StageModel; import org.js.graph.transformation.GraphTransformation; import org.js.model.feature.FeatureModel; import org.js.model.rbac.AccessControlModel; import org.js.model.rbac.ConfigurationOperation; import org.js.model.rbac.Role; import org.js.model.workflow.ACMConnector; import org.js.model.workflow.EFMContainer; import org.js.model.workflow.GraphTransConnector; import org.js.model.workflow.Log; import org.js.model.workflow.RoleConnector; import org.js.model.workflow.StagingConnector; import org.js.model.workflow.State; import org.js.model.workflow.StateEnum; import org.js.model.workflow.WorkflowFactory; /** * This class provides methods relating to configuration model. * * @author Xi * */ public class WorkflowConfUtil { public static WorkflowFactory workflowFactory = WorkflowFactory.eINSTANCE; public static ConfFactory confFactory = ConfFactory.eINSTANCE; public static final String ACM_FILE_EXTENSION_1 = "rbac"; public static final String ACM_FILE_EXTENSION_2 = "rbactext"; public static final String GT_FILE_EXTENSION_1 = "transformation"; public static final String STAGEMODEL_FILE_EXTENSION = "stagemodel"; public static final String WORKFLOW_PROFILE_NAME = "org.js.model.workflow.profile"; public static final String ACM_ASPECT = "org.js.model.workflow.acmaspect"; public static final String GT_ASPECT = "org.js.model.workflow.transaspect"; public static final String STAKHOLDERTYPES_ASPECT = "org.js.model.workflow.stakeholdertypesaspect"; public static final String ROLE_ASPECT = "org.js.model.workflow.roleaspect"; public static final String LOG_ASPECT = "org.js.model.workflow.logaspect"; public static final String STATE_ASPECT = "org.js.model.workflow.stateaspect"; public static final String EFM_ASPECT = "org.js.model.workflow.efmaspect"; public static final String STAGEMODEL_ASPECT = "org.js.model.workflow.stagingaspect"; /** * add the aspect instance for the given model element. * * @param modelElement * @param aspectName * @return */ public static AspectInstance addAspectInstance(EObject modelElement, String aspectName) { Aspect aspect = AspectManager.INSTANCE.getAspect(modelElement, aspectName); return AspectManager.INSTANCE.createAndAddAspectInstance(aspect, modelElement); } public static boolean hasAspectInstance(EObject modelElement, String aspectName) { Aspect aspect = AspectManager.INSTANCE.getAspect(modelElement, aspectName); return AspectManager.INSTANCE.getAspectInstance(modelElement, aspect) != null; } public static AspectInstance getAspectInstance(EObject modelElement, String aspectName) { Aspect aspect = AspectManager.INSTANCE.getAspect(modelElement, aspectName); return AspectManager.INSTANCE.getAspectInstance(modelElement, aspect); } public static AspectInstance removeAspectInstance(EObject modelElement, String aspectName) { AspectInstance aspectInstance = getAspectInstance(modelElement, aspectName); aspectInstance.setTargetModelElement(null); AspectManager.INSTANCE.getConfModel(modelElement).getAspectInstances().remove(aspectInstance); return aspectInstance; } public static void removeAspectInstances(EObject modelElement) { AspectManager.INSTANCE.getConfModel(modelElement).getAspectInstances().clear(); } public static void setACMRef(ACMConnector acmconnector, AccessControlModel acm) { acmconnector.setAcmref(acm); } public static void setStageModelRef(StagingConnector smconnector, StageModel sm) { smconnector.setStageModel(sm); } public static void setRoleRef(RoleConnector roleconnector, Role role) { roleconnector.setRoleref(role); } public static void addConfigDecisions(Log log, List<ConfigurationOperation> decisionList) { log.getConfigurationOperations().addAll(decisionList); } public static void addConfigPermission(Log log, ConfigurationOperation decisionList) { log.getConfigurationOperations().add(decisionList); } public static void removeConfigPermission(Log log, ConfigurationOperation decisionList) { log.getConfigurationOperations().remove(decisionList); } public static void removeConfigPermissions(Log log, List<ConfigurationOperation> decisionList) { log.getConfigurationOperations().removeAll(decisionList); } public static void setState(State state, StateEnum stateEnum) { state.setState(stateEnum); } public static boolean containsProfile(Model workflowModel, String profileName) { List<Profile> activeProfiles = AspectManager.INSTANCE.getActivatedProfiles(workflowModel); for (Profile profile : activeProfiles) { if (profile.getName().equals(profileName)) { return true; } } return false; } public static void setGraphTrans(GraphTransConnector gtConnector, GraphTransformation graphTransformation) { gtConnector.setGraphTransref(graphTransformation); } public static void setEFM(EFMContainer efmContainer, FeatureModel fm) { efmContainer.setEfmref(fm); } }