private void processTggRule(SQLElement ruleClass) { //this.exportProgressBar.invokePerformNext("exporting EClass: " + eaClass.Name); SQLTaggedValue mocaTreeTag = EAEcoreAddin.Util.EAUtil.findTaggedValue(ruleClass, Main.MoflonExportTreeTaggedValueName); TGGRule tggRule = new TGGRule(repository, ruleClass); tggRule.loadTreeFromTaggedValue(); MocaNode tggRuleMocaNode = new MocaNode(); tggRuleMocaNode.deserializeFromXmlTree(MocaTreeUtil.stringToXmlDocument(mocaTreeTag.Notes).DocumentElement.FirstChild as XmlElement); this.currentNode.appendChildNode(tggRuleMocaNode); tggRule.additionalAttributesDuringExport(tggRuleMocaNode); foreach (SQLElement element in ruleClass.Elements) { //handle tgg rule pattern if (element.Stereotype == TGGModelingMain.TggObjectVariableStereotype || element.Stereotype == TGGModelingMain.TggCorrespondenceStereotype) { this.currentNode = tggRuleMocaNode.getChildNodeWithName(StoryPattern.ObjectVariablesChildNodeName); processTggObjectVariable(element); } //handle sdms of tgg rule class else if (element.Stereotype == SDMModelingMain.SdmContainerStereotype) { String associatedMethodguid = EAEcoreAddin.Util.EAUtil.findTaggedValue(element, SDMModelingMain.SDMContainerAssociatedMethodTaggedValueName).Value; MocaNode operationsNode = tggRuleMocaNode.getChildNodeWithName(EClass.OperationsChildNodeName); MocaNode owningOperationNode = null; foreach (MocaNode EOperationNode in operationsNode.Children) { MocaAttribute guidAttribute = EOperationNode.getAttributeOrCreate(Main.GuidStringName); if (guidAttribute != null && guidAttribute.Value == associatedMethodguid) { owningOperationNode = EOperationNode; } } if (owningOperationNode != null) { MocaNode sdmActivityNode = this.ExportMain.ecoreExport.sdmExport.processActivity(element); owningOperationNode.appendChildNode(sdmActivityNode); } } else if (element.Stereotype == TGGModelingMain.CSPConstraintStereotype || element.Stereotype == "TGGCsp") { MocaNode cspsNode = tggRuleMocaNode.getChildNodeWithName(TGGRule.CspsChildNodeName); if (cspsNode == null) { cspsNode = tggRuleMocaNode.appendChildNode(TGGRule.CspsChildNodeName); } this.currentNode = cspsNode; processTGGCSP(element); tggRuleMocaNode.getAttributeOrCreate(TGGRule.CspSpecAttributeName).Value += element.Notes.Replace(Environment.NewLine, ""); } } }
public override void doRuleQuickFix(SQLElement sqlElement, SQLWrapperClasses.SQLRepository repository, int i, String errorMessage) { EA.Element realElement = sqlElement.getRealElement(); if (errorMessage == "TGG Rule name shouldnt be equal to TGG CorrespondenceType name") { if (i == 0) { realElement.Name = "Rule" + realElement.Name; realElement.Update(); TGGRule tggRule = new TGGRule(repository, sqlElement); tggRule.saveTreeToEATaggedValue(true); } } else if (errorMessage == "TGG Rule name must not contain spaces") { if (i == 0) { realElement.Name = realElement.Name.Replace(" ", ""); realElement.Update(); TGGRule tggRule = new TGGRule(repository, sqlElement); tggRule.saveTreeToEATaggedValue(true); } } }
private static void onNotifyTggRuleModified(SQLRepository sqlRepository, EA.Element element) { TGGRule tggRule = new TGGRule(sqlRepository, sqlRepository.GetElementByID(element.ElementID)); //tggRule.loadTreeFromTaggedValue(); tggRule.saveTreeToEATaggedValue(false); Main.addToTreeQueue(element.ElementGUID, tggRule); }
public override void doRuleQuickFix(SQLElement eaElement, SQLWrapperClasses.SQLRepository repository, int i, string errorMessage) { if (i == 0) { if (eaElement.Stereotype == TGGModelingMain.TggRuleStereotype) { TGGRule tggRule = new TGGRule(repository, eaElement); tggRule.saveTreeToEATaggedValue(true); } } }
private void createRuleElementAndRuleDiagram() { this.newRuleElement = rulesPackage.Elements.AddNew(this.textBoxRuleName.Text, "Class") as EA.Element; this.newRuleElement.Stereotype = TGGModelingMain.TggRuleStereotype; this.newRuleElement.Update(); EA.Diagram rulesDiagram = rulesPackage.Diagrams.GetAt(0) as EA.Diagram; EA.DiagramObject newRuleDiagramObject = rulesDiagram.DiagramObjects.AddNew("", this.newRuleElement.Type) as EA.DiagramObject; if (this.addInheritanceLinkCheckBox.Checked) { EA.DiagramObject originalRuleDiagramObject = null; foreach (EA.DiagramObject diagramObject in rulesDiagram.DiagramObjects) { if (diagramObject.ElementID == this.originalRuleElement.ElementID) { originalRuleDiagramObject = diagramObject; break; } } if (originalRuleDiagramObject != null) { int verticalOffset = -(originalRuleDiagramObject.top - originalRuleDiagramObject.bottom + 40); newRuleDiagramObject.left = originalRuleDiagramObject.left - 10; newRuleDiagramObject.right = originalRuleDiagramObject.right + 10; newRuleDiagramObject.top = originalRuleDiagramObject.top + verticalOffset; newRuleDiagramObject.bottom = originalRuleDiagramObject.bottom + verticalOffset; } } else { newRuleDiagramObject.left = 10; newRuleDiagramObject.right = 110; newRuleDiagramObject.top = -10; newRuleDiagramObject.bottom = -80; } newRuleDiagramObject.ElementID = this.newRuleElement.ElementID; newRuleDiagramObject.Update(); if (this.addInheritanceLinkCheckBox.Checked) { addInheritanceLinkToOriginalRule(); } repository.ReloadDiagram(rulesDiagram.DiagramID); newRuleDiagram = newRuleElement.Diagrams.AddNew(this.textBoxRuleName.Text, TGGModelingMain.TggRuleDiagramMetatype[0]) as EA.Diagram; newRuleDiagram.Update(); TGGRule rule = new TGGRule(repository, repository.GetElementByID(newRuleElement.ElementID)); rule.saveTreeToEATaggedValue(true); }
public static List <ObjectVariable> getTGGObjectVariablesInTggRule(TGGRule tggRule, SQLRepository repository) { List <ObjectVariable> ovs = new List <ObjectVariable>(); String tggOvQuery = repository.SQLQuery("select a.Name, max(a.Classifier) as Classifier from t_object a where a.Stereotype = '" + TGGModelingMain.TggObjectVariableStereotype + "' and a.ParentID = " + tggRule.rule.ElementID + " group by a.Name"); foreach (String row in EAEcoreAddin.Util.EAUtil.getXMLNodeContentFromSQLQueryString(tggOvQuery, "Row")) { SQLElement actOV = new SQLElement(repository, row); TGGObjectVariable tggOv = new TGGObjectVariable(actOV, repository); ovs.Add(tggOv); } return(ovs); }
private void addPossibleNamesToComboBox() { List <ObjectVariable> listOfOvs = new List <ObjectVariable>(); List <EParameter> listOfParameters = new List <EParameter>(); if (objectVariable is TGGObjectVariable) { TGGRule tggRule = objectVariable.StoryPattern as TGGRule; listOfOvs = SDMUtil.getTGGObjectVariablesInTggRule(tggRule, repository); } else if (objectVariable is ObjectVariable) { Activity activity = objectVariable.StoryPattern.ParentStoryNode.OwningActivity; listOfOvs = SDMUtil.getSDMObjectVariablesInActivity(activity, repository); try { foreach (EParameter eParameter in objectVariable.StoryPattern.ParentStoryNode.OwningActivity.OwningOperation.EParameters) { listOfParameters.Add(eParameter); } } catch { } } ObjectVariable ovToDelete = null; foreach (ObjectVariable ov in listOfOvs) { if (ov.Name == this.objectVariable.ObjectVariableEA.Name) { ovToDelete = ov; } } listOfOvs.Remove(ovToDelete); InternalList.AddRange(listOfOvs); InternalList.AddRange(listOfParameters); foreach (Object possibleObject in InternalList) { if (possibleObject is ObjectVariable) { this.Items.Add((possibleObject as ObjectVariable).Name); } else if (possibleObject is EParameter) { this.Items.Add((possibleObject as EParameter).Name); } } }
public override List <String> doRule(SQLElement eaElement, SQLWrapperClasses.SQLRepository repository) { List <String> results = new List <string>(); if (eaElement.Stereotype == TGGModelingMain.TggRuleStereotype) { TGGRule tggRule = new TGGRule(repository, eaElement); tggRule.loadTreeFromTaggedValue(); if (tggRule.Guid != eaElement.ElementGUID) { results.Add("TGGRule is invalid and has to be updated"); } } return(results); }
private void updateMocaTreeFragments() { // For all packages (recursively!) in TGG and Ecore projects foreach (EA.Package p in EAUtil.findAllMoflonPackages(repository)) { SQLPackage p2 = sqlRep.GetPackageByID(p.PackageID); if (p.Element.Stereotype == TGGModelingMain.TggSchemaPackageStereotype) { TGG tgg = new TGG(sqlRep, p2); tgg.loadTreeFromTaggedValue(); tgg.saveTreeToEATaggedValue(false); } else if (p.Element.Stereotype == TGGModelingMain.TggRulePackageStereotype) { TGGRulePackage package = new TGGRulePackage(p2, sqlRep); package.loadTreeFromTaggedValue(); package.saveTreeToEATaggedValue(false); } else { EPackage package = new EPackage(p2, sqlRep); package.loadTreeFromTaggedValue(); package.saveTreeToEATaggedValue(false); } } foreach (EA.Element eClassElement in EAUtil.findAllEClasses(repository)) { EClass eClass = new EClass(sqlRep.GetElementByID(eClassElement.ElementID), sqlRep); eClass.saveTreeToEATaggedValue(false); } foreach (EA.Element ruleElement in EAUtil.findAllStereotypedElements(repository, TGGModelingMain.TggRuleStereotype)) { TGGRule rule = new TGGRule(sqlRep, sqlRep.GetElementByID(ruleElement.ElementID)); rule.loadTreeFromTaggedValue(); rule.saveTreeToEATaggedValue(false); } foreach (EA.Element corrTypeElement in EAUtil.findAllStereotypedElements(repository, TGGModelingMain.TggCorrespondenceTypeStereotype)) { TGGCorrespondenceType corrType = new TGGCorrespondenceType(sqlRep.GetElementByID(corrTypeElement.ElementID), sqlRep); corrType.loadTreeFromTaggedValue(); corrType.saveTreeToEATaggedValue(false); } }
private void addPossibleNamesToComboBox() { List <ObjectVariable> listOfOvs = new List <ObjectVariable>(); List <MocaSerializableElement> existingNames = new List <MocaSerializableElement>(); if (objectVariable is TGGObjectVariable) { TGGRule tggRule = objectVariable.StoryPattern as TGGRule; listOfOvs = SDMUtil.getTGGObjectVariablesInTggRule(tggRule, repository); } else if (objectVariable is ObjectVariable) { Activity activity = objectVariable.StoryPattern.ParentStoryNode.OwningActivity; listOfOvs = SDMUtil.getSDMObjectVariablesInActivity(activity, repository); try { foreach (EParameter eParameter in objectVariable.StoryPattern.ParentStoryNode.OwningActivity.OwningOperation.EParameters) { if (eParameter.EaParameter.ClassifierID != "0" && eParameter.EaParameter.ClassifierID != "") { existingNames.Add(eParameter); } } } catch { } } foreach (ObjectVariable ov in listOfOvs) { existingNames.Add(ov); } existingNames.Sort(new SDMExportWrapperComparator()); foreach (Object possibleObject in existingNames) { if (possibleObject is MocaSerializableElement) { MocaSerializableElement entry = possibleObject as MocaSerializableElement; if (!this.Items.Contains(entry.Name)) { this.Items.Add((possibleObject as MocaSerializableElement).Name); InternalList.Add(possibleObject); } } } /* * * ObjectVariable ovToDelete = null; * foreach (ObjectVariable ov in listOfOvs) * { * if (ov.Name == this.objectVariable.ObjectVariableEA.Name) * ovToDelete = ov; * } * listOfOvs.Remove(ovToDelete); * InternalList.AddRange(listOfOvs); * InternalList.AddRange(listOfParameters); * * foreach (Object possibleObject in InternalList) * { * if (possibleObject is ObjectVariable) * { * this.Items.Add((possibleObject as ObjectVariable).Name); * } * else if (possibleObject is EParameter) * { * this.Items.Add((possibleObject as EParameter).Name); * } * } */ }
public TGGExpressionProvider(TGGRule tggRule, SQLRepository repository) : base(repository) { this.tggRule = tggRule; }
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); } } }