From 3e2dce977e32dcbd9705741dc2061dc4ce9ceedb Mon Sep 17 00:00:00 2001 From: nullsub <chrisudeussen@gmail.com> Date: Wed, 13 Jun 2018 10:18:09 +0200 Subject: [PATCH] fix Relationship policies and intraRelationship policiy handler call --- .../modules/relationship/Relationship.ecl | 14 ++---- .../relationship/Relationship.editpolicy | 48 +++++++++++-------- ...actIntraRelationshipConstraintPattern.java | 2 +- 3 files changed, 33 insertions(+), 31 deletions(-) diff --git a/org.framed.iorm.ui/modules/relationship/Relationship.ecl b/org.framed.iorm.ui/modules/relationship/Relationship.ecl index 8d14b52c..8711b96d 100644 --- a/org.framed.iorm.ui/modules/relationship/Relationship.ecl +++ b/org.framed.iorm.ui/modules/relationship/Relationship.ecl @@ -1,11 +1,7 @@ //Relationships -Start Relationship (Relationships) when true; -Add Relationship (Relationships) when true; -Reconnect Relationship (Relationships) when true; +Start Relationship (Relationships) when IsSourceType(RoleType); +Add Relationship (Relationships) when IsTargetType(RoleType) and IsSourceType(RoleType) and !SourceEqualsTarget(); +Reconnect Relationship (Relationships) when IsTargetType(RoleType) and IsSourceType(RoleType) and !SourceEqualsTarget(); +Create Relationship (Relationships) when IsTargetType(RoleType) and IsSourceType(RoleType) and !SourceEqualsTarget(); -Start Relationship (true) when IsSourceType(RoleType);//For Relationship-Relation Source and Target must be Role-Type -Add Relationship (true) when IsTargetType(RoleType) and IsSourceType(RoleType); -Reconnect Relationship (true) when IsTargetType(RoleType) and IsSourceType(RoleType); - -Execute Relationship (true) when true; -Create Relationship (true) when true; +Execute Relationship (Relationships) when true; diff --git a/org.framed.iorm.ui/modules/relationship/Relationship.editpolicy b/org.framed.iorm.ui/modules/relationship/Relationship.editpolicy index 3ab826e9..67c046f3 100644 --- a/org.framed.iorm.ui/modules/relationship/Relationship.editpolicy +++ b/org.framed.iorm.ui/modules/relationship/Relationship.editpolicy @@ -2,40 +2,46 @@ <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="Relationship"> <featureRule xsi:type="editpolicymodel:IsFeature" featureName="Relationships"/> - <constraintRule xsi:type="editpolicymodel:TrueConstraintRule"/> + <constraintRule xsi:type="editpolicymodel:IsSourceType" type="RoleType"/> </policies> <policies action="Add" actionType="Relationship"> <featureRule xsi:type="editpolicymodel:IsFeature" featureName="Relationships"/> - <constraintRule xsi:type="editpolicymodel:TrueConstraintRule"/> + <constraintRule xsi:type="editpolicymodel:AndConstraintRule"> + <rules xsi:type="editpolicymodel:AndConstraintRule"> + <rules xsi:type="editpolicymodel:IsTargetType" type="RoleType"/> + <rules xsi:type="editpolicymodel:IsSourceType" type="RoleType"/> + </rules> + <rules xsi:type="editpolicymodel:NotConstraintRule"> + <rule xsi:type="editpolicymodel:SourceEqualsTarget"/> + </rules> + </constraintRule> </policies> <policies action="Reconnect" actionType="Relationship"> <featureRule xsi:type="editpolicymodel:IsFeature" featureName="Relationships"/> - <constraintRule xsi:type="editpolicymodel:TrueConstraintRule"/> - </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"> - <rules xsi:type="editpolicymodel:IsTargetType" type="RoleType"/> - <rules xsi:type="editpolicymodel:IsSourceType" type="RoleType"/> + <rules xsi:type="editpolicymodel:AndConstraintRule"> + <rules xsi:type="editpolicymodel:IsTargetType" type="RoleType"/> + <rules xsi:type="editpolicymodel:IsSourceType" type="RoleType"/> + </rules> + <rules xsi:type="editpolicymodel:NotConstraintRule"> + <rule xsi:type="editpolicymodel:SourceEqualsTarget"/> + </rules> </constraintRule> </policies> - <policies action="Reconnect" actionType="Relationship"> - <featureRule xsi:type="editpolicymodel:TrueFeatureRule"/> + <policies actionType="Relationship"> + <featureRule xsi:type="editpolicymodel:IsFeature" featureName="Relationships"/> <constraintRule xsi:type="editpolicymodel:AndConstraintRule"> - <rules xsi:type="editpolicymodel:IsTargetType" type="RoleType"/> - <rules xsi:type="editpolicymodel:IsSourceType" type="RoleType"/> + <rules xsi:type="editpolicymodel:AndConstraintRule"> + <rules xsi:type="editpolicymodel:IsTargetType" type="RoleType"/> + <rules xsi:type="editpolicymodel:IsSourceType" type="RoleType"/> + </rules> + <rules xsi:type="editpolicymodel:NotConstraintRule"> + <rule xsi:type="editpolicymodel:SourceEqualsTarget"/> + </rules> </constraintRule> </policies> <policies action="Execute" actionType="Relationship"> - <featureRule xsi:type="editpolicymodel:TrueFeatureRule"/> - <constraintRule xsi:type="editpolicymodel:TrueConstraintRule"/> - </policies> - <policies actionType="Relationship"> - <featureRule xsi:type="editpolicymodel:TrueFeatureRule"/> + <featureRule xsi:type="editpolicymodel:IsFeature" featureName="Relationships"/> <constraintRule xsi:type="editpolicymodel:TrueConstraintRule"/> </policies> </editpolicymodel:Model> diff --git a/org.framed.iorm.ui/modules/relationship/intra_relationship_constraints/AbstractIntraRelationshipConstraintPattern.java b/org.framed.iorm.ui/modules/relationship/intra_relationship_constraints/AbstractIntraRelationshipConstraintPattern.java index e38b375d..390b7ea2 100644 --- a/org.framed.iorm.ui/modules/relationship/intra_relationship_constraints/AbstractIntraRelationshipConstraintPattern.java +++ b/org.framed.iorm.ui/modules/relationship/intra_relationship_constraints/AbstractIntraRelationshipConstraintPattern.java @@ -158,7 +158,7 @@ public abstract class AbstractIntraRelationshipConstraintPattern extends FRaMEDS if(targetConnection != null && getBusinessObjectForPictogramElement(targetConnection) instanceof Relation) { Relation relation = (Relation) getBusinessObjectForPictogramElement(targetConnection); - return EditPolicyService.getHandler(this.getDiagram()).canCreate(createContext, relation.getType()); + return EditPolicyService.getHandler(this.getDiagram()).canCreate(createContext, this.getModelType()); } return false; } -- GitLab