From b476da7a73b79404a3d3c94b79e67a06f7435a93 Mon Sep 17 00:00:00 2001
From: nullsub <chrisudeussen@gmail.com>
Date: Thu, 3 May 2018 08:45:35 +0200
Subject: [PATCH] cleanup editpolicyhandler

---
 .../core/standardPolicies.editpolicy          | 60 +++++++--------
 .../ui/editPolicy/ConstraintRuleVisitor.java  | 73 +++++++++----------
 .../iorm/ui/editPolicy/EditPolicyHandler.java |  4 -
 .../iorm/ui/editPolicy/EditPolicyService.java |  2 -
 .../ui/editPolicy/FeatureRuleVisitor.java     |  5 +-
 5 files changed, 63 insertions(+), 81 deletions(-)

diff --git a/org.framed.iorm.ui/core/standardPolicies.editpolicy b/org.framed.iorm.ui/core/standardPolicies.editpolicy
index 4d678847..198b5487 100644
--- a/org.framed.iorm.ui/core/standardPolicies.editpolicy
+++ b/org.framed.iorm.ui/core/standardPolicies.editpolicy
@@ -47,6 +47,10 @@
     <featureRule xsi:type="Editpolicymodel:TrueFeatureRule"/>
     <constraintRule xsi:type="Editpolicymodel:TrueConstraintRule"/>
   </policies>
+  <policies action="Start" actionType="Relationship">
+    <featureRule xsi:type="Editpolicymodel:IsFeature" featureName="Relationships"/>
+    <constraintRule xsi:type="Editpolicymodel:TrueConstraintRule"/>
+  </policies>
   <policies action="Add" actionType="Relationship">
     <featureRule xsi:type="Editpolicymodel:IsFeature" featureName="Relationships"/>
     <constraintRule xsi:type="Editpolicymodel:TrueConstraintRule"/>
@@ -58,12 +62,9 @@
       <rules xsi:type="Editpolicymodel:IsTargetType" type="CompartmentType"/>
     </constraintRule>
   </policies>
-  <policies actionType="Fulfillment">
+  <policies action="Start" actionType="Fulfillment">
     <featureRule xsi:type="Editpolicymodel:IsFeature" featureName="Naturals"/>
-    <constraintRule xsi:type="Editpolicymodel:AndConstraintRule">
-      <rules xsi:type="Editpolicymodel:IsSourceType" type="NaturalType"/>
-      <rules xsi:type="Editpolicymodel:IsTargetType" type="CompartmentType"/>
-    </constraintRule>
+    <constraintRule xsi:type="Editpolicymodel:IsSourceType" type="NaturalType"/>
   </policies>
   <policies action="Add" actionType="Fulfillment">
     <featureRule xsi:type="Editpolicymodel:IsFeature"/>
@@ -72,12 +73,9 @@
       <rules xsi:type="Editpolicymodel:IsTargetType" type="CompartmentType"/>
     </constraintRule>
   </policies>
-  <policies actionType="Fulfillment">
+  <policies action="Start" actionType="Fulfillment">
     <featureRule xsi:type="Editpolicymodel:IsFeature"/>
-    <constraintRule xsi:type="Editpolicymodel:AndConstraintRule">
-      <rules xsi:type="Editpolicymodel:IsSourceType" type="RoleType"/>
-      <rules xsi:type="Editpolicymodel:IsTargetType" type="CompartmentType"/>
-    </constraintRule>
+    <constraintRule xsi:type="Editpolicymodel:IsSourceType" type="RoleType"/>
   </policies>
   <policies action="Add" actionType="Fulfillment">
     <featureRule xsi:type="Editpolicymodel:IsFeature" featureName="Compartments"/>
@@ -91,23 +89,15 @@
       </rules>
     </constraintRule>
   </policies>
-  <policies actionType="Fulfillment">
+  <policies action="Start" actionType="Fulfillment">
     <featureRule xsi:type="Editpolicymodel:IsFeature" featureName="Compartments"/>
-    <constraintRule xsi:type="Editpolicymodel:AndConstraintRule">
-      <rules xsi:type="Editpolicymodel:AndConstraintRule">
-        <rules xsi:type="Editpolicymodel:IsSourceType" type="CompartmentType"/>
-        <rules xsi:type="Editpolicymodel:IsTargetType" type="CompartmentType"/>
-      </rules>
-      <rules xsi:type="Editpolicymodel:NotConstraintRule">
-        <rule xsi:type="Editpolicymodel:SourceEqualsTarget"/>
-      </rules>
-    </constraintRule>
+    <constraintRule xsi:type="Editpolicymodel:IsSourceType" type="CompartmentType"/>
   </policies>
   <policies action="Add" actionType="Fulfillment">
     <featureRule xsi:type="Editpolicymodel:IsFeature" featureName="Dates"/>
     <constraintRule xsi:type="Editpolicymodel:IsSourceType" type="DataType"/>
   </policies>
-  <policies actionType="Fulfillment">
+  <policies action="Start" actionType="Fulfillment">
     <featureRule xsi:type="Editpolicymodel:IsFeature" featureName="Dates"/>
     <constraintRule xsi:type="Editpolicymodel:IsSourceType" type="DataType"/>
   </policies>
@@ -119,10 +109,6 @@
     <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"/>
-  </policies>
   <policies action="Add" actionType="RelationshipImplication">
     <featureRule xsi:type="Editpolicymodel:IsFeature" featureName="Inter_Relationship_Constraints"/>
     <constraintRule xsi:type="Editpolicymodel:TrueConstraintRule"/>
@@ -131,10 +117,6 @@
     <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"/>
@@ -151,6 +133,10 @@
       <rules xsi:type="Editpolicymodel:SourceEqualsTargetType"/>
     </constraintRule>
   </policies>
+  <policies action="Start" actionType="Inheritance">
+    <featureRule xsi:type="Editpolicymodel:IsFeature" featureName="Data_Type_Inheritance"/>
+    <constraintRule xsi:type="Editpolicymodel:IsSourceType" type="DataType"/>
+  </policies>
   <policies action="Add" actionType="Inheritance">
     <featureRule xsi:type="Editpolicymodel:IsFeature" featureName="Data_Type_Inheritance"/>
     <constraintRule xsi:type="Editpolicymodel:AndConstraintRule">
@@ -163,6 +149,10 @@
       <rules xsi:type="Editpolicymodel:SourceEqualsTargetType"/>
     </constraintRule>
   </policies>
+  <policies action="Start" actionType="Inheritance">
+    <featureRule xsi:type="Editpolicymodel:IsFeature" featureName="Compartment_Inheritance"/>
+    <constraintRule xsi:type="Editpolicymodel:IsSourceType" type="CompartmentType"/>
+  </policies>
   <policies action="Add" actionType="Inheritance">
     <featureRule xsi:type="Editpolicymodel:IsFeature" featureName="Compartment_Inheritance"/>
     <constraintRule xsi:type="Editpolicymodel:AndConstraintRule">
@@ -202,6 +192,10 @@
       <rule xsi:type="Editpolicymodel:InCompartment"/>
     </constraintRule>
   </policies>
+  <policies action="Start" actionType="Relationship">
+    <featureRule xsi:type="Editpolicymodel:TrueFeatureRule"/>
+    <constraintRule xsi:type="Editpolicymodel:IsSourceType" type="RoleType"/>
+  </policies>
   <policies action="Add" actionType="Relationship">
     <featureRule xsi:type="Editpolicymodel:TrueFeatureRule"/>
     <constraintRule xsi:type="Editpolicymodel:AndConstraintRule">
@@ -261,6 +255,10 @@
     <featureRule xsi:type="Editpolicymodel:TrueFeatureRule"/>
     <constraintRule xsi:type="Editpolicymodel:TrueConstraintRule"/>
   </policies>
+  <policies actionType="Fulfillment">
+    <featureRule xsi:type="Editpolicymodel:TrueFeatureRule"/>
+    <constraintRule xsi:type="Editpolicymodel:TrueConstraintRule"/>
+  </policies>
   <policies action="Start" actionType="Fulfillment">
     <featureRule xsi:type="Editpolicymodel:IsFeature" featureName="Compartments"/>
     <constraintRule xsi:type="Editpolicymodel:IsSourceType" type="CompartmentType"/>
@@ -277,8 +275,4 @@
     <featureRule xsi:type="Editpolicymodel:IsFeature" featureName="Dates"/>
     <constraintRule xsi:type="Editpolicymodel:IsSourceType" type="DataType"/>
   </policies>
-  <policies action="Start" actionType="Relationship">
-    <featureRule xsi:type="Editpolicymodel:TrueFeatureRule"/>
-    <constraintRule xsi:type="Editpolicymodel:TrueConstraintRule"/>
-  </policies>
 </Editpolicymodel:Model>
diff --git a/org.framed.iorm.ui/src/org/framed/iorm/ui/editPolicy/ConstraintRuleVisitor.java b/org.framed.iorm.ui/src/org/framed/iorm/ui/editPolicy/ConstraintRuleVisitor.java
index 7d02d59d..061fab0d 100644
--- a/org.framed.iorm.ui/src/org/framed/iorm/ui/editPolicy/ConstraintRuleVisitor.java
+++ b/org.framed.iorm.ui/src/org/framed/iorm/ui/editPolicy/ConstraintRuleVisitor.java
@@ -73,42 +73,7 @@ public class ConstraintRuleVisitor {
 	public boolean checkRule(ConstraintRule rule) 
 	{
 		if(rule instanceof InCompartment) {
-			org.framed.iorm.model.Shape parent = null;
-			if(this.context instanceof AddCompartmentTypeContext) {
-				AddCompartmentTypeContext  ctx = (AddCompartmentTypeContext) context;
-				parent = ctx.getModelToLink().getParent();
-			} else if(this.context instanceof AddContext) {
-				AddContext  ctx = (AddContext) context;
-				Diagram contextDiagram = (Diagram)ctx.getTargetContainer();
-				if(contextDiagram.getName().startsWith("compartmentType"))
-					return true;
-				System.out.println("wrong diagram InCompartment(): " + contextDiagram.getName());
-				return false;
-			} else if(this.context instanceof CreateContext) {
-				CreateContext  ctx = (CreateContext) context;
-				Diagram contextDiagram = (Diagram)ctx.getTargetContainer();
-				if(contextDiagram.getName().startsWith("compartmentType"))
-					return true;
-				System.out.println("wrong diagram InCompartment(): " + contextDiagram.getName());
-				return false;
-			} else {
-				System.out.println("wrong context InCompartment(): " + this.context.getClass());
-				return false;
-			}
-
-			String parentDiagramName = null;
-			try {
-				parentDiagramName = parent.getContainer().getParent().getName();
-			} catch (Exception e) {}
-			Diagram myDiagram = this.getDiagramWithName(parentDiagramName, this.diagram);
-			if(myDiagram == null)
-				return false;
-			//System.out.println("MYDIAGRAM: " + myDiagram.getName() + ", " + parent.getName() +", " + parent.getName());
-
-			if(myDiagram.getName().startsWith("compartmentType"))
-				return true;
-
-			return false;
+			return isInCompartmentRuleVisitor((InCompartment)rule);
 		}
 		
 		if (rule instanceof AndConstraintRule)
@@ -152,6 +117,40 @@ public class ConstraintRuleVisitor {
 		return true;
 	}
 		
+	private boolean isInCompartmentRuleVisitor(InCompartment rule) {
+		org.framed.iorm.model.Shape parent = null;
+		if(this.context instanceof AddCompartmentTypeContext) {
+			AddCompartmentTypeContext  ctx = (AddCompartmentTypeContext) context;
+			parent = ctx.getModelToLink().getParent();
+		} else if(this.context instanceof AddContext) {
+			AddContext  ctx = (AddContext) context;
+			Diagram contextDiagram = (Diagram)ctx.getTargetContainer();
+			if(contextDiagram.getName().startsWith("compartmentType"))
+				return true;
+		} else if(this.context instanceof CreateContext) {
+			CreateContext  ctx = (CreateContext) context;
+			Diagram contextDiagram = (Diagram)ctx.getTargetContainer();
+			if(contextDiagram.getName().startsWith("compartmentType"))
+				return true;
+		}
+		if(parent == null) {
+			System.out.println("Parent null. Wrong context InCompartment(): " + this.context.getClass());
+			return false;
+		}
+
+		String parentDiagramName = null;
+		try {
+			parentDiagramName = parent.getContainer().getParent().getName();
+		} catch (Exception e) {}
+		Diagram myDiagram = this.getDiagramWithName(parentDiagramName, this.diagram);
+		if(myDiagram == null)
+			return false;
+		if(myDiagram.getName().startsWith("compartmentType"))
+			return true;
+
+		return false;
+	}
+	
 	private boolean andRuleVisitor(AndConstraintRule rule) {
 		for(ConstraintRule abstractRule : rule.getRules()) {
 			if(!checkRule(abstractRule))
@@ -196,8 +195,6 @@ public class ConstraintRuleVisitor {
 		if(targetAnchor == null || sourceAnchor == null)
 			return false;
 
-		System.out.println("sourceEqualsTargetVisitor comparison: " + source.hashCode()  + " == " + target.hashCode());
-
 		return source.hashCode() == target.hashCode();		
 	}
 
diff --git a/org.framed.iorm.ui/src/org/framed/iorm/ui/editPolicy/EditPolicyHandler.java b/org.framed.iorm.ui/src/org/framed/iorm/ui/editPolicy/EditPolicyHandler.java
index fc572fdc..5c8fa5bd 100644
--- a/org.framed.iorm.ui/src/org/framed/iorm/ui/editPolicy/EditPolicyHandler.java
+++ b/org.framed.iorm.ui/src/org/framed/iorm/ui/editPolicy/EditPolicyHandler.java
@@ -39,7 +39,6 @@ public class EditPolicyHandler {
 	}
 	
 	public void updateConfig(List<Editpolicymodel.Model> models, FRaMEDConfiguration config) {
-		System.out.println("updating Config: ");
 		//parse all editpolicies to create list with activated policies
 		//load all constraints which are activated by current configuration
 		activatedPolicies = new LinkedList<>();
@@ -49,12 +48,9 @@ public class EditPolicyHandler {
 			for(Editpolicymodel.Policy policy : model.getPolicies()) {
 				if(featureRuleVisitor.checkRule(policy.getFeatureRule())) {
 					activatedPolicies.add(policy); 
-					System.out.println("policyAdded: " + policy.getFeatureRule().toString());
-
 				}
 			}
 		}
-		
 	}
 	
 	/**
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 0aba7f8e..579cb638 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
@@ -51,7 +51,6 @@ public class EditPolicyService {
 			return null;
 		}
 		Diagram diagram = UIUtil.getMainDiagramForAnyDiagram(diagram0);
-		//System.out.println("Diagrams: " + diagram.getName() + ", " + diagram0.getName());
 
 		if(!EditPolicyService.editPolicyHandlers.containsKey(diagram.getName())) { 
 			EditPolicyHandler handler = new EditPolicyHandler(diagram);
@@ -65,7 +64,6 @@ public class EditPolicyService {
 
 	public static void setConfiguration(Diagram diagram, FRaMEDConfiguration config) 
 	{ 
-		//System.out.println("updating config for " + diagram.getName());
 		diagram = UIUtil.getMainDiagramForAnyDiagram(diagram);
 		EditPolicyService.getHandler(diagram).updateConfig(editpolicymodels, config);
 	}
diff --git a/org.framed.iorm.ui/src/org/framed/iorm/ui/editPolicy/FeatureRuleVisitor.java b/org.framed.iorm.ui/src/org/framed/iorm/ui/editPolicy/FeatureRuleVisitor.java
index 84113431..5939c912 100644
--- a/org.framed.iorm.ui/src/org/framed/iorm/ui/editPolicy/FeatureRuleVisitor.java
+++ b/org.framed.iorm.ui/src/org/framed/iorm/ui/editPolicy/FeatureRuleVisitor.java
@@ -33,9 +33,7 @@ public class FeatureRuleVisitor {
 	}
 	
 	/**
-	 * dispatch abstract rule
-	 *
-	 * returns whether this.cmd is allowed according to @param rule
+	 * returns whether feature rule is active 
 	 *
 	 * @param rule
 	 * @return Boolean
@@ -80,7 +78,6 @@ public class FeatureRuleVisitor {
 		return false;
 	}
 	
-	
 	private boolean andRuleVisitor(AndFeatureRule rule) {
 		for(FeatureRule abstractRule : rule.getRules()) {
 			if(!checkRule(abstractRule))
-- 
GitLab