From 5324f91dc668a1d0dbc756b100bf52368a1921ec Mon Sep 17 00:00:00 2001 From: nullsub <chrisudeussen@gmail.com> Date: Wed, 2 May 2018 21:57:20 +0200 Subject: [PATCH] update constraint checker for all rules --- .../editpolicydsl/ide/.DslIdeModule.xtendbin | Bin 1648 -> 1648 bytes .../editpolicydsl/ide/.DslIdeSetup.xtendbin | Bin 2449 -> 2449 bytes .../editpolicydsl/ui/.DslUiModule.xtendbin | Bin 2293 -> 2293 bytes .../.DslProposalProvider.xtendbin | Bin 1754 -> 1754 bytes .../.DslDescriptionLabelProvider.xtendbin | Bin 1934 -> 1934 bytes .../ui/labeling/.DslLabelProvider.xtendbin | Bin 2371 -> 2371 bytes .../outline/.DslOutlineTreeProvider.xtendbin | Bin 1781 -> 1781 bytes .../ui/quickfix/.DslQuickfixProvider.xtendbin | Bin 1747 -> 1747 bytes .../editpolicydsl/.DslRuntimeModule.xtendbin | Bin 1679 -> 1679 bytes .../.DslStandaloneSetup.xtendbin | Bin 2022 -> 2022 bytes .../formatting2/.DslFormatter.xtendbin | Bin 2905 -> 2905 bytes .../generator/.DslGenerator.xtendbin | Bin 3413 -> 3413 bytes .../scoping/.DslScopeProvider.xtendbin | Bin 1719 -> 1719 bytes .../validation/.DslValidator.xtendbin | Bin 1702 -> 1702 bytes .../core/standardPolicies.editpolicy | 96 ++++++++++----- .../modules/datatype/simpleExample.editpolicy | 3 - .../ui/FRaMEDDeleteConnectionFeature.java | 2 +- .../ui/editPolicy/ConstraintRuleVisitor.java | 111 +++++++++++++----- .../iorm/ui/editPolicy/EditPolicyHandler.java | 9 +- .../ui/editPolicy/FeatureRuleVisitor.java | 2 +- .../ui/subeditors/FRaMEDFeatureEditor.java | 7 ++ 21 files changed, 165 insertions(+), 65 deletions(-) delete mode 100644 org.framed.iorm.ui/modules/datatype/simpleExample.editpolicy 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 GIT binary patch delta 64 zcmeys^MQvqz?+#xgn@&DgF$@uqK&-VOw8i57j2ei3WPB7SsWQbB9k|>nuF=LtoC49 HpUn{fD%}!* delta 64 zcmeys^MQvqz?+#xgn@&DgW>4P+Ks&2Ow31D)^3(&3WPB7SsWQbB9k|>nuF=LtoC49 HpUn{fj>Z-W 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 GIT binary patch delta 64 zcmbOzJW-f8z?+#xgn@&DgF$@uqK&+nEX?Aw7j3R&`N{-l6tX8Uf*6ypaF~N>K2Ccu I9l+@b05O{q#Q*>R delta 64 zcmbOzJW-f8z?+#xgn@&DgW>4P+Ks%KEX+q&)^4t3`N{-l6tX8Uf*6ypaF~N>K2Ccu I9l+@b0F{ImPXGV_ 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 GIT binary patch delta 64 zcmew=_*IZMz?+#xgn@&DgF#~UqK&-gnV2PJFWP*c=?OEKaf~gW5yY5m!C?-ji#Y7T I^cD_B0ECDX)Bpeg delta 64 zcmew=_*IZMz?+#xgn@&DgW=f9+Ks&DnV65QtlfN{=?OEKaf~gW5yY5m!C?-ji#Y7T I^cD_B0O)ZTUH||9 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 GIT binary patch delta 64 zcmcb`dyAJhz?+#xgn@&DgF#~UqK&*xOw1Cq7i|t=YJo6rvN$q=L?+9!nS<$YHhVBV Hlg$wTH0lzk delta 64 zcmcb`dyAJhz?+#xgn@&DgTZ3%#Era8Ow1N@CvFa6YJo6rvN$q=L?+9!nS<$YHhVBV Hlg$wTK*19Y 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 GIT binary patch delta 64 zcmeC<@8jnU@MdNaVc_84V33%-Xd`bk6SKtZMVluxeTOi5SsfWcB9kw&nS*I=c6%`G H%kBsOHO~^; delta 64 zcmeC<@8jnU@MdNaVc_84U^uq2b|Y^y6Z5f^wVNk1eTOi5SsfWcB9kw&nS*I=c6%`G H%kBsOnYb2Z 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 GIT binary patch delta 64 zcmX>sbXbTtz?+#xgn@&DgF#~UqK&*g%*+zA7j2%yYy)B3W?R7s5}Dk_VGgDbaM*)s HCQe5HPqGt# delta 64 zcmX>sbXbTtz?+#xgn@&DgW=f9+Ks$D%*@AD)^47|Yy)B3W?R7s5}Dk_VGgDbaM*)s HCQe5Hvzr$Q 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 GIT binary patch delta 64 zcmey$`<0hBz?+#xgn@&DgF#~UqK&+DOw1Cq7j5oiN`^4LusAY;L?&CXnS<#fHhVC= Hh0PHFR~!?d delta 64 zcmey$`<0hBz?+#xgn@&DgW=f9+Ks$*Ow7kt)^6@&N`^4LusAY;L?&CXnS<#fHhVC= Hh0PHFy9F02 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 GIT binary patch delta 64 zcmcc2dzqIvz?+#xgn@&DgF#~UqK&-SOw1Cq7j3R)3V|>#u{bh<L?(-|nS<#7HhVBV HiOmrJHZ~HU delta 64 zcmcc2dzqIvz?+#xgn@&DgW=f9+Ks%~Ow7kt)^4t53V|>#u{bh<L?(-|nS<#7HhVBV HiOmrJnjaP^ 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 GIT binary patch delta 64 zcmeC@?dRnU@MdNaVc_84U=W+VXd|yK6SLUtMVoDz{2+`z7Dq;q$mC0`=3ttK%^pnq Hu{i<&0lE=* delta 64 zcmeC@?dRnU@MdNaVc_84U^ud}b|bGY6Z4UkwVQ33{2+`z7Dq;q$mC0`=3ttK%^pnq Hu{i<&Wup}W 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 GIT binary patch delta 64 zcmaFH|BRnEz?+#xgn@&DgF$TeqK&)>%*<l57i}(Jwqyb`*05GFf*6xE+0DUpGP^yP IUdrwW06eP_-T(jq delta 64 zcmaFH|BRnEz?+#xgn@&DgW<@^+Ks#k%*;nt)^09fwqyb`*05GFf*6xE+0DUpGP^yP IUdrwW0HBl>XaE2J 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 GIT binary patch delta 64 zcmca9c2kTuz?+#xgn@&DgF$TeqK&-$EX-oF7j2%;@}C*ZSjh2%5yY50hszvHU*oa| I(-Pc{0DL19(f|Me delta 64 zcmca9c2kTuz?+#xgn@&DgF$=d#ErcDEX>+7CvKk4@}C*ZSjh2%5yY50hszvHU*oa| I(-Pc{0Degn-T(jq 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 GIT binary patch delta 64 zcmcaAbybQtz?+#xgn@&DgF$TeqK&*f?95`b7j2edU&{<;oZ&jj2x3g0!D9}lFY(xe IX%SvW07yF%cmMzZ delta 64 zcmcaAbybQtz?+#xgn@&DgMn{V?M7Z6c4od+wVP$w*D`|{XShx>f*6x$@R)<?OFZ^q IT7=gT05%H}!~g&Q 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 GIT binary patch delta 64 zcmdnayPcOez?+#xgn@&DgF$TeqK&-4Ow3}l7i~^v3V<-Su{bh<L?-`YH3!osZ1!Nf HjLi`MD?Spo delta 64 zcmdnayPcOez?+#xgn@&DgW<@^+Ks%yOw31C)^1K_3V<-Su{bh<L?-`YH3!osZ1!Nf HjLi`Mk0%yD 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 GIT binary patch delta 64 zcmZ3+yNs7Nz?+#xgn@&DgF$TeqK&-fOw3}l7j1TDiiR+jvN$q=L?*vvH3!qmZ1!L} HmCX?V7kCmQ delta 64 zcmZ3+yNs7Nz?+#xgn@&DgW<@^+Ks&COw31C)^2uZiiR+jvN$q=L?*vvH3!qmZ1!L} HmCX?Vdtnu= diff --git a/org.framed.iorm.ui/core/standardPolicies.editpolicy b/org.framed.iorm.ui/core/standardPolicies.editpolicy index eef06cef..3b7f10c4 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 9ebf384b..00000000 --- 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 8e06c2c0..cc54c23f 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 d767d6ba..39b44bb9 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 d2f565d8..07cf5f01 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 36bd28c9..84113431 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 9d187f29..8a51c623 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()); -- GitLab