diff --git a/org.framed.iorm.ui/modules/relationship/inter_relationship_constraints/AbstractInterRelationshipConstraintPattern.java b/org.framed.iorm.ui/modules/relationship/inter_relationship_constraints/AbstractInterRelationshipConstraintPattern.java index 4b7bc607e2cd82116ebc00688ba5fc4acc03712f..98aadb1582b4c850fcac0f3c98f7e5cd6f340672 100644 --- a/org.framed.iorm.ui/modules/relationship/inter_relationship_constraints/AbstractInterRelationshipConstraintPattern.java +++ b/org.framed.iorm.ui/modules/relationship/inter_relationship_constraints/AbstractInterRelationshipConstraintPattern.java @@ -159,7 +159,7 @@ public abstract class AbstractInterRelationshipConstraintPattern extends FRaMEDC org.framed.iorm.model.ModelElement targetConnection = UIUtil.getModelElementForAnchor(targetAnchor); if(sourceConnection != null && targetConnection != null) { if(sourceConnection.getContainer() == targetConnection.getContainer()) { - return EditPolicyService.getHandler(this.getDiagram()).canCreate(createContext, this.modelType); + return EditPolicyService.getHandler(this.getDiagram()).canCreate(createContext, this.getModelType()); } } return false; @@ -179,7 +179,7 @@ public abstract class AbstractInterRelationshipConstraintPattern extends FRaMEDC org.framed.iorm.model.ModelElement sourceConnection = UIUtil.getModelElementForAnchor(sourceAnchor); if(sourceConnection != null){ if(sourceConnection.getType() == Type.RELATIONSHIP) - return EditPolicyService.getHandler(this.getDiagram()).canStart(createContext, sourceConnection.getType() ); + return EditPolicyService.getHandler(this.getDiagram()).canStart(createContext, this.getModelType() ); } return false; } diff --git a/org.framed.iorm.ui/modules/relationship/inter_relationship_constraints/InterRelationship.ecl b/org.framed.iorm.ui/modules/relationship/inter_relationship_constraints/InterRelationship.ecl index 6d084323a0c2d0cd48351c92be4e1e413339cf3a..241aab42a578fe18cf1ad95cede21eba21735811 100644 --- a/org.framed.iorm.ui/modules/relationship/inter_relationship_constraints/InterRelationship.ecl +++ b/org.framed.iorm.ui/modules/relationship/inter_relationship_constraints/InterRelationship.ecl @@ -1,10 +1,10 @@ //InterRelationship -Start RelationshipExclusion (Inter_Relationship_Constraints) when true; -Add RelationshipExclusion (Inter_Relationship_Constraints) when true; -Reconnect RelationshipExclusion (Inter_Relationship_Constraints) when true; -Create RelationshipExclusion (Inter_Relationship_Constraints) when true; +Start RelationshipExclusion (Inter_Relationship_Constraints) when IsSourceType(Relationship); +Add RelationshipExclusion (Inter_Relationship_Constraints) when IsSourceType(Relationship) and SourceEqualsTargetType() and !SourceEqualsTarget(); +Reconnect RelationshipExclusion (Inter_Relationship_Constraints) when IsSourceType(Relationship) and SourceEqualsTargetType() and !SourceEqualsTarget(); +Create RelationshipExclusion (Inter_Relationship_Constraints) when IsSourceType(Relationship) and SourceEqualsTargetType() and !SourceEqualsTarget(); -Start RelationshipImplication (Inter_Relationship_Constraints) when true; -Add RelationshipImplication (Inter_Relationship_Constraints) when true; -Reconnect RelationshipImplication (Inter_Relationship_Constraints) when true; -Create RelationshipImplication (Inter_Relationship_Constraints) when true; +Start RelationshipImplication (Inter_Relationship_Constraints) when IsSourceType(Relationship); +Add RelationshipImplication (Inter_Relationship_Constraints) when IsSourceType(Relationship) and SourceEqualsTargetType() and !SourceEqualsTarget(); +Reconnect RelationshipImplication (Inter_Relationship_Constraints) when IsSourceType(Relationship) and SourceEqualsTargetType() and !SourceEqualsTarget(); +Create RelationshipImplication (Inter_Relationship_Constraints) when IsSourceType(Relationship) and SourceEqualsTargetType() and !SourceEqualsTarget(); diff --git a/org.framed.iorm.ui/modules/relationship/inter_relationship_constraints/InterRelationship.editpolicy b/org.framed.iorm.ui/modules/relationship/inter_relationship_constraints/InterRelationship.editpolicy index 2a11004ba01824cb8cab755fd7ecb5aea47490f7..e185a8e1af0b63e98ce0291662c353e8a8de7730 100644 --- a/org.framed.iorm.ui/modules/relationship/inter_relationship_constraints/InterRelationship.editpolicy +++ b/org.framed.iorm.ui/modules/relationship/inter_relationship_constraints/InterRelationship.editpolicy @@ -2,34 +2,82 @@ <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="RelationshipExclusion"> <featureRule xsi:type="editpolicymodel:IsFeature" featureName="Inter_Relationship_Constraints"/> - <constraintRule xsi:type="editpolicymodel:TrueConstraintRule"/> + <constraintRule xsi:type="editpolicymodel:IsSourceType" type="Relationship"/> </policies> <policies action="Add" actionType="RelationshipExclusion"> <featureRule xsi:type="editpolicymodel:IsFeature" featureName="Inter_Relationship_Constraints"/> - <constraintRule xsi:type="editpolicymodel:TrueConstraintRule"/> + <constraintRule xsi:type="editpolicymodel:AndConstraintRule"> + <rules xsi:type="editpolicymodel:AndConstraintRule"> + <rules xsi:type="editpolicymodel:IsSourceType" type="Relationship"/> + <rules xsi:type="editpolicymodel:SourceEqualsTargetType"/> + </rules> + <rules xsi:type="editpolicymodel:NotConstraintRule"> + <rule xsi:type="editpolicymodel:SourceEqualsTarget"/> + </rules> + </constraintRule> </policies> <policies action="Reconnect" actionType="RelationshipExclusion"> <featureRule xsi:type="editpolicymodel:IsFeature" featureName="Inter_Relationship_Constraints"/> - <constraintRule xsi:type="editpolicymodel:TrueConstraintRule"/> + <constraintRule xsi:type="editpolicymodel:AndConstraintRule"> + <rules xsi:type="editpolicymodel:AndConstraintRule"> + <rules xsi:type="editpolicymodel:IsSourceType" type="Relationship"/> + <rules xsi:type="editpolicymodel:SourceEqualsTargetType"/> + </rules> + <rules xsi:type="editpolicymodel:NotConstraintRule"> + <rule xsi:type="editpolicymodel:SourceEqualsTarget"/> + </rules> + </constraintRule> </policies> <policies actionType="RelationshipExclusion"> <featureRule xsi:type="editpolicymodel:IsFeature" featureName="Inter_Relationship_Constraints"/> - <constraintRule xsi:type="editpolicymodel:TrueConstraintRule"/> + <constraintRule xsi:type="editpolicymodel:AndConstraintRule"> + <rules xsi:type="editpolicymodel:AndConstraintRule"> + <rules xsi:type="editpolicymodel:IsSourceType" type="Relationship"/> + <rules xsi:type="editpolicymodel:SourceEqualsTargetType"/> + </rules> + <rules xsi:type="editpolicymodel:NotConstraintRule"> + <rule xsi:type="editpolicymodel:SourceEqualsTarget"/> + </rules> + </constraintRule> </policies> <policies action="Start" actionType="RelationshipImplication"> <featureRule xsi:type="editpolicymodel:IsFeature" featureName="Inter_Relationship_Constraints"/> - <constraintRule xsi:type="editpolicymodel:TrueConstraintRule"/> + <constraintRule xsi:type="editpolicymodel:IsSourceType" type="Relationship"/> </policies> <policies action="Add" actionType="RelationshipImplication"> <featureRule xsi:type="editpolicymodel:IsFeature" featureName="Inter_Relationship_Constraints"/> - <constraintRule xsi:type="editpolicymodel:TrueConstraintRule"/> + <constraintRule xsi:type="editpolicymodel:AndConstraintRule"> + <rules xsi:type="editpolicymodel:AndConstraintRule"> + <rules xsi:type="editpolicymodel:IsSourceType" type="Relationship"/> + <rules xsi:type="editpolicymodel:SourceEqualsTargetType"/> + </rules> + <rules xsi:type="editpolicymodel:NotConstraintRule"> + <rule xsi:type="editpolicymodel:SourceEqualsTarget"/> + </rules> + </constraintRule> </policies> <policies action="Reconnect" actionType="RelationshipImplication"> <featureRule xsi:type="editpolicymodel:IsFeature" featureName="Inter_Relationship_Constraints"/> - <constraintRule xsi:type="editpolicymodel:TrueConstraintRule"/> + <constraintRule xsi:type="editpolicymodel:AndConstraintRule"> + <rules xsi:type="editpolicymodel:AndConstraintRule"> + <rules xsi:type="editpolicymodel:IsSourceType" type="Relationship"/> + <rules xsi:type="editpolicymodel:SourceEqualsTargetType"/> + </rules> + <rules xsi:type="editpolicymodel:NotConstraintRule"> + <rule xsi:type="editpolicymodel:SourceEqualsTarget"/> + </rules> + </constraintRule> </policies> <policies actionType="RelationshipImplication"> <featureRule xsi:type="editpolicymodel:IsFeature" featureName="Inter_Relationship_Constraints"/> - <constraintRule xsi:type="editpolicymodel:TrueConstraintRule"/> + <constraintRule xsi:type="editpolicymodel:AndConstraintRule"> + <rules xsi:type="editpolicymodel:AndConstraintRule"> + <rules xsi:type="editpolicymodel:IsSourceType" type="Relationship"/> + <rules xsi:type="editpolicymodel:SourceEqualsTargetType"/> + </rules> + <rules xsi:type="editpolicymodel:NotConstraintRule"> + <rule xsi:type="editpolicymodel:SourceEqualsTarget"/> + </rules> + </constraintRule> </policies> </editpolicymodel:Model>