diff --git a/org.framed.iorm.ui/core/standardPolicies.editpolicy b/org.framed.iorm.ui/core/standardPolicies.editpolicy index 4d6788472f71b3eb153acd6b789f3bad1a4371ac..198b548722b30e1b1b394a9e90b6d7395998bbc0 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 7d02d59da2e5413d9107e3342b07cb812d6180a5..061fab0d995917de098fb0d207512f3d81a043f5 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 fc572fdcc15c10d0220ba0253fce890baa4563b3..5c8fa5bdf74ae6fddfebde6e3c2a6f0ac7b51fa6 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 0aba7f8e4cef7d8e852c2657ad141e346c9e16a0..579cb6383534ff0ff257f59c6e6fd653da3daad2 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 8411343138f1714cdc3413608ce6715182a04a22..5939c9128c3c34ae551cc9d0fd9df10ef9de18dc 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))