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
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;
}
......
......@@ -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;
}
......
//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);
......@@ -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>
......@@ -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());
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment