public override List <string> doRule(SQLElement eaElement, SQLWrapperClasses.SQLRepository repository) { List <String> results = new List <string>(); if (eaElement.Stereotype == TGGModelingMain.CSPConstraintStereotype || eaElement.Stereotype == "TGGCsp") { SQLElement parentElement = repository.GetElementByID(eaElement.ParentID); if (parentElement.Stereotype != SDMModelingMain.StoryNodeStereotype) { CSPInstance csp = new CSPInstance(repository, eaElement); if (csp.loadTreeFromTaggedValue()) { foreach (CSPInstanceEntry instance in csp.createdEntries) { foreach (Expression exp in instance.typedInExpressions) { if (!ConsistencyUtil.checkExpression(eaElement, exp, repository)) { results.Add("Tgg CSP expression is invalid: " + exp); } } } } else { results.Add("Tgg CSP is outdated and maybe erroneous - updating it manually is recommended"); } } } else if (eaElement.Type == "Constraint") { results.Add("Tgg CSP is outdated and cant be modified - quickfix is recommended"); } return(results); }
private void addElementCopyToRule(EA.Element elementToBeCopied, EA.DiagramObject diagramObjectToBeCopied) { EA.Element newElement = newRuleElement.Elements.AddNew(elementToBeCopied.Name.Substring(0, 1).ToLower() + elementToBeCopied.Name.Substring(1, elementToBeCopied.Name.Length - 1), elementToBeCopied.Type) as EA.Element; newElement.Stereotype = elementToBeCopied.Stereotype; newElement.ClassifierID = elementToBeCopied.ClassifierID; newElement.Notes = elementToBeCopied.Notes; newElement.Update(); newElementIdToNewElement.Add(newElement.ElementID, newElement); oldElementIdToNewElementId.Add(elementToBeCopied.ElementID, newElement.ElementID); foreach (EA.TaggedValue tags in elementToBeCopied.TaggedValues) { EA.TaggedValue newTag = newElement.TaggedValues.AddNew(tags.Name, "") as EA.TaggedValue; if (!checkBoxExactCopy.Checked) { newTag.Value = tags.Value.Replace(elementToBeCopied.ElementGUID, newElement.ElementGUID).Replace("create", "check_only"); newTag.Notes = tags.Notes.Replace(elementToBeCopied.ElementGUID, newElement.ElementGUID).Replace("\"bindingOperator\" value=\"create", "\"bindingOperator\" value=\"check_only"); } else { newTag.Value = tags.Value; newTag.Notes = tags.Notes; } newTag.Update(); } EA.DiagramObject newDiagramObject = newRuleDiagram.DiagramObjects.AddNew("", newElement.Type) as EA.DiagramObject; newDiagramObject.ElementID = newElement.ElementID; newDiagramObject.left = diagramObjectToBeCopied.left; newDiagramObject.right = diagramObjectToBeCopied.right; newDiagramObject.top = diagramObjectToBeCopied.top; newDiagramObject.bottom = diagramObjectToBeCopied.bottom; newDiagramObject.Update(); if (newElement.Stereotype == TGGModelingMain.TggObjectVariableStereotype) { TGGObjectVariable tggOv = new TGGObjectVariable(repository.GetElementByID(newElement.ElementID), repository); tggOv.loadTreeFromTaggedValue(); if (!checkBoxExactCopy.Checked) { tggOv.BindingOperator = SDMModeling.SDMExportWrapper.patterns.BindingOperator.CHECK_ONLY; TGGModelingUtil.assignmentsToConstraints(tggOv, repository); } tggOv.saveTreeToEATaggedValue(true); } else if (newElement.Stereotype == TGGModelingMain.TggCorrespondenceStereotype) { TGGCorrespondence tggCorr = new TGGCorrespondence(repository.GetElementByID(newElement.ElementID), repository); tggCorr.loadTreeFromTaggedValue(); if (!checkBoxExactCopy.Checked) { tggCorr.BindingOperator = SDMModeling.SDMExportWrapper.patterns.BindingOperator.CHECK_ONLY; TGGModelingUtil.assignmentsToConstraints(tggCorr, repository); } tggCorr.saveTreeToEATaggedValue(true); } else if (newElement.Stereotype == TGGModelingMain.CSPConstraintStereotype) { CSPInstance instance = new CSPInstance(repository, repository.GetElementByID(newElement.ElementID)); instance.loadTreeFromTaggedValue(); instance.saveTreeToEATaggedValue(true); } }