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 98aadb1582b4c850fcac0f3c98f7e5cd6f340672..3f5ed17d026857e7e815f3b75a8ade13140b235f 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 @@ -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, this.getModelType() ); + return EditPolicyService.getHandler(this.getDiagram()).canStart(createContext, this.getModelType()); } return false; } 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 8bee86e7d5a79d81195aef138224c6c1f681415a..f43cf5c7a1addbab1a68a907af2807ff9204330f 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 @@ -114,14 +114,7 @@ public abstract class AbstractIntraRelationshipConstraintPattern extends FRaMEDS if (addContext.getNewObject() instanceof Relation) { Relation relation = (Relation) addContext.getNewObject(); if (relation.getType() == type) { - Connection targetConnection = addContext.getTargetConnection(); - if (targetConnection != null) { - Object m = getBusinessObjectForPictogramElement(targetConnection); - if (m instanceof Relation && ((Relation) m).getType() == Type.RELATIONSHIP) { - // TODO: Create EditPolicy rule for this case - return EditPolicyService.getHandler(this.getDiagram()).canAdd(addContext, type); - } - } + return EditPolicyService.getHandler(this.getDiagram()).canAdd(addContext, type); } } return false; @@ -164,10 +157,7 @@ public abstract class AbstractIntraRelationshipConstraintPattern extends FRaMEDS public boolean canCreate(ICreateContext createContext) { Connection targetConnection = createContext.getTargetConnection(); if(targetConnection != null) { - Object m = getBusinessObjectForPictogramElement(targetConnection); - if(m instanceof Relation && ((Relation) m).getType() == Type.RELATIONSHIP) { //TODO: Create EditPolicy rule for this case - return EditPolicyService.getHandler(this.getDiagram()).canCreate(createContext, this.getModelType()); - } + return EditPolicyService.getHandler(this.getDiagram()).canCreate(createContext, this.getModelType()); } return false; } diff --git a/org.framed.iorm.ui/modules/relationship/intra_relationship_constraints/IntraRelationship.ecl b/org.framed.iorm.ui/modules/relationship/intra_relationship_constraints/IntraRelationship.ecl index 0de8445a0cb35194ede106183bffbdcae848eeac..b41512ba8ee14e1a02baec6451d5db3dba17f994 100644 --- a/org.framed.iorm.ui/modules/relationship/intra_relationship_constraints/IntraRelationship.ecl +++ b/org.framed.iorm.ui/modules/relationship/intra_relationship_constraints/IntraRelationship.ecl @@ -1,20 +1,20 @@ //IntraRelationshipConstraint -Add Irreflexive (Intra_Relationship_Constraints) when true; +Add Irreflexive (Intra_Relationship_Constraints) when IsTargetConnectionType(Relationship); Start Irreflexive (Intra_Relationship_Constraints) when true; -Create Irreflexive (Intra_Relationship_Constraints) when true; +Create Irreflexive (Intra_Relationship_Constraints) when IsTargetConnectionType(Relationship); -Add Acyclic (Intra_Relationship_Constraints) when true; +Add Acyclic (Intra_Relationship_Constraints) when IsTargetConnectionType(Relationship); Start Acyclic (Intra_Relationship_Constraints) when true; -Create Acyclic (Intra_Relationship_Constraints) when true; +Create Acyclic (Intra_Relationship_Constraints) when IsTargetConnectionType(Relationship); -Add Cyclic (Intra_Relationship_Constraints) when true; +Add Cyclic (Intra_Relationship_Constraints) when IsTargetConnectionType(Relationship); Start Cyclic (Intra_Relationship_Constraints) when true; -Create Cyclic (Intra_Relationship_Constraints) when true; +Create Cyclic (Intra_Relationship_Constraints) when IsTargetConnectionType(Relationship); -Add Reflexive (Intra_Relationship_Constraints) when true; -Start Reflexive (Intra_Relationship_Constraints) when true; -Create Reflexive (Intra_Relationship_Constraints) when true; +Add Reflexive (Intra_Relationship_Constraints) when IsTargetConnectionType(Relationship); +Start Reflexive (Intra_Relationship_Constraints) when true; +Create Reflexive (Intra_Relationship_Constraints) when IsTargetConnectionType(Relationship); -Add Total (Intra_Relationship_Constraints) when true; +Add Total (Intra_Relationship_Constraints) when IsTargetConnectionType(Relationship); Start Total (Intra_Relationship_Constraints) when true; -Create Total (Intra_Relationship_Constraints) when true; +Create Total (Intra_Relationship_Constraints) when IsTargetConnectionType(Relationship); diff --git a/org.framed.iorm.ui/modules/relationship/intra_relationship_constraints/IntraRelationship.editpolicy b/org.framed.iorm.ui/modules/relationship/intra_relationship_constraints/IntraRelationship.editpolicy index 45510f0d68d8e9507f01df30e38dc5deca3cd317..638a16643d9e7d65947aaae6052325c046bcd92c 100644 --- a/org.framed.iorm.ui/modules/relationship/intra_relationship_constraints/IntraRelationship.editpolicy +++ b/org.framed.iorm.ui/modules/relationship/intra_relationship_constraints/IntraRelationship.editpolicy @@ -2,7 +2,7 @@ <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="Add" actionType="Irreflexive"> <featureRule xsi:type="editpolicymodel:IsFeature" featureName="Intra_Relationship_Constraints"/> - <constraintRule xsi:type="editpolicymodel:TrueConstraintRule"/> + <constraintRule xsi:type="editpolicymodel:IsTargetConnectionType" type="Relationship"/> </policies> <policies action="Start" actionType="Irreflexive"> <featureRule xsi:type="editpolicymodel:IsFeature" featureName="Intra_Relationship_Constraints"/> @@ -10,11 +10,11 @@ </policies> <policies actionType="Irreflexive"> <featureRule xsi:type="editpolicymodel:IsFeature" featureName="Intra_Relationship_Constraints"/> - <constraintRule xsi:type="editpolicymodel:TrueConstraintRule"/> + <constraintRule xsi:type="editpolicymodel:IsTargetConnectionType" type="Relationship"/> </policies> <policies action="Add"> <featureRule xsi:type="editpolicymodel:IsFeature" featureName="Intra_Relationship_Constraints"/> - <constraintRule xsi:type="editpolicymodel:TrueConstraintRule"/> + <constraintRule xsi:type="editpolicymodel:IsTargetConnectionType" type="Relationship"/> </policies> <policies action="Start"> <featureRule xsi:type="editpolicymodel:IsFeature" featureName="Intra_Relationship_Constraints"/> @@ -22,11 +22,11 @@ </policies> <policies> <featureRule xsi:type="editpolicymodel:IsFeature" featureName="Intra_Relationship_Constraints"/> - <constraintRule xsi:type="editpolicymodel:TrueConstraintRule"/> + <constraintRule xsi:type="editpolicymodel:IsTargetConnectionType" type="Relationship"/> </policies> <policies action="Add" actionType="Cyclic"> <featureRule xsi:type="editpolicymodel:IsFeature" featureName="Intra_Relationship_Constraints"/> - <constraintRule xsi:type="editpolicymodel:TrueConstraintRule"/> + <constraintRule xsi:type="editpolicymodel:IsTargetConnectionType" type="Relationship"/> </policies> <policies action="Start" actionType="Cyclic"> <featureRule xsi:type="editpolicymodel:IsFeature" featureName="Intra_Relationship_Constraints"/> @@ -34,11 +34,11 @@ </policies> <policies actionType="Cyclic"> <featureRule xsi:type="editpolicymodel:IsFeature" featureName="Intra_Relationship_Constraints"/> - <constraintRule xsi:type="editpolicymodel:TrueConstraintRule"/> + <constraintRule xsi:type="editpolicymodel:IsTargetConnectionType" type="Relationship"/> </policies> <policies action="Add" actionType="Reflexive"> <featureRule xsi:type="editpolicymodel:IsFeature" featureName="Intra_Relationship_Constraints"/> - <constraintRule xsi:type="editpolicymodel:TrueConstraintRule"/> + <constraintRule xsi:type="editpolicymodel:IsTargetConnectionType" type="Relationship"/> </policies> <policies action="Start" actionType="Reflexive"> <featureRule xsi:type="editpolicymodel:IsFeature" featureName="Intra_Relationship_Constraints"/> @@ -46,11 +46,11 @@ </policies> <policies actionType="Reflexive"> <featureRule xsi:type="editpolicymodel:IsFeature" featureName="Intra_Relationship_Constraints"/> - <constraintRule xsi:type="editpolicymodel:TrueConstraintRule"/> + <constraintRule xsi:type="editpolicymodel:IsTargetConnectionType" type="Relationship"/> </policies> <policies action="Add" actionType="Total"> <featureRule xsi:type="editpolicymodel:IsFeature" featureName="Intra_Relationship_Constraints"/> - <constraintRule xsi:type="editpolicymodel:TrueConstraintRule"/> + <constraintRule xsi:type="editpolicymodel:IsTargetConnectionType" type="Relationship"/> </policies> <policies action="Start" actionType="Total"> <featureRule xsi:type="editpolicymodel:IsFeature" featureName="Intra_Relationship_Constraints"/> @@ -58,6 +58,6 @@ </policies> <policies actionType="Total"> <featureRule xsi:type="editpolicymodel:IsFeature" featureName="Intra_Relationship_Constraints"/> - <constraintRule xsi:type="editpolicymodel:TrueConstraintRule"/> + <constraintRule xsi:type="editpolicymodel:IsTargetConnectionType" type="Relationship"/> </policies> </editpolicymodel:Model> 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 50489d6b566266b36537dfb3c284ed3c3787606b..b72b9cb712c43f30786f2359ef7ea8e57161ad8e 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 @@ -10,10 +10,12 @@ 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.Connection; import org.eclipse.graphiti.mm.pictograms.ContainerShape; import org.eclipse.graphiti.mm.pictograms.Diagram; import org.eclipse.graphiti.mm.pictograms.Shape; import org.framed.iorm.model.ModelElement; +import org.framed.iorm.model.Relation; import org.framed.iorm.model.Type; import org.framed.iorm.ui.UIUtil; import org.framed.iorm.ui.exceptions.NoDiagramFoundException; @@ -223,16 +225,14 @@ public class ConstraintRuleVisitor { } private boolean isTargetConnectionTypeVisitor(IsTargetConnectionType rule) { - throw new IllegalStateException("TODO"); - /* - Anchor anchor = this.getTargetAnchorFromContext(this.context); - if (anchor == null) { - System.out.println("failed isTargetType() anchor== null, this.context: " + this.context.toString()); - return false; + Connection targetConnection = this.getTargetConnectionFromContext(this.context); + if (targetConnection != null) { + Object m = UIUtil.getBusinessObjectForPictogramElement(targetConnection); + if (m instanceof Relation && ((Relation) m).getType().getLiteral().equals(rule.getType().getLiteral())) { + return true; + } } - ModelElement source = UIUtil.getModelElementForAnchor(anchor); - return rule.getType().getLiteral().equals(source.getType().getLiteral()); - */ + return false; } private boolean containsTypeVisitor(ContainsType rule) { @@ -292,6 +292,19 @@ public class ConstraintRuleVisitor { } return anchor; } + + + private Connection getTargetConnectionFromContext(Object context) { + Connection targetConnection = null; + if (this.context instanceof AddContext) { + AddContext addContext = (AddContext)this.context; + targetConnection = addContext.getTargetConnection(); + } else if (this.context instanceof CreateContext) { + CreateContext createContext = (CreateContext)this.context; + targetConnection = createContext.getTargetConnection(); + } + return targetConnection; + } private boolean sourceEqualsTargetTypeVisitor(SourceEqualsTargetType rule) { // System.out.println("class is: " + this.context.getClass());