private void addTGGElementToRuleFromSchema(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), Main.EAObjectType) as EA.Element; newElement.ClassifierID = elementToBeCopied.ElementID; newElement.Update(); newElementIdToNewElement.Add(newElement.ElementID, newElement); oldElementIdToNewElementId.Add(elementToBeCopied.ElementID, newElement.ElementID); 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(); SQLElement sqlElement = repository.GetElementByID(newElement.ElementID); if (elementToBeCopied.Stereotype == ECOREModeling.ECOREModelingMain.EClassStereotype) { TGGObjectVariable tggOv = new TGGObjectVariable(sqlElement, repository); tggOv.loadTreeFromTaggedValue(); tggOv.BindingOperator = SDMModeling.SDMExportWrapper.patterns.BindingOperator.CREATE; tggOv.saveTreeToEATaggedValue(true); } else if (elementToBeCopied.Stereotype == TGGModelingMain.TggCorrespondenceTypeStereotype) { TGGCorrespondence tggCorr = new TGGCorrespondence(sqlElement, repository); tggCorr.loadTreeFromTaggedValue(); tggCorr.BindingOperator = SDMModeling.SDMExportWrapper.patterns.BindingOperator.CREATE; tggCorr.saveTreeToEATaggedValue(true); } }
private void onTggCorrespondenceDoubleClicked(SQLRepository sqlRepository, EA.Element doubleClickedElement) { TGGCorrespondence tggCorrespondence = new TGGCorrespondence(sqlRepository.GetElementByID(doubleClickedElement.ElementID), sqlRepository); this.ObjectVariableDialog = new OvDialog(sqlRepository, tggCorrespondence); ObjectVariableDialog.ShowDialog(); }
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 MocaNode processTggObjectVariable(SQLElement objectVariable) { SQLTaggedValue mocaTreeTag = EAEcoreAddin.Util.EAUtil.findTaggedValue(objectVariable, Main.MoflonExportTreeTaggedValueName); ObjectVariable ov = null; if (objectVariable.Stereotype == TGGModelingMain.TggObjectVariableStereotype) { ov = new TGGObjectVariable(objectVariable, repository); } else if (objectVariable.Stereotype == TGGModelingMain.TggCorrespondenceStereotype) { ov = new TGGCorrespondence(objectVariable, repository); } SQLElement classifier = repository.GetElementByID(objectVariable.ClassifierID); ExportMain.computeAndAddToDependencies(repository, classifier); MocaNode ovMocaNode = new MocaNode(); ovMocaNode.deserializeFromXmlTree(MocaTreeUtil.stringToXmlDocument(mocaTreeTag.Notes).DocumentElement.FirstChild as XmlElement); ov.addAttributesDuringExport(ovMocaNode); this.currentNode.appendChildNode(ovMocaNode); foreach (SQLConnector linkVariable in objectVariable.Connectors) { try { SQLElement source = repository.GetElementByID(linkVariable.ClientID); SQLElement target = repository.GetElementByID(linkVariable.SupplierID); if ((linkVariable.Stereotype == TGGModelingMain.TggLinkVariableStereotype || linkVariable.Type == Main.EAAssociationType) && linkVariable.ClientID == objectVariable.ElementID) { this.currentNode = ovMocaNode.getChildNodeWithName(ObjectVariable.OutgoingLinksNodeName); processTggLinkVariable(linkVariable); } } catch { } } return(ovMocaNode); }
public static ObjectVariable createCorrectOvType(SQLElement eaElement, SQLRepository repository) { ObjectVariable ov = null; if (eaElement.Stereotype == SDMModelingMain.ObjectVariableStereotype) { ov = new ObjectVariable(eaElement, repository); } else if (eaElement.Stereotype == TGGModelingMain.TggObjectVariableStereotype) { ov = new TGGObjectVariable(eaElement, repository); } else if (eaElement.Stereotype == TGGModelingMain.TggCorrespondenceStereotype) { ov = new TGGCorrespondence(eaElement, repository); } return(ov); }
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); } }
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); }
private void importRule(SQLPackage modelPackage, MocaNode ruleNode) { EA.Element ruleElement = MainImport.getInstance().EcoreImport.getOrCreateElement(modelPackage, ruleNode, Main.EAClassType); if (ruleElement.Diagrams.Count == 0) { EA.Diagram ruleDiagram = ruleElement.Diagrams.AddNew(ruleElement.Name, TGGModelingMain.TggRuleDiagramMetatype[0]) as EA.Diagram; ruleDiagram.Update(); MainImport.getInstance().DiagramsToBeFilled.Add(ruleDiagram); } EA.Method mainMethod = MainImport.getInstance().EcoreImport.getOrCreateMethod(sqlRep.GetElementByID(ruleElement.ElementID), ruleNode.getAttributeOrCreate("mainMethodGuid").Value, ruleElement.Name, ""); MocaNode parametersNode = ruleNode.getChildNodeWithName(EOperation.ParametersChildNodeName); if (parametersNode != null) { foreach (MocaNode paramNode in parametersNode.Children) { EA.Parameter parameter = MainImport.getInstance().EcoreImport.getOrCreateParameter(mainMethod, paramNode); MainImport.getInstance().OldGuidToNewGuid.Add(paramNode.getAttributeOrCreate(Main.GuidStringName).Value, parameter.ParameterGUID); } } EClass eClass = MainImport.getInstance().EcoreImport.importEClassFeatures(ruleNode, sqlRep.GetElementByID(ruleElement.ElementID)); MainImport.getInstance().MocaTaggableElements.Remove(eClass); TGGRule rule = new TGGRule(sqlRep, sqlRep.GetElementByID(ruleElement.ElementID)); rule.deserializeFromMocaTree(ruleNode); MainImport.getInstance().MocaTaggableElements.Add(rule); foreach (MocaNode ovNode in ruleNode.getChildNodeWithName(StoryPattern.ObjectVariablesChildNodeName).Children) { if (ovNode.Name == TGGModelingMain.TggObjectVariableStereotype) { ObjectVariable ov = MainImport.getInstance().SdmImport.importObjectVariable(sqlRep.GetElementByID(ruleElement.ElementID), ovNode); MainImport.getInstance().MocaTaggableElements.Remove(ov); ov = new TGGObjectVariable(ov.sqlElement, sqlRep); ov.deserializeFromMocaTree(ovNode); MainImport.getInstance().MocaTaggableElements.Add(ov); } else if (ovNode.Name == TGGCorrespondence.CorrespondenceNodeName) { ObjectVariable ov = MainImport.getInstance().SdmImport.importObjectVariable(sqlRep.GetElementByID(ruleElement.ElementID), ovNode); MainImport.getInstance().MocaTaggableElements.Remove(ov); ov = new TGGCorrespondence(ov.sqlElement, sqlRep); ov.deserializeFromMocaTree(ovNode); MainImport.getInstance().MocaTaggableElements.Add(ov); } } MocaNode cspsNode = ruleNode.getChildNodeWithName(TGGRule.CspsChildNodeName); if (cspsNode != null) { foreach (MocaNode cspInstanceNode in cspsNode.Children) { importTGGCSP(sqlRep.GetElementByID(ruleElement.ElementID), cspInstanceNode); } } else { if (ruleNode.getAttributeOrCreate(TGGRule.CspSpecAttributeName).Value != "") { EA.Element constraintElement = ruleElement.Elements.AddNew("", Main.EAClassType) as EA.Element; constraintElement.Stereotype = TGGModelingMain.CSPConstraintStereotype; constraintElement.Notes = ruleNode.getAttributeOrCreate(TGGRule.CspSpecAttributeName).Value; constraintElement.Update(); CSPInstance cspInstance = new CSPInstance(sqlRep, sqlRep.GetElementByID(constraintElement.ElementID)); cspInstance.CspStringValueFromImport = ruleNode.getAttributeOrCreate(TGGRule.CspSpecAttributeName).Value; MainImport.getInstance().MocaTaggableElements.Add(cspInstance); } } }