diff --git a/org.framed.iorm.editpolicydsl.ide/xtend-gen/org/framed/iorm/editpolicydsl/ide/.DslIdeModule.xtendbin b/org.framed.iorm.editpolicydsl.ide/xtend-gen/org/framed/iorm/editpolicydsl/ide/.DslIdeModule.xtendbin index f2f10de59fbaa6e06d0f81e12eb948b9f6d633c1..aa32725d2855ae1f9391b6de2239b5509be953b0 100644 Binary files a/org.framed.iorm.editpolicydsl.ide/xtend-gen/org/framed/iorm/editpolicydsl/ide/.DslIdeModule.xtendbin and b/org.framed.iorm.editpolicydsl.ide/xtend-gen/org/framed/iorm/editpolicydsl/ide/.DslIdeModule.xtendbin differ diff --git a/org.framed.iorm.editpolicydsl.ide/xtend-gen/org/framed/iorm/editpolicydsl/ide/.DslIdeSetup.xtendbin b/org.framed.iorm.editpolicydsl.ide/xtend-gen/org/framed/iorm/editpolicydsl/ide/.DslIdeSetup.xtendbin index 7f9d61711a4c5dbfdad9308987ae823d485552bd..64d6baa46fcd9ff348ddfd8dcfa48ed61b581553 100644 Binary files a/org.framed.iorm.editpolicydsl.ide/xtend-gen/org/framed/iorm/editpolicydsl/ide/.DslIdeSetup.xtendbin and b/org.framed.iorm.editpolicydsl.ide/xtend-gen/org/framed/iorm/editpolicydsl/ide/.DslIdeSetup.xtendbin differ diff --git a/org.framed.iorm.editpolicydsl.ui/xtend-gen/org/framed/iorm/editpolicydsl/ui/.DslUiModule.xtendbin b/org.framed.iorm.editpolicydsl.ui/xtend-gen/org/framed/iorm/editpolicydsl/ui/.DslUiModule.xtendbin index 6591c35a587206ede0fbbce5048d487f0a495cd1..0570f69559a72a3a084579f945c0db3b0b86f1e0 100644 Binary files a/org.framed.iorm.editpolicydsl.ui/xtend-gen/org/framed/iorm/editpolicydsl/ui/.DslUiModule.xtendbin and b/org.framed.iorm.editpolicydsl.ui/xtend-gen/org/framed/iorm/editpolicydsl/ui/.DslUiModule.xtendbin differ diff --git a/org.framed.iorm.editpolicydsl.ui/xtend-gen/org/framed/iorm/editpolicydsl/ui/contentassist/.DslProposalProvider.xtendbin b/org.framed.iorm.editpolicydsl.ui/xtend-gen/org/framed/iorm/editpolicydsl/ui/contentassist/.DslProposalProvider.xtendbin index b0d06ee57ca7bfc731451e286e64669f5d4c7afa..612710189fb6028827e25940652b680ded744bc2 100644 Binary files a/org.framed.iorm.editpolicydsl.ui/xtend-gen/org/framed/iorm/editpolicydsl/ui/contentassist/.DslProposalProvider.xtendbin and b/org.framed.iorm.editpolicydsl.ui/xtend-gen/org/framed/iorm/editpolicydsl/ui/contentassist/.DslProposalProvider.xtendbin differ diff --git a/org.framed.iorm.editpolicydsl.ui/xtend-gen/org/framed/iorm/editpolicydsl/ui/labeling/.DslDescriptionLabelProvider.xtendbin b/org.framed.iorm.editpolicydsl.ui/xtend-gen/org/framed/iorm/editpolicydsl/ui/labeling/.DslDescriptionLabelProvider.xtendbin index 1c6c38a719a43df884bc58191d3b0fe93d49837e..46b24123b56ed4b9a8a265057047a10638ad8eef 100644 Binary files a/org.framed.iorm.editpolicydsl.ui/xtend-gen/org/framed/iorm/editpolicydsl/ui/labeling/.DslDescriptionLabelProvider.xtendbin and b/org.framed.iorm.editpolicydsl.ui/xtend-gen/org/framed/iorm/editpolicydsl/ui/labeling/.DslDescriptionLabelProvider.xtendbin differ diff --git a/org.framed.iorm.editpolicydsl.ui/xtend-gen/org/framed/iorm/editpolicydsl/ui/labeling/.DslLabelProvider.xtendbin b/org.framed.iorm.editpolicydsl.ui/xtend-gen/org/framed/iorm/editpolicydsl/ui/labeling/.DslLabelProvider.xtendbin index d81311b19acb1d1aa40b85052071776cf3557a3a..ef1bf6b1d9321b5dce0ad8d85d696d8b0fb6c165 100644 Binary files a/org.framed.iorm.editpolicydsl.ui/xtend-gen/org/framed/iorm/editpolicydsl/ui/labeling/.DslLabelProvider.xtendbin and b/org.framed.iorm.editpolicydsl.ui/xtend-gen/org/framed/iorm/editpolicydsl/ui/labeling/.DslLabelProvider.xtendbin differ diff --git a/org.framed.iorm.editpolicydsl.ui/xtend-gen/org/framed/iorm/editpolicydsl/ui/outline/.DslOutlineTreeProvider.xtendbin b/org.framed.iorm.editpolicydsl.ui/xtend-gen/org/framed/iorm/editpolicydsl/ui/outline/.DslOutlineTreeProvider.xtendbin index a6a2e39cd0a76a8875ab4d9f8b9336c7ef8d8ee4..272077d13f463d3be823b2444910723041ed968d 100644 Binary files a/org.framed.iorm.editpolicydsl.ui/xtend-gen/org/framed/iorm/editpolicydsl/ui/outline/.DslOutlineTreeProvider.xtendbin and b/org.framed.iorm.editpolicydsl.ui/xtend-gen/org/framed/iorm/editpolicydsl/ui/outline/.DslOutlineTreeProvider.xtendbin differ diff --git a/org.framed.iorm.editpolicydsl.ui/xtend-gen/org/framed/iorm/editpolicydsl/ui/quickfix/.DslQuickfixProvider.xtendbin b/org.framed.iorm.editpolicydsl.ui/xtend-gen/org/framed/iorm/editpolicydsl/ui/quickfix/.DslQuickfixProvider.xtendbin index d846d5153e8bbca5aa9df0da32ac4c616393b047..69082563a8cf5f01cf4c4f47098adb457e6a1934 100644 Binary files a/org.framed.iorm.editpolicydsl.ui/xtend-gen/org/framed/iorm/editpolicydsl/ui/quickfix/.DslQuickfixProvider.xtendbin and b/org.framed.iorm.editpolicydsl.ui/xtend-gen/org/framed/iorm/editpolicydsl/ui/quickfix/.DslQuickfixProvider.xtendbin differ diff --git a/org.framed.iorm.editpolicydsl/xtend-gen/org/framed/iorm/editpolicydsl/.DslRuntimeModule.xtendbin b/org.framed.iorm.editpolicydsl/xtend-gen/org/framed/iorm/editpolicydsl/.DslRuntimeModule.xtendbin index 7e3dd95056e62fa5b8db1cc9325ba54fac664bed..2026d1706c9d15216d1f645e7bd74acd5193a004 100644 Binary files a/org.framed.iorm.editpolicydsl/xtend-gen/org/framed/iorm/editpolicydsl/.DslRuntimeModule.xtendbin and b/org.framed.iorm.editpolicydsl/xtend-gen/org/framed/iorm/editpolicydsl/.DslRuntimeModule.xtendbin differ diff --git a/org.framed.iorm.editpolicydsl/xtend-gen/org/framed/iorm/editpolicydsl/.DslStandaloneSetup.xtendbin b/org.framed.iorm.editpolicydsl/xtend-gen/org/framed/iorm/editpolicydsl/.DslStandaloneSetup.xtendbin index 29421d2ac8ab9bb9dd99991769ddbe8c877e3a5b..3850c9ca13003fcf4c4c3564d2db1d7dfc42e84a 100644 Binary files a/org.framed.iorm.editpolicydsl/xtend-gen/org/framed/iorm/editpolicydsl/.DslStandaloneSetup.xtendbin and b/org.framed.iorm.editpolicydsl/xtend-gen/org/framed/iorm/editpolicydsl/.DslStandaloneSetup.xtendbin differ diff --git a/org.framed.iorm.editpolicydsl/xtend-gen/org/framed/iorm/editpolicydsl/formatting2/.DslFormatter.xtendbin b/org.framed.iorm.editpolicydsl/xtend-gen/org/framed/iorm/editpolicydsl/formatting2/.DslFormatter.xtendbin index 2e85ff0a63dcc74ee1216bd686f5e83dc32ccf40..0378a27a78be2680e1d2d5c9de68ca46ad18cf65 100644 Binary files a/org.framed.iorm.editpolicydsl/xtend-gen/org/framed/iorm/editpolicydsl/formatting2/.DslFormatter.xtendbin and b/org.framed.iorm.editpolicydsl/xtend-gen/org/framed/iorm/editpolicydsl/formatting2/.DslFormatter.xtendbin differ diff --git a/org.framed.iorm.editpolicydsl/xtend-gen/org/framed/iorm/editpolicydsl/generator/.DslGenerator.xtendbin b/org.framed.iorm.editpolicydsl/xtend-gen/org/framed/iorm/editpolicydsl/generator/.DslGenerator.xtendbin index 3890e9883a0ea0d4d266e4bfcb4be9e363f6a1bf..274537cd1ddcb6815e77c5d664385e356f6da5dd 100644 Binary files a/org.framed.iorm.editpolicydsl/xtend-gen/org/framed/iorm/editpolicydsl/generator/.DslGenerator.xtendbin and b/org.framed.iorm.editpolicydsl/xtend-gen/org/framed/iorm/editpolicydsl/generator/.DslGenerator.xtendbin differ diff --git a/org.framed.iorm.editpolicydsl/xtend-gen/org/framed/iorm/editpolicydsl/scoping/.DslScopeProvider.xtendbin b/org.framed.iorm.editpolicydsl/xtend-gen/org/framed/iorm/editpolicydsl/scoping/.DslScopeProvider.xtendbin index 5af6f6719df6d31d504ee27d155e69491590afc4..36a73fc2e0cc4176fb1567e4f70317a7e5596470 100644 Binary files a/org.framed.iorm.editpolicydsl/xtend-gen/org/framed/iorm/editpolicydsl/scoping/.DslScopeProvider.xtendbin and b/org.framed.iorm.editpolicydsl/xtend-gen/org/framed/iorm/editpolicydsl/scoping/.DslScopeProvider.xtendbin differ diff --git a/org.framed.iorm.editpolicydsl/xtend-gen/org/framed/iorm/editpolicydsl/validation/.DslValidator.xtendbin b/org.framed.iorm.editpolicydsl/xtend-gen/org/framed/iorm/editpolicydsl/validation/.DslValidator.xtendbin index a5541dd3a73c2120af8484f02eb204d1ce15b133..53af2c8def45966333c988734dbd0e6e46c05624 100644 Binary files a/org.framed.iorm.editpolicydsl/xtend-gen/org/framed/iorm/editpolicydsl/validation/.DslValidator.xtendbin and b/org.framed.iorm.editpolicydsl/xtend-gen/org/framed/iorm/editpolicydsl/validation/.DslValidator.xtendbin differ diff --git a/org.framed.iorm.ui/core/standardPolicies.editpolicy b/org.framed.iorm.ui/core/standardPolicies.editpolicy index eef06cef66c6ff49bb6abfe1289aae5895cba16f..3b7f10c4b3b1e8809210cbd6b07b52b72d4cfb31 100644 --- a/org.framed.iorm.ui/core/standardPolicies.editpolicy +++ b/org.framed.iorm.ui/core/standardPolicies.editpolicy @@ -1,5 +1,9 @@ <?xml version="1.0" encoding="ASCII"?> <Editpolicymodel:Model xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:Editpolicymodel="http://framed/editpolicymodel"> + <policies action="Start" actionType="Fulfillment"> + <featureRule xsi:type="Editpolicymodel:IsFeature" featureName="Playable_by_Defining_Compartment"/> + <constraintRule xsi:type="Editpolicymodel:IsSourceType" type="CompartmentType"/> + </policies> <policies action="Add" actionType="Fulfillment"> <featureRule xsi:type="Editpolicymodel:IsFeature" featureName="Playable_by_Defining_Compartment"/> <constraintRule xsi:type="Editpolicymodel:AndConstraintRule"> @@ -23,6 +27,10 @@ <featureRule xsi:type="Editpolicymodel:IsFeature" featureName="Compartment_Behavior"/> <constraintRule xsi:type="Editpolicymodel:TrueConstraintRule"/> </policies> + <policies action="Add_Property" actionType="CompartmentType"> + <featureRule xsi:type="Editpolicymodel:TrueFeatureRule"/> + <constraintRule xsi:type="Editpolicymodel:TrueConstraintRule"/> + </policies> <policies action="Create_Property" actionType="RoleType"> <featureRule xsi:type="Editpolicymodel:IsFeature" featureName="Role_Properties"/> <constraintRule xsi:type="Editpolicymodel:TrueConstraintRule"/> @@ -35,6 +43,10 @@ <featureRule xsi:type="Editpolicymodel:IsFeature" featureName="Compartment_Behavior"/> <constraintRule xsi:type="Editpolicymodel:TrueConstraintRule"/> </policies> + <policies action="Add_Property" actionType="RoleType"> + <featureRule xsi:type="Editpolicymodel:TrueFeatureRule"/> + <constraintRule xsi:type="Editpolicymodel:TrueConstraintRule"/> + </policies> <policies action="Add" actionType="Relationship"> <featureRule xsi:type="Editpolicymodel:IsFeature" featureName="Relationships"/> <constraintRule xsi:type="Editpolicymodel:TrueConstraintRule"/> @@ -46,6 +58,13 @@ <rules xsi:type="Editpolicymodel:IsTargetType" type="CompartmentType"/> </constraintRule> </policies> + <policies 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> + </policies> <policies action="Add" actionType="Fulfillment"> <featureRule xsi:type="Editpolicymodel:IsFeature"/> <constraintRule xsi:type="Editpolicymodel:AndConstraintRule"> @@ -53,6 +72,13 @@ <rules xsi:type="Editpolicymodel:IsTargetType" type="CompartmentType"/> </constraintRule> </policies> + <policies 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> + </policies> <policies action="Add" actionType="Fulfillment"> <featureRule xsi:type="Editpolicymodel:IsFeature" featureName="Compartments"/> <constraintRule xsi:type="Editpolicymodel:AndConstraintRule"> @@ -65,10 +91,26 @@ </rules> </constraintRule> </policies> + <policies 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> + </policies> <policies action="Add" actionType="Fulfillment"> <featureRule xsi:type="Editpolicymodel:IsFeature" featureName="Dates"/> <constraintRule xsi:type="Editpolicymodel:IsSourceType" type="DataType"/> </policies> + <policies actionType="Fulfillment"> + <featureRule xsi:type="Editpolicymodel:IsFeature" featureName="Dates"/> + <constraintRule xsi:type="Editpolicymodel:IsSourceType" type="DataType"/> + </policies> <policies action="Add" actionType="RelationshipExclusion"> <featureRule xsi:type="Editpolicymodel:IsFeature" featureName="Inter_Relationship_Constraints"/> <constraintRule xsi:type="Editpolicymodel:TrueConstraintRule"/> @@ -113,21 +155,13 @@ <rules xsi:type="Editpolicymodel:SourceEqualsTargetType"/> </constraintRule> </policies> - <policies action="Add" actionType="Fulfillment"> + <policies action="Add" actionType="RoleType"> <featureRule xsi:type="Editpolicymodel:TrueFeatureRule"/> - <constraintRule xsi:type="Editpolicymodel:AndConstraintRule"> - <rules xsi:type="Editpolicymodel:NotConstraintRule"> - <rule xsi:type="Editpolicymodel:OrConstraintRule"> - <rules xsi:type="Editpolicymodel:IsTargetType" type="Group"/> - <rules xsi:type="Editpolicymodel:IsSourceType" type="Group"/> - </rule> - </rules> - <rules xsi:type="Editpolicymodel:IsTargetType" type="CompartmentType"/> - </constraintRule> + <constraintRule xsi:type="Editpolicymodel:InCompartment"/> </policies> - <policies action="Add" actionType="RoleType"> + <policies actionType="RoleType"> <featureRule xsi:type="Editpolicymodel:TrueFeatureRule"/> - <constraintRule xsi:type="Editpolicymodel:IsStepIn"/> + <constraintRule xsi:type="Editpolicymodel:InCompartment"/> </policies> <policies action="Add" actionType="CompartmentType"> <featureRule xsi:type="Editpolicymodel:NotFeatureRule"> @@ -142,6 +176,12 @@ </rules> </constraintRule> </policies> + <policies action="Add" actionType="CompartmentType"> + <featureRule xsi:type="Editpolicymodel:IsFeature" featureName="Compartment_Types"/> + <constraintRule xsi:type="Editpolicymodel:NotConstraintRule"> + <rule xsi:type="Editpolicymodel:InCompartment"/> + </constraintRule> + </policies> <policies action="Add" actionType="Relationship"> <featureRule xsi:type="Editpolicymodel:TrueFeatureRule"/> <constraintRule xsi:type="Editpolicymodel:AndConstraintRule"> @@ -149,16 +189,14 @@ <rules xsi:type="Editpolicymodel:IsSourceType" type="RoleType"/> </constraintRule> </policies> - <policies action="Add" actionType="CompartmentType"> - <featureRule xsi:type="Editpolicymodel:IsFeature" featureName="Compartment_Types"/> - <constraintRule xsi:type="Editpolicymodel:NotConstraintRule"> - <rule xsi:type="Editpolicymodel:InCompartment"/> - </constraintRule> - </policies> <policies action="Add" actionType="DataType"> <featureRule xsi:type="Editpolicymodel:IsFeature" featureName="Dates"/> <constraintRule xsi:type="Editpolicymodel:TrueConstraintRule"/> </policies> + <policies actionType="DataType"> + <featureRule xsi:type="Editpolicymodel:IsFeature" featureName="Dates"/> + <constraintRule xsi:type="Editpolicymodel:TrueConstraintRule"/> + </policies> <policies action="Add" actionType="RoleGroup"> <featureRule xsi:type="Editpolicymodel:IsFeature" featureName="Group_Constraints"/> <constraintRule xsi:type="Editpolicymodel:TrueConstraintRule"/> @@ -171,10 +209,6 @@ <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 actionType="CompartmentType"> <featureRule xsi:type="Editpolicymodel:TrueFeatureRule"/> <constraintRule xsi:type="Editpolicymodel:TrueConstraintRule"/> @@ -195,10 +229,6 @@ <featureRule xsi:type="Editpolicymodel:TrueFeatureRule"/> <constraintRule xsi:type="Editpolicymodel:TrueConstraintRule"/> </policies> - <policies actionType="RoleType"> - <featureRule xsi:type="Editpolicymodel:TrueFeatureRule"/> - <constraintRule xsi:type="Editpolicymodel:TrueConstraintRule"/> - </policies> <policies actionType="NaturalType"> <featureRule xsi:type="Editpolicymodel:TrueFeatureRule"/> <constraintRule xsi:type="Editpolicymodel:TrueConstraintRule"/> @@ -211,18 +241,22 @@ <featureRule xsi:type="Editpolicymodel:TrueFeatureRule"/> <constraintRule xsi:type="Editpolicymodel:TrueConstraintRule"/> </policies> - <policies actionType="DataType"> - <featureRule xsi:type="Editpolicymodel:TrueFeatureRule"/> - <constraintRule xsi:type="Editpolicymodel:TrueConstraintRule"/> - </policies> <policies action="Start" actionType="Inheritance"> <featureRule xsi:type="Editpolicymodel:TrueFeatureRule"/> <constraintRule xsi:type="Editpolicymodel:TrueConstraintRule"/> </policies> <policies action="Start" actionType="Fulfillment"> - <featureRule xsi:type="Editpolicymodel:TrueFeatureRule"/> + <featureRule xsi:type="Editpolicymodel:IsFeature" featureName="Compartments"/> + <constraintRule xsi:type="Editpolicymodel:IsSourceType" type="CompartmentType"/> + </policies> + <policies action="Start" actionType="Fulfillment"> + <featureRule xsi:type="Editpolicymodel:IsFeature" featureName="Naturals"/> <constraintRule xsi:type="Editpolicymodel:IsSourceType" type="NaturalType"/> </policies> + <policies action="Start" actionType="Fulfillment"> + <featureRule xsi:type="Editpolicymodel:IsFeature"/> + <constraintRule xsi:type="Editpolicymodel:IsSourceType" type="RoleType"/> + </policies> <policies action="Start" actionType="Fulfillment"> <featureRule xsi:type="Editpolicymodel:IsFeature" featureName="Dates"/> <constraintRule xsi:type="Editpolicymodel:IsSourceType" type="DataType"/> diff --git a/org.framed.iorm.ui/modules/datatype/simpleExample.editpolicy b/org.framed.iorm.ui/modules/datatype/simpleExample.editpolicy deleted file mode 100644 index 9ebf384bca7472b4d59b2f1550eb4679e1ccc935..0000000000000000000000000000000000000000 --- a/org.framed.iorm.ui/modules/datatype/simpleExample.editpolicy +++ /dev/null @@ -1,3 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<Editpolicymodel:Model xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" - xmlns:Editpolicymodel="http://www.example.org/editpolicymodel" xsi:schemaLocation="http://www.example.org/editpolicymodel editpolicymodel.ecore"/> diff --git a/org.framed.iorm.ui/src/org/framed/iorm/ui/FRaMEDDeleteConnectionFeature.java b/org.framed.iorm.ui/src/org/framed/iorm/ui/FRaMEDDeleteConnectionFeature.java index 8e06c2c0a65135fdfb4f0e8ae004f4c13b7add88..cc54c23fa60c2123cfe7d013f61df583bcf8ab76 100644 --- a/org.framed.iorm.ui/src/org/framed/iorm/ui/FRaMEDDeleteConnectionFeature.java +++ b/org.framed.iorm.ui/src/org/framed/iorm/ui/FRaMEDDeleteConnectionFeature.java @@ -73,7 +73,7 @@ public class FRaMEDDeleteConnectionFeature extends DefaultDeleteFeature { //Step 1 Relation relation = (Relation) getBusinessObjectForPictogramElement(deleteContext.getPictogramElement()); for(FRaMEDConnectionPattern framedConnectionPattern : connectionPatterns) { - if(relation.getType() == framedConnectionPattern.getModelType()) + if(relation != null && framedConnectionPattern != null && relation.getType() == framedConnectionPattern.getModelType()) framedConnectionPattern.delete(this, deleteContext); } //Step 2 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 d767d6ba44a36488fc8873e4d1a192fdc267b3ed..39b44bb93e4acdd5e5d435f0607fde108926fbc7 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 @@ -1,6 +1,9 @@ package org.framed.iorm.ui.editPolicy; import org.eclipse.graphiti.features.context.impl.AddConnectionContext; +import org.eclipse.graphiti.features.context.impl.AddContext; +import org.eclipse.graphiti.features.context.impl.CreateConnectionContext; +import org.eclipse.graphiti.features.context.impl.CreateContext; import org.eclipse.graphiti.mm.pictograms.Anchor; import org.eclipse.graphiti.mm.pictograms.Diagram; import org.eclipse.graphiti.mm.pictograms.Shape; @@ -16,6 +19,7 @@ import Editpolicymodel.FalseConstraintRule; import Editpolicymodel.InCompartment; import Editpolicymodel.IsSourceType; import Editpolicymodel.IsStepIn; +import Editpolicymodel.IsTargetType; import Editpolicymodel.NotConstraintRule; import Editpolicymodel.OrConstraintRule; import Editpolicymodel.SourceEqualsTarget; @@ -80,19 +84,39 @@ public class ConstraintRuleVisitor { return !this.isStepOut; } if(rule instanceof InCompartment) { - AddCompartmentTypeContext ctx = (AddCompartmentTypeContext) context; - ctx.getModelToLink().getParent(); + 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 = ctx.getModelToLink().getParent().getContainer().getParent().getName(); + 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() + ", " + ctx.getModelToLink().getParent().getName() +", " + ctx.getModelToLink().getParent().getName()); + //System.out.println("MYDIAGRAM: " + myDiagram.getName() + ", " + parent.getName() +", " + parent.getName()); - if(myDiagram.getName().equals("compartmentType")) + if(myDiagram.getName().startsWith("compartmentType")) return true; return false; @@ -119,8 +143,8 @@ public class ConstraintRuleVisitor { return sourceEqualsTargetVisitor((SourceEqualsTarget)rule); } - if(rule instanceof IsSourceType) { - return isSourceTypeVisitor((IsSourceType)rule); + if(rule instanceof IsTargetType) { + return isTargetTypeVisitor((IsTargetType)rule); } if(rule instanceof ContainsCompartment) { @@ -138,7 +162,7 @@ public class ConstraintRuleVisitor { System.out.println("checkRule for " + rule.getClass().toString() + " not implemented"); return true; } - + private boolean andRuleVisitor(AndConstraintRule rule) { for(ConstraintRule abstractRule : rule.getRules()) { if(!checkRule(abstractRule)) @@ -148,17 +172,23 @@ public class ConstraintRuleVisitor { } private boolean isSourceTypeVisitor(IsSourceType rule) { - //System.out.println("class is: " + this.context.getClass()); - try { - AddConnectionContext ctx = (AddConnectionContext) this.context; - Anchor sourceAnchor = ctx.getSourceAnchor(); - ModelElement source = UIUtil.getModelElementForAnchor(sourceAnchor); - return rule.getType().getLiteral().equals(source.getType().getLiteral()); - } catch(Exception e) { - System.out.println("failed isSourceType: " + e.getMessage()); + Anchor sourceAnchor = this.getSourceAnchorFromContext(this.context); + if(sourceAnchor == null) { + System.out.println("failed isSourceType() sourceAnchor== null, this.context: " + this.context.toString()); + return false; } - - return false; + ModelElement source = UIUtil.getModelElementForAnchor(sourceAnchor); + return rule.getType().getLiteral().equals(source.getType().getLiteral()); + } + + private boolean isTargetTypeVisitor(IsTargetType rule) { + Anchor anchor = this.getTargetAnchorFromContext(this.context); + if(anchor == null) { + System.out.println("failed isTargetType() anchor== null, this.context: " + this.context.toString()); + return false; + } + ModelElement source = UIUtil.getModelElementForAnchor(anchor); + return rule.getType().getLiteral().equals(source.getType().getLiteral()); } private boolean containsCompartmentVisitor(ContainsCompartment rule) { @@ -168,26 +198,51 @@ public class ConstraintRuleVisitor { private boolean sourceEqualsTargetVisitor(SourceEqualsTarget rule) { //System.out.println("class is: " + this.context.getClass()); - AddConnectionContext ctx = (AddConnectionContext) this.context; - Anchor sourceAnchor = ctx.getSourceAnchor(); - ModelElement source = UIUtil.getModelElementForAnchor(sourceAnchor); + Anchor sourceAnchor = this.getSourceAnchorFromContext(this.context); + ModelElement source = UIUtil.getModelElementForAnchor(sourceAnchor); - Anchor targetAnchor = ctx.getTargetAnchor(); - ModelElement target = UIUtil.getModelElementForAnchor(targetAnchor); + Anchor targetAnchor = this.getTargetAnchorFromContext(this.context); + ModelElement target = UIUtil.getModelElementForAnchor(targetAnchor); + + if(targetAnchor == null || sourceAnchor == null) + return false; + + System.out.println("sourceEqualsTargetVisitor comparison: " + source.hashCode() + " == " + target.hashCode()); - System.out.println("sourceEqualsTargetVisitor comparison: " + source.hashCode() + " == " + target.hashCode()); + return source.hashCode() == target.hashCode(); + } - return source.hashCode() == target.hashCode(); + private Anchor getSourceAnchorFromContext(Object context) { + Anchor sourceAnchor = null; + if(this.context instanceof AddConnectionContext) { + AddConnectionContext ctx = (AddConnectionContext) this.context; + sourceAnchor = ctx.getSourceAnchor(); + } else if(this.context instanceof CreateConnectionContext) { + CreateConnectionContext ctx = (CreateConnectionContext) this.context; + sourceAnchor = ctx.getSourceAnchor(); + } + return sourceAnchor; } + private Anchor getTargetAnchorFromContext(Object context) { + Anchor anchor = null; + if(this.context instanceof AddConnectionContext) { + AddConnectionContext ctx = (AddConnectionContext) this.context; + anchor = ctx.getTargetAnchor(); + } else if(this.context instanceof CreateConnectionContext) { + CreateConnectionContext ctx = (CreateConnectionContext) this.context; + anchor = ctx.getTargetAnchor(); + } + return anchor; + } + private boolean sourceEqualsTargetTypeVisitor(SourceEqualsTargetType rule) { //System.out.println("class is: " + this.context.getClass()); try { - AddConnectionContext ctx = (AddConnectionContext) this.context; - Anchor sourceAnchor = ctx.getSourceAnchor(); + Anchor sourceAnchor = this.getSourceAnchorFromContext(this.context); ModelElement source = UIUtil.getModelElementForAnchor(sourceAnchor); - Anchor targetAnchor = ctx.getTargetAnchor(); + Anchor targetAnchor = this.getTargetAnchorFromContext(this.context); ModelElement target = UIUtil.getModelElementForAnchor(targetAnchor); System.out.println("sourceEqualsTargetTypeVisitor comparison: " + source.getType().getLiteral() + " == " + target.getType().getLiteral()); 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 d2f565d8360ce2fcaccc00f4c80157a28761159a..07cf5f013627dd7ab9faf7bddaca472a744c0a4a 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,8 +39,9 @@ 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 rules which are activated by current configuration + //load all constraints which are activated by current configuration activatedPolicies = new LinkedList<>(); FeatureRuleVisitor featureRuleVisitor = new FeatureRuleVisitor(config); @@ -48,9 +49,12 @@ public class EditPolicyHandler { for(Editpolicymodel.Policy policy : model.getPolicies()) { if(featureRuleVisitor.checkRule(policy.getFeatureRule())) { activatedPolicies.add(policy); + System.out.println("policyAdded: " + policy.getFeatureRule().toString()); + } } } + } /** @@ -62,6 +66,9 @@ public class EditPolicyHandler { private List<ConstraintRule> getConstraints(ActionEnum action, Type type) { List<ConstraintRule> rules = new LinkedList<>(); + if(type == null) + return rules; + for(Policy policy: this.activatedPolicies) { if(policy.getAction().getValue() == action.getValue() && policy.getActionType().getLiteral().equals(type.getLiteral())) rules.add(policy.getConstraintRule()); 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 36bd28c920c24644aad8c42d3466538cd4f111a5..8411343138f1714cdc3413608ce6715182a04a22 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 @@ -71,7 +71,7 @@ public class FeatureRuleVisitor { for (FRaMEDFeature feature : this.configuration.getFeatures()) { features.add(feature.getName().getName()); - //System.out.println("EditPolicyHandler featureEnabled: " + feature.getName().getName()); + System.out.println("EditPolicyHandler featureEnabled: " + feature.getName().getName()); } if(features.contains(rule.getFeatureName().getName())) { diff --git a/org.framed.iorm.ui/src/org/framed/iorm/ui/subeditors/FRaMEDFeatureEditor.java b/org.framed.iorm.ui/src/org/framed/iorm/ui/subeditors/FRaMEDFeatureEditor.java index 9d187f29210406abbd8ff6dd3ad3e235ffcf2820..8a51c6233f60e1f4de3376cd5185105ae583b406 100644 --- a/org.framed.iorm.ui/src/org/framed/iorm/ui/subeditors/FRaMEDFeatureEditor.java +++ b/org.framed.iorm.ui/src/org/framed/iorm/ui/subeditors/FRaMEDFeatureEditor.java @@ -176,6 +176,9 @@ public class FRaMEDFeatureEditor extends EditorPart { * @param featureModel the feature model to instantiate the configuration with */ private void loadConfiguration(Model rootModel, IFeatureModel featureModel) { + if(rootModel == null) { + return; + } FRaMEDConfiguration framedConfiguration = rootModel.getFramedConfiguration(); configuration = new Configuration(featureModel); configuration.getPropagator().update(); @@ -277,6 +280,8 @@ public class FRaMEDFeatureEditor extends EditorPart { * updates the labels text and color if the configuration is valid or not */ private void updateInfoLabel() { + if(configuration == null) + return; Boolean valid = configuration.isValid(); infoLabel.setText(valid ? "VALID Configuration" : "INVALID Configuration"); infoLabel.setForeground(valid ? COLOR_VALID_CONFIGURATION : COLOR_INVALID_CONFIGURATION); @@ -288,6 +293,8 @@ public class FRaMEDFeatureEditor extends EditorPart { private void updateTree() { tree.removeAll(); final TreeItem root = new TreeItem(tree, 0); + if(configuration == null) + return; final SelectableFeature rootFeature = configuration.getRoot(); root.setText(configuration.getRoot().getName()); root.setData(configuration.getRoot());