public override List <String> doRule(SQLElement eaElement, SQLWrapperClasses.SQLRepository repository) { List <String> results = new List <string>(); if (Serialization.MocaTaggableElement.isIgnored(eaElement)) { return(results); } if (eaElement.Stereotype == SDMModelingMain.StoryNodeStereotype) { StoryNode storyNode = new StoryNode(repository, eaElement); if (!storyNode.loadTreeFromTaggedValue()) { results.Add("StoryNode is invalid and has to be updated manually"); } } else if (eaElement.Stereotype == SDMModelingMain.StatementNodeStereotype) { StatementNode stNode = new StatementNode(repository, eaElement); if (!stNode.loadTreeFromTaggedValue()) { results.Add("StatementNode is invalid and has to be updated manually"); } } else if (eaElement.Stereotype == SDMModelingMain.StopNodeStereotype) { StopNode stopNode = new StopNode(repository, eaElement); if (!stopNode.loadTreeFromTaggedValue()) { results.Add("StopNode is invalid and has to be updated manually"); } } return(results); }
public override List <String> doRule(SQLElement eaElement, SQLWrapperClasses.SQLRepository repository) { List <String> results = new List <string>(); if (eaElement.Stereotype == SDMModelingMain.StatementNodeStereotype) { StatementNode statementNode = new StatementNode(repository, eaElement); statementNode.loadTreeFromTaggedValue(); if (statementNode.StatementExpression != null) { String result = statementNode.StatementExpression.ToString(); if (!ConsistencyUtil.checkExpression(eaElement, statementNode.StatementExpression, repository)) { results.Add("StatementExpression is invalid: (" + result + ")"); } } else { results.Add("StatementExpression is missing"); } foreach (SQLConnector outgoingCon in eaElement.Connectors) { if (outgoingCon.ClientID == eaElement.ElementID) { ActivityEdge edge = new ActivityEdge(repository, outgoingCon); edge.loadTreeFromTaggedValue(); if (edge.GuardType == EdgeGuard.FAILURE || edge.GuardType == EdgeGuard.SUCCESS) { if (statementNode.StatementExpression is MethodCallExpression) { MethodCallExpression mCe = statementNode.StatementExpression as MethodCallExpression; SQLMethod method = repository.GetMethodByGuid(mCe.MethodGuid); if (method != null && method.ReturnType != "EBoolean") { results.Add("Method must be of type EBoolean if StatementNode has success/failure guards"); } } } } } } return(results); }
private void buttonJump_Click(object sender, EventArgs e) { EA.Diagram currentDiagram = repository.GetCurrentDiagram(); Boolean handled = false; if (currentDiagram != null && currentDiagram.SelectedObjects.Count == 1) { EA.DiagramObject selectedDiagramObject = currentDiagram.SelectedObjects.GetAt(0) as EA.DiagramObject; SQLElement selectedElement = repository.GetElementByID(selectedDiagramObject.ElementID); EA.Diagram calledDiagram = null; Expression callExpression = null; if (selectedElement.Stereotype == SDMModelingMain.StatementNodeStereotype) { StatementNode statementNode = new StatementNode(repository, selectedElement); statementNode.loadTreeFromTaggedValue(); callExpression = statementNode.StatementExpression; } else if (selectedElement.Stereotype == SDMModelingMain.ObjectVariableStereotype) { ObjectVariable ov = new ObjectVariable(selectedElement, repository); ov.loadTreeFromTaggedValue(); callExpression = ov.BindingExpression; } else if (selectedElement.Stereotype == SDMModelingMain.StopNodeStereotype) { StopNode stopNode = new StopNode(repository, selectedElement); stopNode.loadTreeFromTaggedValue(); callExpression = stopNode.ReturnValue; } if (callExpression is MethodCallExpression) { MethodCallExpression mcE = callExpression as MethodCallExpression; SQLMethod calledMethod = repository.GetMethodByGuid(mcE.MethodGuid); if (calledMethod != null) { int sdmDiagramId = SDMUtil.getSDMDiagramID(repository, calledMethod); if (sdmDiagramId != SDMUtil.UNKNOWN_SDM_DIAGRAM_ID) { calledDiagram = repository.GetOriginalRepository().GetDiagramByID(sdmDiagramId); } } } if (calledDiagram != null) { Navigator.addAnchorEntry(calledDiagram.DiagramID, currentDiagram.DiagramID); repository.OpenDiagram(calledDiagram.DiagramID); handled = true; } } if (!handled) { if (currentDiagram != null) { Navigator.jumpToAnchorSuccessor(repository.GetOriginalRepository(), currentDiagram.DiagramID); } } }