Skip to content
Snippets Groups Projects
Commit f547d4c1 authored by nullsub's avatar nullsub
Browse files

add policy for connection in IntraRelationships #19

parent 32e846dc
No related branches found
No related tags found
No related merge requests found
...@@ -179,7 +179,7 @@ public abstract class AbstractInterRelationshipConstraintPattern extends FRaMEDC ...@@ -179,7 +179,7 @@ public abstract class AbstractInterRelationshipConstraintPattern extends FRaMEDC
org.framed.iorm.model.ModelElement sourceConnection = UIUtil.getModelElementForAnchor(sourceAnchor); org.framed.iorm.model.ModelElement sourceConnection = UIUtil.getModelElementForAnchor(sourceAnchor);
if(sourceConnection != null){ if(sourceConnection != null){
if(sourceConnection.getType() == Type.RELATIONSHIP) 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; return false;
} }
......
...@@ -114,14 +114,7 @@ public abstract class AbstractIntraRelationshipConstraintPattern extends FRaMEDS ...@@ -114,14 +114,7 @@ public abstract class AbstractIntraRelationshipConstraintPattern extends FRaMEDS
if (addContext.getNewObject() instanceof Relation) { if (addContext.getNewObject() instanceof Relation) {
Relation relation = (Relation) addContext.getNewObject(); Relation relation = (Relation) addContext.getNewObject();
if (relation.getType() == type) { if (relation.getType() == type) {
Connection targetConnection = addContext.getTargetConnection(); return EditPolicyService.getHandler(this.getDiagram()).canAdd(addContext, type);
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 false; return false;
...@@ -164,10 +157,7 @@ public abstract class AbstractIntraRelationshipConstraintPattern extends FRaMEDS ...@@ -164,10 +157,7 @@ public abstract class AbstractIntraRelationshipConstraintPattern extends FRaMEDS
public boolean canCreate(ICreateContext createContext) { public boolean canCreate(ICreateContext createContext) {
Connection targetConnection = createContext.getTargetConnection(); Connection targetConnection = createContext.getTargetConnection();
if(targetConnection != null) { if(targetConnection != null) {
Object m = getBusinessObjectForPictogramElement(targetConnection); return EditPolicyService.getHandler(this.getDiagram()).canCreate(createContext, this.getModelType());
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 false; return false;
} }
......
//IntraRelationshipConstraint //IntraRelationshipConstraint
Add Irreflexive (Intra_Relationship_Constraints) when true; Add Irreflexive (Intra_Relationship_Constraints) when IsTargetConnectionType(Relationship);
Start Irreflexive (Intra_Relationship_Constraints) when true; 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; 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; 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; Add Reflexive (Intra_Relationship_Constraints) when IsTargetConnectionType(Relationship);
Start Reflexive (Intra_Relationship_Constraints) when true; Start Reflexive (Intra_Relationship_Constraints) when true;
Create 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; Start Total (Intra_Relationship_Constraints) when true;
Create Total (Intra_Relationship_Constraints) when true; Create Total (Intra_Relationship_Constraints) when IsTargetConnectionType(Relationship);
...@@ -2,7 +2,7 @@ ...@@ -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"> <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"> <policies action="Add" actionType="Irreflexive">
<featureRule xsi:type="editpolicymodel:IsFeature" featureName="Intra_Relationship_Constraints"/> <featureRule xsi:type="editpolicymodel:IsFeature" featureName="Intra_Relationship_Constraints"/>
<constraintRule xsi:type="editpolicymodel:TrueConstraintRule"/> <constraintRule xsi:type="editpolicymodel:IsTargetConnectionType" type="Relationship"/>
</policies> </policies>
<policies action="Start" actionType="Irreflexive"> <policies action="Start" actionType="Irreflexive">
<featureRule xsi:type="editpolicymodel:IsFeature" featureName="Intra_Relationship_Constraints"/> <featureRule xsi:type="editpolicymodel:IsFeature" featureName="Intra_Relationship_Constraints"/>
...@@ -10,11 +10,11 @@ ...@@ -10,11 +10,11 @@
</policies> </policies>
<policies actionType="Irreflexive"> <policies actionType="Irreflexive">
<featureRule xsi:type="editpolicymodel:IsFeature" featureName="Intra_Relationship_Constraints"/> <featureRule xsi:type="editpolicymodel:IsFeature" featureName="Intra_Relationship_Constraints"/>
<constraintRule xsi:type="editpolicymodel:TrueConstraintRule"/> <constraintRule xsi:type="editpolicymodel:IsTargetConnectionType" type="Relationship"/>
</policies> </policies>
<policies action="Add"> <policies action="Add">
<featureRule xsi:type="editpolicymodel:IsFeature" featureName="Intra_Relationship_Constraints"/> <featureRule xsi:type="editpolicymodel:IsFeature" featureName="Intra_Relationship_Constraints"/>
<constraintRule xsi:type="editpolicymodel:TrueConstraintRule"/> <constraintRule xsi:type="editpolicymodel:IsTargetConnectionType" type="Relationship"/>
</policies> </policies>
<policies action="Start"> <policies action="Start">
<featureRule xsi:type="editpolicymodel:IsFeature" featureName="Intra_Relationship_Constraints"/> <featureRule xsi:type="editpolicymodel:IsFeature" featureName="Intra_Relationship_Constraints"/>
...@@ -22,11 +22,11 @@ ...@@ -22,11 +22,11 @@
</policies> </policies>
<policies> <policies>
<featureRule xsi:type="editpolicymodel:IsFeature" featureName="Intra_Relationship_Constraints"/> <featureRule xsi:type="editpolicymodel:IsFeature" featureName="Intra_Relationship_Constraints"/>
<constraintRule xsi:type="editpolicymodel:TrueConstraintRule"/> <constraintRule xsi:type="editpolicymodel:IsTargetConnectionType" type="Relationship"/>
</policies> </policies>
<policies action="Add" actionType="Cyclic"> <policies action="Add" actionType="Cyclic">
<featureRule xsi:type="editpolicymodel:IsFeature" featureName="Intra_Relationship_Constraints"/> <featureRule xsi:type="editpolicymodel:IsFeature" featureName="Intra_Relationship_Constraints"/>
<constraintRule xsi:type="editpolicymodel:TrueConstraintRule"/> <constraintRule xsi:type="editpolicymodel:IsTargetConnectionType" type="Relationship"/>
</policies> </policies>
<policies action="Start" actionType="Cyclic"> <policies action="Start" actionType="Cyclic">
<featureRule xsi:type="editpolicymodel:IsFeature" featureName="Intra_Relationship_Constraints"/> <featureRule xsi:type="editpolicymodel:IsFeature" featureName="Intra_Relationship_Constraints"/>
...@@ -34,11 +34,11 @@ ...@@ -34,11 +34,11 @@
</policies> </policies>
<policies actionType="Cyclic"> <policies actionType="Cyclic">
<featureRule xsi:type="editpolicymodel:IsFeature" featureName="Intra_Relationship_Constraints"/> <featureRule xsi:type="editpolicymodel:IsFeature" featureName="Intra_Relationship_Constraints"/>
<constraintRule xsi:type="editpolicymodel:TrueConstraintRule"/> <constraintRule xsi:type="editpolicymodel:IsTargetConnectionType" type="Relationship"/>
</policies> </policies>
<policies action="Add" actionType="Reflexive"> <policies action="Add" actionType="Reflexive">
<featureRule xsi:type="editpolicymodel:IsFeature" featureName="Intra_Relationship_Constraints"/> <featureRule xsi:type="editpolicymodel:IsFeature" featureName="Intra_Relationship_Constraints"/>
<constraintRule xsi:type="editpolicymodel:TrueConstraintRule"/> <constraintRule xsi:type="editpolicymodel:IsTargetConnectionType" type="Relationship"/>
</policies> </policies>
<policies action="Start" actionType="Reflexive"> <policies action="Start" actionType="Reflexive">
<featureRule xsi:type="editpolicymodel:IsFeature" featureName="Intra_Relationship_Constraints"/> <featureRule xsi:type="editpolicymodel:IsFeature" featureName="Intra_Relationship_Constraints"/>
...@@ -46,11 +46,11 @@ ...@@ -46,11 +46,11 @@
</policies> </policies>
<policies actionType="Reflexive"> <policies actionType="Reflexive">
<featureRule xsi:type="editpolicymodel:IsFeature" featureName="Intra_Relationship_Constraints"/> <featureRule xsi:type="editpolicymodel:IsFeature" featureName="Intra_Relationship_Constraints"/>
<constraintRule xsi:type="editpolicymodel:TrueConstraintRule"/> <constraintRule xsi:type="editpolicymodel:IsTargetConnectionType" type="Relationship"/>
</policies> </policies>
<policies action="Add" actionType="Total"> <policies action="Add" actionType="Total">
<featureRule xsi:type="editpolicymodel:IsFeature" featureName="Intra_Relationship_Constraints"/> <featureRule xsi:type="editpolicymodel:IsFeature" featureName="Intra_Relationship_Constraints"/>
<constraintRule xsi:type="editpolicymodel:TrueConstraintRule"/> <constraintRule xsi:type="editpolicymodel:IsTargetConnectionType" type="Relationship"/>
</policies> </policies>
<policies action="Start" actionType="Total"> <policies action="Start" actionType="Total">
<featureRule xsi:type="editpolicymodel:IsFeature" featureName="Intra_Relationship_Constraints"/> <featureRule xsi:type="editpolicymodel:IsFeature" featureName="Intra_Relationship_Constraints"/>
...@@ -58,6 +58,6 @@ ...@@ -58,6 +58,6 @@
</policies> </policies>
<policies actionType="Total"> <policies actionType="Total">
<featureRule xsi:type="editpolicymodel:IsFeature" featureName="Intra_Relationship_Constraints"/> <featureRule xsi:type="editpolicymodel:IsFeature" featureName="Intra_Relationship_Constraints"/>
<constraintRule xsi:type="editpolicymodel:TrueConstraintRule"/> <constraintRule xsi:type="editpolicymodel:IsTargetConnectionType" type="Relationship"/>
</policies> </policies>
</editpolicymodel:Model> </editpolicymodel:Model>
...@@ -10,10 +10,12 @@ import org.eclipse.graphiti.features.context.impl.AddContext; ...@@ -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.CreateConnectionContext;
import org.eclipse.graphiti.features.context.impl.CreateContext; import org.eclipse.graphiti.features.context.impl.CreateContext;
import org.eclipse.graphiti.mm.pictograms.Anchor; 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.ContainerShape;
import org.eclipse.graphiti.mm.pictograms.Diagram; import org.eclipse.graphiti.mm.pictograms.Diagram;
import org.eclipse.graphiti.mm.pictograms.Shape; import org.eclipse.graphiti.mm.pictograms.Shape;
import org.framed.iorm.model.ModelElement; import org.framed.iorm.model.ModelElement;
import org.framed.iorm.model.Relation;
import org.framed.iorm.model.Type; import org.framed.iorm.model.Type;
import org.framed.iorm.ui.UIUtil; import org.framed.iorm.ui.UIUtil;
import org.framed.iorm.ui.exceptions.NoDiagramFoundException; import org.framed.iorm.ui.exceptions.NoDiagramFoundException;
...@@ -223,16 +225,14 @@ public class ConstraintRuleVisitor { ...@@ -223,16 +225,14 @@ public class ConstraintRuleVisitor {
} }
private boolean isTargetConnectionTypeVisitor(IsTargetConnectionType rule) { private boolean isTargetConnectionTypeVisitor(IsTargetConnectionType rule) {
throw new IllegalStateException("TODO"); Connection targetConnection = this.getTargetConnectionFromContext(this.context);
/* if (targetConnection != null) {
Anchor anchor = this.getTargetAnchorFromContext(this.context); Object m = UIUtil.getBusinessObjectForPictogramElement(targetConnection);
if (anchor == null) { if (m instanceof Relation && ((Relation) m).getType().getLiteral().equals(rule.getType().getLiteral())) {
System.out.println("failed isTargetType() anchor== null, this.context: " + this.context.toString()); return true;
return false; }
} }
ModelElement source = UIUtil.getModelElementForAnchor(anchor); return false;
return rule.getType().getLiteral().equals(source.getType().getLiteral());
*/
} }
private boolean containsTypeVisitor(ContainsType rule) { private boolean containsTypeVisitor(ContainsType rule) {
...@@ -292,6 +292,19 @@ public class ConstraintRuleVisitor { ...@@ -292,6 +292,19 @@ public class ConstraintRuleVisitor {
} }
return anchor; 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) { private boolean sourceEqualsTargetTypeVisitor(SourceEqualsTargetType rule) {
// System.out.println("class is: " + this.context.getClass()); // System.out.println("class is: " + this.context.getClass());
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment