From 2878efc1b9cff9d0cf94962d56a3d9ea3585a885 Mon Sep 17 00:00:00 2001
From: nullsub <chrisudeussen@gmail.com>
Date: Thu, 3 May 2018 08:25:58 +0200
Subject: [PATCH] refresh policies on config change

---
 .../core/standardPolicies.editpolicy          | 20 +++++++++++++------
 .../ChangeConfigurationCommand.java           |  3 +++
 .../iorm/ui/editPolicy/EditPolicyService.java |  7 +++++--
 3 files changed, 22 insertions(+), 8 deletions(-)

diff --git a/org.framed.iorm.ui/core/standardPolicies.editpolicy b/org.framed.iorm.ui/core/standardPolicies.editpolicy
index ba74529b..4d678847 100644
--- a/org.framed.iorm.ui/core/standardPolicies.editpolicy
+++ b/org.framed.iorm.ui/core/standardPolicies.editpolicy
@@ -115,6 +115,10 @@
     <featureRule xsi:type="Editpolicymodel:IsFeature" featureName="Inter_Relationship_Constraints"/>
     <constraintRule xsi:type="Editpolicymodel:TrueConstraintRule"/>
   </policies>
+  <policies action="Start" actionType="RelationshipExclusion">
+    <featureRule xsi:type="Editpolicymodel:IsFeature" featureName="Inter_Relationship_Constraints"/>
+    <constraintRule xsi:type="Editpolicymodel:TrueConstraintRule"/>
+  </policies>
   <policies actionType="RelationshipExclusion">
     <featureRule xsi:type="Editpolicymodel:IsFeature" featureName="Inter_Relationship_Constraints"/>
     <constraintRule xsi:type="Editpolicymodel:TrueConstraintRule"/>
@@ -123,10 +127,18 @@
     <featureRule xsi:type="Editpolicymodel:IsFeature" featureName="Inter_Relationship_Constraints"/>
     <constraintRule xsi:type="Editpolicymodel:TrueConstraintRule"/>
   </policies>
+  <policies action="Start" actionType="RelationshipImplication">
+    <featureRule xsi:type="Editpolicymodel:IsFeature" featureName="Inter_Relationship_Constraints"/>
+    <constraintRule xsi:type="Editpolicymodel:TrueConstraintRule"/>
+  </policies>
   <policies actionType="RelationshipImplication">
     <featureRule xsi:type="Editpolicymodel:IsFeature" featureName="Inter_Relationship_Constraints"/>
     <constraintRule xsi:type="Editpolicymodel:TrueConstraintRule"/>
   </policies>
+  <policies action="Start" actionType="Inheritance">
+    <featureRule xsi:type="Editpolicymodel:IsFeature" featureName="Role_Inheritance"/>
+    <constraintRule xsi:type="Editpolicymodel:IsSourceType" type="RoleType"/>
+  </policies>
   <policies action="Add" actionType="Inheritance">
     <featureRule xsi:type="Editpolicymodel:IsFeature" featureName="Role_Inheritance"/>
     <constraintRule xsi:type="Editpolicymodel:AndConstraintRule">
@@ -233,10 +245,6 @@
     <featureRule xsi:type="Editpolicymodel:TrueFeatureRule"/>
     <constraintRule xsi:type="Editpolicymodel:TrueConstraintRule"/>
   </policies>
-  <policies actionType="Inheritance">
-    <featureRule xsi:type="Editpolicymodel:TrueFeatureRule"/>
-    <constraintRule xsi:type="Editpolicymodel:TrueConstraintRule"/>
-  </policies>
   <policies actionType="NaturalType">
     <featureRule xsi:type="Editpolicymodel:TrueFeatureRule"/>
     <constraintRule xsi:type="Editpolicymodel:TrueConstraintRule"/>
@@ -245,11 +253,11 @@
     <featureRule xsi:type="Editpolicymodel:TrueFeatureRule"/>
     <constraintRule xsi:type="Editpolicymodel:TrueConstraintRule"/>
   </policies>
-  <policies actionType="RoleGroup">
+  <policies actionType="Inheritance">
     <featureRule xsi:type="Editpolicymodel:TrueFeatureRule"/>
     <constraintRule xsi:type="Editpolicymodel:TrueConstraintRule"/>
   </policies>
-  <policies action="Start" actionType="Inheritance">
+  <policies actionType="RoleGroup">
     <featureRule xsi:type="Editpolicymodel:TrueFeatureRule"/>
     <constraintRule xsi:type="Editpolicymodel:TrueConstraintRule"/>
   </policies>
diff --git a/org.framed.iorm.ui/src/org/framed/iorm/ui/configuration/ChangeConfigurationCommand.java b/org.framed.iorm.ui/src/org/framed/iorm/ui/configuration/ChangeConfigurationCommand.java
index 503a5001..c2540474 100644
--- a/org.framed.iorm.ui/src/org/framed/iorm/ui/configuration/ChangeConfigurationCommand.java
+++ b/org.framed.iorm.ui/src/org/framed/iorm/ui/configuration/ChangeConfigurationCommand.java
@@ -4,6 +4,7 @@ import org.eclipse.gef.commands.Command;
 import org.eclipse.graphiti.features.custom.ICustomFeature;
 import org.eclipse.swt.widgets.TreeItem;
 import org.framed.iorm.ui.UILiterals;
+import org.framed.iorm.ui.editPolicy.EditPolicyService;
 import org.framed.iorm.ui.subeditors.FRaMEDDiagramEditor;
 import org.framed.iorm.ui.subeditors.FRaMEDFeatureEditor;
 
@@ -74,6 +75,8 @@ public class ChangeConfigurationCommand extends Command {
 			ChangeConfigurationContext changeConfigurationContext = new ChangeConfigurationContext();
 			changeConfigurationContext.setBehaviorEditor(behaviorDiagramEditor);
 			changeConfigurationContext.setConfiguration(featureEditor.getConfiguration());
+			EditPolicyService.setDirty();
+
 			if(changeConfigurationFeature.canExecute(changeConfigurationContext)) {
 				//Step 4
 				changeConfigurationFeature.execute(changeConfigurationContext);
diff --git a/org.framed.iorm.ui/src/org/framed/iorm/ui/editPolicy/EditPolicyService.java b/org.framed.iorm.ui/src/org/framed/iorm/ui/editPolicy/EditPolicyService.java
index 8c8053e5..0aba7f8e 100644
--- a/org.framed.iorm.ui/src/org/framed/iorm/ui/editPolicy/EditPolicyService.java
+++ b/org.framed.iorm.ui/src/org/framed/iorm/ui/editPolicy/EditPolicyService.java
@@ -28,7 +28,6 @@ import org.framed.iorm.ui.UIUtil;
  */
 public class EditPolicyService {
 
-
 	private static List<Editpolicymodel.Model> editpolicymodels;
 
 	/**
@@ -47,7 +46,6 @@ public class EditPolicyService {
 	
 	public static EditPolicyHandler getHandler(Diagram diagram0) 
 	{
-		
 		if(diagram0 == null) {
 			System.out.println("diagram in getHandler is null!");
 			return null;
@@ -136,6 +134,11 @@ public class EditPolicyService {
 		}
 	}
 
+	public static void setDirty() {
+		//empty handlers to reload config
+		EditPolicyService.editPolicyHandlers = new HashMap<>();
+	}
+	
 	/**
 	 * do SAT checking whether policies can be used together
 	 */
-- 
GitLab