diff --git a/org.framed.iorm.ui/modules/relationship/Relationship.ecl b/org.framed.iorm.ui/modules/relationship/Relationship.ecl index 8d14b52c68ef11a68c9df09b38cffe08f50120b4..8711b96d272e12db36bd2d792ff2202106734a53 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 3ab826e93bfa767832f13513bb44a1c4a3107e2b..67c046f3bbc57a48758965087e861e08f4d07671 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 e38b375d209eaefc3a3fa6fb4b5c8ba2f8297a6d..390b7ea247adad6edd9f0b11efde395f873ac057 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; }