public override Dictionary <SQLElement, string> doGlobalRule(SQLWrapperClasses.SQLRepository repository) { Dictionary <SQLElement, string> results = new Dictionary <SQLElement, string>(); String ruleElements = repository.SQLQuery("select * from t_object where Stereotype = '" + TGGModelingMain.TggRuleStereotype + "'"); foreach (String row in EAUtil.getXMLNodeContentFromSQLQueryString(ruleElements, "Row")) { if (row != "") { SQLElement ruleElement = new SQLElement(repository, row); SQLDiagram ruleDiagram = ruleElement.Diagrams.GetAt(0) as SQLDiagram; EA.Diagram rruleDiagram = EAUtil.sqlEAObjectToOriginalObject(repository, ruleDiagram) as EA.Diagram; foreach (EA.DiagramObject diagObject in rruleDiagram.DiagramObjects) { SQLElement diagElement = repository.GetElementByID(diagObject.ElementID); if (diagElement.ParentID != ruleElement.ElementID && (diagElement.Stereotype == TGGModelingMain.TggObjectVariableStereotype || diagElement.Stereotype == TGGModelingMain.TggCorrespondenceStereotype)) { results.Add(diagElement, "Element is no child of Rule: " + ruleElement.Name + " but is contained on its Rule Diagram"); } } } } return(results); }
private void embedStoryPattern() { EA.Diagram evacuateDiagram = currentSdmDiagram; EA.Diagram embedDiagram = null; activityTabsForm.ActivityNode.ActivityNodeEAElement.Diagrams.Refresh(); SQLElement sdmContainer = repository.GetElementByID(activityTabsForm.ActivityNode.ActivityNodeEAElement.ParentID); repository.SaveDiagram(currentSdmDiagram.DiagramID); EA.DiagramObject activityDiagObj = null; foreach (SQLDiagram diagrams in sdmContainer.Diagrams) { if (activityDiagObj == null) { activityDiagObj = EAUtil.findDiagramObject(repository, activityTabsForm.ActivityNode.ActivityNodeEAElement.getRealElement(), diagrams.getRealDiagram()); embedDiagram = EAUtil.sqlEAObjectToOriginalObject(repository, diagrams) as EA.Diagram; } } try { int i = 30; foreach (SQLElement element in activityTabsForm.ActivityNode.ActivityNodeEAElement.Elements) { if (element.Stereotype == SDMModelingMain.ObjectVariableStereotype) { EAUtil.deleteDiagramObject(repository.GetOriginalRepository(), evacuateDiagram, element.getRealElement()); int l = activityDiagObj.left + i; int r = l + 90; int t = activityDiagObj.top - i; int b = t - 50; EA.DiagramObject elementDiagObj = (EA.DiagramObject)embedDiagram.DiagramObjects.AddNew( "l=" + l + ";r=" + r + ";t=" + t + ";b=" + b, element.Type); i += 60; elementDiagObj.ElementID = element.ElementID; elementDiagObj.Sequence = activityDiagObj.Sequence + 1; elementDiagObj.Update(); } } activityDiagObj.Sequence = int.MaxValue; activityDiagObj.Update(); repository.ReloadDiagram(embedDiagram.DiagramID); EAEcoreAddin.Util.EAUtil.setTaggedValue(repository, activityTabsForm.ActivityNode.ActivityNodeEAElement.getRealElement(), Main.MoflonExtractedStoryPatternTaggedValueName, "false"); buttonEvacuate.Text = "Extract Story Pattern"; repository.OpenDiagram(embedDiagram.DiagramID); this.ParentForm.Close(); } catch { System.Windows.Forms.MessageBox.Show("The associated Activity is not on any diagrams"); } }
public override void doEaGuiStuff() { base.doEaGuiStuff(); EA.Package newTGGProject = EAUtil.sqlEAObjectToOriginalObject(Repository, this.EaPackage) as EA.Package; newTGGProject.Element.StereotypeEx = TGGModelingMain.TggSchemaPackageStereotype; newTGGProject.Update(); newTGGProject.Element.Update(); }
public EA.Element getRealElement() { if (realElem == null) { realElem = EAUtil.sqlEAObjectToOriginalObject(repository, this) as EA.Element; } return(realElem); }
private static void transformConstraintToCSPElement(SQLElement eaElement2, SQLWrapperClasses.SQLRepository sqlRep, EA.Repository repository) { EA.Element eaElement = EAUtil.sqlEAObjectToOriginalObject(sqlRep, eaElement2) as EA.Element; String result = repository.SQLQuery("select Diagram_ID from t_diagramobjects where Object_ID = " + eaElement.ElementID); string diagramId = EAUtil.getXMLNodeContentFromSQLQueryString(result, "Diagram_ID")[0]; if (diagramId != "") { EA.Diagram diagram = repository.GetDiagramByID(int.Parse(diagramId)); EA.DiagramObject oldDiagObject = EAUtil.findDiagramObject(sqlRep, eaElement, diagram); EA.Element ruleElement = repository.GetElementByID(diagram.ParentID); if (ruleElement.Stereotype == TGGModelingMain.TggRuleStereotype) { List <EA.Connector> outgoingCons = new List <EA.Connector>(); foreach (EA.Connector con in eaElement.Connectors) { if (con.Stereotype == "ConstraintLink" && con.ClientID == eaElement.ElementID) { outgoingCons.Add(con); } } EA.Element newCsp = ruleElement.Elements.AddNew("", Main.EAClassType) as EA.Element; newCsp.Notes = eaElement.Notes; newCsp.Stereotype = TGGModelingMain.CSPConstraintStereotype; newCsp.Update(); EA.TaggedValue oldTag = EAUtil.findTaggedValue(eaElement, Main.MoflonExportTreeTaggedValueName); if (oldTag != null) { EAUtil.setTaggedValueNotes(sqlRep, newCsp, oldTag.Name, oldTag.Notes); } EA.DiagramObject newDiagObject = diagram.DiagramObjects.AddNew("", Main.EAClassType) as EA.DiagramObject; newDiagObject.ElementID = newCsp.ElementID; newDiagObject.left = oldDiagObject.left; newDiagObject.right = oldDiagObject.right; newDiagObject.bottom = oldDiagObject.bottom; newDiagObject.top = oldDiagObject.top; newDiagObject.Update(); foreach (EA.Connector con in outgoingCons) { con.ClientID = newCsp.ElementID; con.Update(); } EAUtil.deleteDiagramObject(repository, diagram, eaElement); EAUtil.deleteElement(eaElement, sqlRep); } } }
private void buttonOk_Click(object sender, EventArgs e) { if (!checkBoxCreateNew.Checked) { if (this.comboBoxCorrClasses.SelectedIndex != -1) { int i = 0; foreach (int corId in this.possibleCorrespondencesLinkWithConnectors.Keys) { if (i++ == this.comboBoxCorrClasses.SelectedIndex) { this.selectedCorrespondenceLinkId = corId; } } EA.Element selectedLink = sqlRepository.GetOriginalRepository().GetElementByID(selectedCorrespondenceLinkId); corrObject.getRealElement().ClassifierID = selectedLink.ElementID; corrObject.getRealElement().Name = textBoxObjectName.Text; corrObject.getRealElement().Update(); TGGCorrespondence tggCorrOv = new TGGCorrespondence(sqlRepository.GetElementByID(corrObject.ElementID), sqlRepository); tggCorrOv.BindingOperator = this.bo; tggCorrOv.saveTreeToEATaggedValue(true); Close(); } } else if (checkBoxCreateNew.Checked) { EA.Package tggOutermostPackage = EAUtil.sqlEAObjectToOriginalObject(sqlRepository, EAUtil.getOutermostPackage(corrObject, sqlRepository)) as EA.Package; EA.Connector connectorToSource; EA.Connector connectorToTarget; EA.Element selectedLink = createNewCorrespondenceLink(tggOutermostPackage, out connectorToSource, out connectorToTarget); this.corrObject.getRealElement().ClassifierID = selectedLink.ElementID; this.corrObject.getRealElement().Name = textBoxObjectName.Text; this.corrObject.getRealElement().Update(); TGGCorrespondence tggCorrOv = new TGGCorrespondence(sqlRepository.GetElementByID(corrObject.ElementID), sqlRepository); tggCorrOv.BindingOperator = this.bo; tggCorrOv.saveTreeToEATaggedValue(true); List <SQLConnector> references = new List <SQLConnector>(); references.Add(sqlRepository.GetConnectorByID(connectorToSource.ConnectorID)); references.Add(sqlRepository.GetConnectorByID(connectorToTarget.ConnectorID)); possibleCorrespondencesLinkWithConnectors.Add(selectedLink.ElementID, references); Close(); } }
public override void doRuleQuickFix(SQLElement eaElement, SQLRepository repository, int i, String errorMessage) { if (i == 0) { EAUtil.deleteElement(eaElement.getRealElement(), repository); } else if (i == 1) { EA.Diagram possibleDiagram = null; SQLElement parent = eaElement; SQLPackage parentPackage = null; while (possibleDiagram == null) { if (parent.ParentID != 0) { parent = repository.GetElementByID(parent.ParentID); if (parent.Diagrams.Count > 0) { possibleDiagram = parent.Diagrams.GetAt(0) as EA.Diagram; } } else { if (parentPackage == null) { parentPackage = repository.GetPackageByID(parent.PackageID); } else { parentPackage = repository.GetPackageByID(parentPackage.ParentID); } if (parentPackage.Diagrams.Count > 0) { possibleDiagram = parentPackage.Diagrams.GetAt(0) as EA.Diagram; } } } possibleDiagram = EAUtil.sqlEAObjectToOriginalObject(repository, possibleDiagram) as EA.Diagram; EA.DiagramObject diagObject = possibleDiagram.DiagramObjects.AddNew("", eaElement.Type) as EA.DiagramObject; diagObject.left = 20; diagObject.right = 120; diagObject.top = -20; diagObject.bottom = -70; diagObject.ElementID = eaElement.ElementID; diagObject.Update(); repository.OpenDiagram(possibleDiagram.DiagramID); EAUtil.clearSelectedDiagramObjects(repository); possibleDiagram.SelectedObjects.AddNew(diagObject.ElementID.ToString(), ""); repository.ReloadDiagram(possibleDiagram.DiagramID); } }
public override void doRuleQuickFix(SQLPackage eaPackage, SQLWrapperClasses.SQLRepository repository, int i, String errorMessage) { if (errorMessage == "TGG Package must contain a TGG diagram") { EA.Package pkg = EAUtil.sqlEAObjectToOriginalObject(repository, eaPackage) as EA.Package; EA.Diagram newDiagram = pkg.Diagrams.AddNew(eaPackage.Name, TGGModelingMain.TggSchemaDiagramMetatype[0]) as EA.Diagram; newDiagram.Update(); } else if (errorMessage == "Ecore Package must contain an Ecore diagram") { EA.Package pkg = EAUtil.sqlEAObjectToOriginalObject(repository, eaPackage) as EA.Package; EA.Diagram newDiagram = pkg.Diagrams.AddNew(eaPackage.Name, ECOREModelingMain.EcoreDiagramMetatype[0]) as EA.Diagram; newDiagram.Update(); } }
public override void doEaGuiStuff() { base.doEaGuiStuff(); EA.Element realElement = EAUtil.sqlEAObjectToOriginalObject(Repository, ActivityNodeEAElement) as EA.Element; realElement.StereotypeEx = SDMModelingMain.StoryNodeStereotype; if (this.ForEach) { EAEcoreAddin.Util.EAUtil.setTaggedValue(Repository, realElement, "foreach", "true"); } else { EAEcoreAddin.Util.EAUtil.setTaggedValue(Repository, realElement, "foreach", "false"); } realElement.Update(); }
private void updateDiagramMetaType(String oldMetaType, String newMetaType, EA.Repository repository) { SQLRepository sqlRep = new SQLRepository(repository, false); String sqlString = "select Diagram_ID from t_diagram where StyleEx LIKE '*" + oldMetaType + "*'"; String result = repository.SQLQuery(sqlString); foreach (String row in EAUtil.getXMLNodeContentFromSQLQueryString(result, "Row")) { if (row != "") { SQLDiagram diag = new SQLDiagram(sqlRep, row); EA.Diagram rdiag = EAUtil.sqlEAObjectToOriginalObject(sqlRep, diag) as EA.Diagram; String StyleEx = rdiag.StyleEx.Replace(oldMetaType, newMetaType); sqlString = "UPDATE t_diagram SET StyleEx = '" + StyleEx + "' WHERE Diagram_ID = " + rdiag.DiagramID; repository.Execute(sqlString); } } }
private void updateOldConstraints(ref EA.Element ruleElement, SQLRepository Repository) { bool timeToRefresh = false; if (ruleElement.Diagrams.Count > 0) { EA.Diagram ruleDiagram = ruleElement.Diagrams.GetAt(0) as EA.Diagram; ruleDiagram = Repository.GetOriginalRepository().GetDiagramByID(ruleDiagram.DiagramID); foreach (EA.DiagramObject diagObject in ruleDiagram.DiagramObjects) { SQLElement actElement = Repository.GetElementByID(diagObject.ElementID); if (actElement.Type == "Constraint") { } } } if (timeToRefresh) { ruleElement = EAUtil.sqlEAObjectToOriginalObject(Repository, ruleElement) as EA.Element; } }
public void errorSelected(int index) { RuleResult ruleResult = this.shownResults[index]; Object eaObject = ruleResult.EaObject; Rule rule = ruleControl.getRule(ruleResult.RuleID); //try to perform onClick action try { //"check" if eaObject still existing. otherwise throw exception -> result outdated Object eaObject2 = EAUtil.sqlEAObjectToOriginalObject(sqlRepository, ruleResult.EaObject); EAUtil.markObjectInProjectBrowser(eaObject, sqlRepository); EAUtil.markObjectOnDiagram(eaObject, sqlRepository); } //error during action. rule is outdated and should be removed from the output window catch { ruleControl.deleteRuleResult(rule.getRuleID(), ruleResult.ObjectID); writeOutput(); } }
public SDMCSPDialog(SQLElement elem, SQLRepository sqlRepository) { this.InitializeComponent(); this.elem = EAUtil.sqlEAObjectToOriginalObject(sqlRepository, elem) as EA.Element; this.sqlRepository = sqlRepository; if (elem.Notes.Trim() == "") { textBoxCspDefinition.Text = DEFAULT_CSP_CONTENT; } else { textBoxCspDefinition.Text = elem.Notes; } SQLTaggedValue nacIndexTag = EAUtil.findTaggedValue(elem, "nacIndex"); if (nacIndexTag != null) { complexNAC1.setNacIndexValue(nacIndexTag.Value); } StartPosition = FormStartPosition.CenterScreen; }
public bool EA_OnPostNewElement(SQLRepository sqlRepository, EA.Element newElement, EA.Diagram currentDiagram) { EA.Repository repository = sqlRepository.GetOriginalRepository(); try { //a correspondence is created as an instance of CorrespondenceType //Therefore its stereotype is at first time "CorrespondenceType" //but we want to change it to "Correspondence" if (TGGModelingMain.TggRuleDiagramMetatype.Contains(currentDiagram.MetaType)) { sqlRepository.SuppressEADialogs = true; if (newElement.Type == Main.EAObjectType) { TGGObjectVariable tggOv = null; //drag & drop is used if (newElement.ClassifierID != 0) { SQLElement classifier = sqlRepository.GetElementByID(newElement.ClassifierID); if (classifier.Stereotype == ECOREModelingMain.EClassStereotype) { tggOv = new TGGObjectVariable(sqlRepository.GetElementByID(newElement.ElementID), sqlRepository); tggOv.Name = classifier.Name.ToLower().Substring(0, 1) + classifier.Name.Substring(1, classifier.Name.Length - 1); tggOv.BindingOperator = BindingOperator.CREATE; this.ObjectVariableDialog = new OvDialog(sqlRepository, tggOv); ObjectVariableDialog.ShowDialog(); } else if (classifier.Stereotype == TGGModelingMain.TggCorrespondenceTypeStereotype) { tggOv = new TGGCorrespondence(sqlRepository.GetElementByID(newElement.ElementID), sqlRepository); tggOv.Name = classifier.Name.ToLower().Substring(0, 1) + classifier.Name.Substring(1, classifier.Name.Length - 1); tggOv.BindingOperator = BindingOperator.CREATE; this.ObjectVariableDialog = new OvDialog(sqlRepository, tggOv); ObjectVariableDialog.ShowDialog(); } } else { //toolbox is used if (newElement.Stereotype == TGGModelingMain.TggObjectVariableStereotype) { tggOv = new TGGObjectVariable(sqlRepository.GetElementByID(newElement.ElementID), sqlRepository); this.ObjectVariableDialog = new OvDialog(sqlRepository, tggOv); ObjectVariableDialog.ShowDialog(); } else if (newElement.Stereotype == TGGModelingMain.TggCorrespondenceStereotype) { tggOv = new TGGCorrespondence(sqlRepository.GetElementByID(newElement.ElementID), sqlRepository); this.ObjectVariableDialog = new OvDialog(sqlRepository, tggOv); this.ObjectVariableDialog.ShowDialog(); } else if (newElement.Stereotype == SDMModelingMain.CSPInstanceStereotype) { TGG tggPackage = new TGG(sqlRepository, EAUtil.getOutermostPackage(newElement, sqlRepository)); tggPackage.loadTreeFromTaggedValue(); CSPInstanceDialog cspInstanceDialog = new CSPInstanceDialog(sqlRepository, sqlRepository.GetElementByID(newElement.ElementID), new TGGCSPController(tggPackage)); cspInstanceDialog.ShowDialog(); } } } } else if (TGGModelingMain.TggRulesDiagramMetatype.Contains(currentDiagram.MetaType)) { sqlRepository.SuppressEADialogs = true; if (newElement.Type == Main.EAClassType && (newElement.Stereotype == TGGModelingMain.TggRuleStereotype)) { newElement = EAUtil.sqlEAObjectToOriginalObject(sqlRepository, newElement) as EA.Element; EA.Diagram ruleDiagram = newElement.Diagrams.AddNew(newElement.Name, TGGModelingMain.TggRuleDiagramMetatype[0]) as EA.Diagram; ruleDiagram.Update(); EA_OnNotifyContextItemModified(sqlRepository.GetOriginalRepository(), newElement.ElementGUID, EA.ObjectType.otElement); } } else if (TGGModelingMain.TggPatternsDiagramMetatype.Contains(currentDiagram.MetaType)) { sqlRepository.SuppressEADialogs = true; } } catch { } return(true); }