Пример #1
0
        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, "");
                }
            }
        }
Пример #2
0
        private void writeDocumentToFile(XmlDocument docToWrite, String changesExtension)
        {
            String filePath     = null;
            String currentValue = MocaTreeUtil.xmlDocumentToString(docToWrite);

            if (changesExtension != null)
            {
                filePath = Path.Combine(tempDirectoryPath, fileName + "." + changesExtension + ".moca.xmi");
            }

            else
            {
                filePath = Path.Combine(tempDirectoryPath, fileName + ".moca.xmi");
            }

            String dirName = new FileInfo(filePath).DirectoryName;

            if (!(Directory.Exists(dirName)))
            {
                Directory.CreateDirectory(dirName);
            }

            if (File.Exists(filePath))
            {
                File.Delete(filePath);
            }

            File.AppendAllText(filePath, currentValue);
        }
Пример #3
0
        public MocaNode processEClass(SQLElement eaClass)
        {
            SQLTaggedValue refactorTreeTag = EAEcoreAddin.Util.EAUtil.findTaggedValue(eaClass, Main.MoflonRefactorTreeTaggedValueName);

            if (refactorTreeTag != null)
            {
                EClass eClass = new EClass(eaClass, repository);
                eClass.loadTreeFromTaggedValue();
                MocaNode eClassMocaNode = MocaTreeUtil.mocaNodeFromXmlString(refactorTreeTag.Notes);

                eClass.addMocaAttributesDuringExport(eClassMocaNode);

                //add baseclass dependencies

                /*foreach (var baseClass in eClassMocaNode.getAttributeOrCreate("baseClasses").Value.Split(" ".ToArray()))
                 * {
                 *  if (baseClass != "")
                 *  {
                 *      SQLElement baseclass = repository.GetElementByGuid(baseClass);
                 *      Export.computeAndAddToDependencies(repository, baseclass);
                 *  }
                 * }*/

                this.currentNode.appendChildNode(eClassMocaNode);

                return(eClassMocaNode);
            }
            return(null);
        }
Пример #4
0
        public void processObjectVariable(SQLElement objectVariable)
        {
            SQLTaggedValue mocaTreeTag = EAEcoreAddin.Util.EAUtil.findTaggedValue(objectVariable, Main.MoflonExportTreeTaggedValueName);

            ObjectVariable ov = new ObjectVariable(objectVariable, repository);

            ov.loadTreeFromTaggedValue();

            SQLElement classifier = EAUtil.getClassifierElement(repository, objectVariable.ClassifierID);

            if (classifier != null)
            {
                Export.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)
            {
                if ((linkVariable.Stereotype == SDMModelingMain.LinkVariableStereotype || linkVariable.Stereotype == "SDM_Association") && linkVariable.ClientID == objectVariable.ElementID)
                {
                    this.currentNode = ovMocaNode.getChildNodeWithName(ObjectVariable.OutgoingLinksNodeName);
                    processLinkVariable(linkVariable);
                }
            }
        }
Пример #5
0
        public void processTggEReference(SQLConnector eaReference, String clientOrSupplier)
        {
            SQLConnectorTag mocaTreeTag = EAEcoreAddin.Util.EAUtil.findTaggedValue(eaReference, Main.MoflonExportTreeTaggedValueName);

            MocaNode referenceEndNode = new MocaNode();

            referenceEndNode.deserializeFromXmlTree(MocaTreeUtil.stringToXmlDocument(mocaTreeTag.Notes).DocumentElement.FirstChild as XmlElement);

            SQLElement eTypeElement = null;

            if (clientOrSupplier == "Client")
            {
                referenceEndNode = referenceEndNode.getChildNodeWithName(EReference.ClientReferenceChildNodeName).Children[0];
                eTypeElement     = repository.GetElementByID(eaReference.ClientID);
            }
            else if (clientOrSupplier == "Supplier")
            {
                referenceEndNode = referenceEndNode.getChildNodeWithName(EReference.SupplierReferenceChildNodeName).Children[0];
                eTypeElement     = repository.GetElementByID(eaReference.SupplierID);
            }

            ExportMain.computeAndAddToDependencies(repository, eTypeElement);

            this.currentNode.appendChildNode(referenceEndNode);
        }
Пример #6
0
        private void savePackageChangesToEATaggedValue(SQLRepository sqlRepository, String GUID)
        {
            SQLPackage sqlPackage = sqlRepository.GetPackageByGuid(GUID);
            EPackage   epackage   = new EPackage(sqlPackage, sqlRepository);
            String     packages   = addPackageName(epackage, "", sqlRepository);

            String previousName = sqlPackage.Name;

            SQLTaggedValue changesTreeTag = EAEcoreAddin.Util.EAUtil.findTaggedValue(sqlPackage, Main.MoflonChangesTreeTaggedValueName);

            if (changesTreeTag != null)
            {
                MocaNode eClassMocaNode = MocaTreeUtil.mocaNodeFromXmlString(changesTreeTag.Notes);
                previousName = eClassMocaNode.getAttribute("previousName").Value;
            }

            CachedPackage temp = new CachedPackage();

            temp.getPackage(GUID, sqlRepository);
            temp.name         = sqlPackage.Name;
            temp.previousName = previousName;
            temp.packageName  = packages;
            temp.projectName  = getTopLevelPackageName(sqlPackage, sqlRepository);
            temp.savePackageToEATaggedValue(true);
        }
Пример #7
0
        private void saveElementChangesToEATaggedValue(SQLElement eaElement, String GUID, SQLRepository sqlRepository)
        {
            SQLPackage package  = sqlRepository.GetPackageByID(eaElement.PackageID);
            EPackage   epackage = new EPackage(package, sqlRepository);
            // String packages = addPackageName(epackage, "", sqlRepository);

            String previousName = eaElement.Name;

            SQLTaggedValue exportTreeTag = EAEcoreAddin.Util.EAUtil.findTaggedValue(eaElement, Main.MoflonExportTreeTaggedValueName);

            /*if (exportTreeTag != null)
             * {
             *  MocaNode eClassMocaNode = MocaTreeUtil.mocaNodeFromXmlString(exportTreeTag.Notes);
             *  MocaNode eClassAttributes = eClassMocaNode.Children[1];
             *  eClassAttributes.getAttribute()
             *
             *  previousName = eClassMocaNode.getAttribute("previousName").Value;
             * }*/

            SQLTaggedValue changesTreeTag = EAEcoreAddin.Util.EAUtil.findTaggedValue(eaElement, Main.MoflonChangesTreeTaggedValueName);

            if (changesTreeTag != null)
            {
                MocaNode eClassMocaNode = MocaTreeUtil.mocaNodeFromXmlString(changesTreeTag.Notes);
                previousName = eClassMocaNode.getAttribute("previousName").Value;
            }
            CachedClass temp = new CachedClass();

            temp.getElement(GUID, sqlRepository);
            temp.name         = eaElement.Name;
            temp.previousName = previousName;
            temp.packageName  = addPackageName(epackage, "", sqlRepository);
            temp.projectName  = getTopLevelPackageName(package, sqlRepository);
            temp.saveElementToEATaggedValue(true);
        }
Пример #8
0
        public MocaNode processEClass(SQLElement eaClass)
        {
            SQLTaggedValue changesTreeTag = EAEcoreAddin.Util.EAUtil.findTaggedValue(eaClass, Main.MoflonChangesTreeTaggedValueName);

            if (changesTreeTag != null)
            {
                EClass eClass = new EClass(eaClass, repository);
                eClass.loadTreeFromTaggedValue();
                MocaNode eClassMocaNode = MocaTreeUtil.mocaNodeFromXmlString(changesTreeTag.Notes);

                eClass.addMocaAttributesDuringExport(eClassMocaNode);

                this.currentNode.appendChildNode(eClassMocaNode);

                if (eClassMocaNode.hasAllAttributes(new List <string>(
                                                        new string[] { ChangesTreeConstants.ATTRIBUTE_KEY_PACKAGE_NAME, ChangesTreeConstants.ATTRIBUTE_KEY_PROJECT_NAME })))
                {
                    String packageName = eClassMocaNode.getAttribute(ChangesTreeConstants.ATTRIBUTE_KEY_PACKAGE_NAME).Value;
                    String projectName = eClassMocaNode.getAttribute(ChangesTreeConstants.ATTRIBUTE_KEY_PROJECT_NAME).Value;

                    CachedClass temp = new CachedClass();
                    temp.getElement(eaClass.ElementGUID, repository);
                    temp.name         = eClass.Name;
                    temp.previousName = eClass.Name;
                    temp.packageName  = packageName;
                    temp.projectName  = projectName;
                    temp.saveElementToEATaggedValue(true);

                    return(eClassMocaNode);
                }
            }
            return(null);
        }
Пример #9
0
        private MocaNode processEPackage(SQLPackage eaPackage)
        {
            //backgroundWorker.ReportProgress(0, PersistencyUtil.computePackageUri(eaPackage, repository));
            //SQLTaggedValue mocaTreeTag = EAEcoreAddin.Util.EAUtil.findTaggedValue(eaPackage, Main.MoflonRefactorTreeTaggedValueName);

            //if (mocaTreeTag == null)
            SQLTaggedValue mocaTreeTag = EAEcoreAddin.Util.EAUtil.findTaggedValue(eaPackage, Main.MoflonExportTreeTaggedValueName);

            if (mocaTreeTag != null)
            {
                EPackage ePackage         = new EPackage(eaPackage, repository);
                MocaNode ePackageMocaNode = MocaTreeUtil.mocaNodeFromXmlString(mocaTreeTag.Notes);
                ePackage.addAttributesDuringExport(ePackageMocaNode);

                this.currentNode.appendChildNode(ePackageMocaNode);

                foreach (SQLElement childClass in eaPackage.Elements)
                {
                    this.currentNode = ePackageMocaNode.getChildNodeWithName(EPackageHelper.ClassesChildNodeName);
                    if (childClass.Stereotype.ToLower() == ECOREModelingMain.EClassStereotype.ToLower())
                    {
                        processEClass(childClass);
                    }
                }

                foreach (SQLPackage childPackage in eaPackage.Packages)
                {
                    this.currentNode = ePackageMocaNode.getChildNodeWithName(EPackageHelper.PackagesChildNodeName);
                    processEPackage(childPackage);
                }

                return(ePackageMocaNode);
            }
            return(null);
        }
        /// <summary>
        /// Deserializes the TaggedValue from the tagged Object
        /// </summary>
        /// <returns></returns>
        public Boolean loadTreeFromTaggedValue()
        {
            String tagNotes = "";

            Object mocaTag          = null;
            Object objectToBeTagged = getObjectToBeTagged();

            if (objectToBeTagged is SQLElement)
            {
                mocaTag = EAUtil.findTaggedValue(objectToBeTagged as SQLElement, Main.MoflonExportTreeTaggedValueName);
            }
            else if (objectToBeTagged is SQLConnector)
            {
                mocaTag = EAUtil.findTaggedValue(objectToBeTagged as SQLConnector, Main.MoflonExportTreeTaggedValueName);
            }
            else if (objectToBeTagged is SQLPackage)
            {
                mocaTag = EAUtil.findTaggedValue(objectToBeTagged as SQLPackage, Main.MoflonExportTreeTaggedValueName);
            }
            else if (objectToBeTagged is SQLMethod)
            {
                mocaTag = EAUtil.findTaggedValue(Repository.GetOriginalRepository().GetMethodByID((objectToBeTagged as SQLMethod).MethodID), Main.MoflonExportTreeTaggedValueName);
            }
            if (mocaTag is SQLTaggedValue)
            {
                tagNotes = (mocaTag as SQLTaggedValue).Notes;
            }
            else if (mocaTag is SQLConnectorTag)
            {
                tagNotes = (mocaTag as SQLConnectorTag).Notes;
            }
            else if (mocaTag is EA.MethodTag)
            {
                tagNotes = (mocaTag as EA.MethodTag).Notes;
            }

            if (tagNotes != "")
            {
                XmlDocument xmlDocument   = MocaTreeUtil.stringToXmlDocument(tagNotes);
                MocaNode    emptyMocaNode = new MocaNode();

                //fill mocanode from xmlElement
                emptyMocaNode.deserializeFromXmlTree(xmlDocument.FirstChild.FirstChild as XmlElement);

                //fill this from mocanode

                try
                {
                    deserializeFromMocaTree(emptyMocaNode);
                }
                catch
                {
                    return(false);
                }
                return(true);
            }
            return(false);
        }
Пример #11
0
        private void processTGGCSP(SQLElement element)
        {
            SQLTaggedValue mocaTreeTag = EAEcoreAddin.Util.EAUtil.findTaggedValue(element, Main.MoflonExportTreeTaggedValueName);

            if (mocaTreeTag != null)
            {
                MocaNode tggRuleMocaNode = new MocaNode();
                tggRuleMocaNode.deserializeFromXmlTree(MocaTreeUtil.stringToXmlDocument(mocaTreeTag.Notes).DocumentElement.FirstChild as XmlElement);
                this.currentNode.appendChildNode(tggRuleMocaNode);
            }
        }
Пример #12
0
        public void processEEnum(SQLElement eaEnum)
        {
            SQLTaggedValue mocaTreeTag = EAEcoreAddin.Util.EAUtil.findTaggedValue(eaEnum, Main.MoflonExportTreeTaggedValueName);

            if (mocaTreeTag != null)
            {
                MocaNode eEnumMocaNode = new MocaNode();
                eEnumMocaNode.deserializeFromXmlTree(MocaTreeUtil.stringToXmlDocument(mocaTreeTag.Notes).DocumentElement.FirstChild as XmlElement);
                this.currentNode.appendChildNode(eEnumMocaNode);
            }
        }
Пример #13
0
        public void addChangesAttributesDuringExport(MocaNode pkgNode, SQLTaggedValue changesTreeTag)
        {
            MocaNode ePackageMocaNode = MocaTreeUtil.mocaNodeFromXmlString(changesTreeTag.Notes);

            string[] expectedAttributes = { ChangesTreeConstants.ATTRIBUTE_KEY_NAME, ChangesTreeConstants.ATTRIBUTE_KEY_PREVIOUS_NAME, ChangesTreeConstants.ATTRIBUTE_KEY_PACKAGE_NAME, ChangesTreeConstants.ATTRIBUTE_KEY_PROJECT_NAME };
            if (ePackageMocaNode.hasAllAttributes(new List <string>(expectedAttributes)))
            {
                pkgNode.appendChildAttribute("Changes::Name", ePackageMocaNode.getAttribute(ChangesTreeConstants.ATTRIBUTE_KEY_NAME).Value);
                pkgNode.appendChildAttribute("Changes::PreviousName", ePackageMocaNode.getAttribute(ChangesTreeConstants.ATTRIBUTE_KEY_PREVIOUS_NAME).Value);
                pkgNode.appendChildAttribute("Changes::PackageName", ePackageMocaNode.getAttribute(ChangesTreeConstants.ATTRIBUTE_KEY_PACKAGE_NAME).Value);
                pkgNode.appendChildAttribute("Changes::ProjectName", ePackageMocaNode.getAttribute(ChangesTreeConstants.ATTRIBUTE_KEY_PROJECT_NAME).Value);
                //pkgNode.appendChildAttribute("Changes::IsTLP", ePackageMocaNode.getAttribute("isTLP").Value);
            }
        }
Пример #14
0
        public void processActivityEdge(SQLConnector activityEdgeEAElement)
        {
            SQLConnectorTag mocaTreeTag = EAEcoreAddin.Util.EAUtil.findTaggedValue(activityEdgeEAElement, Main.MoflonExportTreeTaggedValueName);

            ActivityEdge aEdge = new ActivityEdge(repository, activityEdgeEAElement);
            Boolean      valid = aEdge.loadTreeFromTaggedValue();
            MocaNode     activityEdgeMocaNode = new MocaNode();

            activityEdgeMocaNode.deserializeFromXmlTree(MocaTreeUtil.stringToXmlDocument(mocaTreeTag.Notes).DocumentElement.FirstChild as XmlElement);

            aEdge.addAttributesDuringExport(activityEdgeMocaNode);

            this.currentNode.appendChildNode(activityEdgeMocaNode);
        }
Пример #15
0
        private MocaNode processEPackage(SQLPackage eaPackage)
        {
            SQLTaggedValue mocaTreeTag = EAEcoreAddin.Util.EAUtil.findTaggedValue(eaPackage, Main.MoflonExportTreeTaggedValueName);

            if (mocaTreeTag != null)
            {
                EPackage ePackage         = new EPackage(eaPackage, repository);
                MocaNode ePackageMocaNode = MocaTreeUtil.mocaNodeFromXmlString(mocaTreeTag.Notes);

                SQLTaggedValue changesTreeTag = EAEcoreAddin.Util.EAUtil.findTaggedValue(eaPackage, Main.MoflonChangesTreeTaggedValueName);
                if (changesTreeTag != null)
                {
                    MocaNode ePackageChangesMocaNode = MocaTreeUtil.mocaNodeFromXmlString(changesTreeTag.Notes);
                    if (ePackageChangesMocaNode.hasAllAttributes(new List <string>(
                                                                     new string[] { ChangesTreeConstants.ATTRIBUTE_KEY_PACKAGE_NAME, ChangesTreeConstants.ATTRIBUTE_KEY_PROJECT_NAME })))
                    {
                        ePackage.addChangesAttributesDuringExport(ePackageMocaNode, changesTreeTag);

                        CachedPackage temp = new CachedPackage();
                        temp.getPackage(eaPackage.PackageGUID, repository);
                        temp.name         = eaPackage.Name;
                        temp.previousName = eaPackage.Name;
                        temp.packageName  = ePackageChangesMocaNode.getAttribute(ChangesTreeConstants.ATTRIBUTE_KEY_PACKAGE_NAME).Value;
                        temp.projectName  = ePackageChangesMocaNode.getAttribute(ChangesTreeConstants.ATTRIBUTE_KEY_PROJECT_NAME).Value;
                        temp.savePackageToEATaggedValue(true);
                    }
                }

                ePackage.addAttributesDuringExport(ePackageMocaNode);
                this.currentNode.appendChildNode(ePackageMocaNode);

                foreach (SQLElement childClass in eaPackage.Elements)
                {
                    this.currentNode = ePackageMocaNode.getChildNodeWithName(EPackageHelper.ClassesChildNodeName);
                    if (childClass.Stereotype.ToLower() == ECOREModelingMain.EClassStereotype.ToLower())
                    {
                        processEClass(childClass);
                    }
                }

                foreach (SQLPackage childPackage in eaPackage.Packages)
                {
                    this.currentNode = ePackageMocaNode.getChildNodeWithName(EPackageHelper.PackagesChildNodeName);
                    processEPackage(childPackage);
                }

                return(ePackageMocaNode);
            }
            return(null);
        }
Пример #16
0
        private MocaNode processEPackage(SQLPackage eaPackage)
        {
            backgroundWorker.ReportProgress(0, PersistencyUtil.computePackageUri(eaPackage, repository));
            SQLTaggedValue mocaTreeTag = EAEcoreAddin.Util.EAUtil.findTaggedValue(eaPackage, Main.MoflonExportTreeTaggedValueName);


            if (mocaTreeTag != null)
            {
                EPackage ePackage = new EPackage(eaPackage, repository);


                MocaNode ePackageMocaNode = MocaTreeUtil.mocaNodeFromXmlString(mocaTreeTag.Notes);

                ePackage.addAttributesDuringExport(ePackageMocaNode);

                this.currentNode.appendChildNode(ePackageMocaNode);
                int counter = 0;
                foreach (SQLElement childClass in eaPackage.Elements)
                {
                    if (!Export.showStatusBar)
                    {
                        Console.Out.WriteLine("SCALE:Export Classifier '" + childClass.Name + "' %" + counter + "/" + eaPackage.Elements.Count + "#");
                    }
                    counter++;
                    this.currentNode = ePackageMocaNode.getChildNodeWithName(EPackageHelper.ClassesChildNodeName);
                    if (childClass.Stereotype.ToLower() == ECOREModelingMain.EClassStereotype.ToLower())
                    {
                        processEClass(childClass);
                    }
                    else if (childClass.Stereotype.ToLower() == ECOREModelingMain.EDatatypeStereotype.ToLower())
                    {
                        processEDatatype(childClass);
                    }
                    else if (childClass.Stereotype.ToLower() == ECOREModelingMain.EEnumStereotype.ToLower())
                    {
                        processEEnum(childClass);
                    }
                }

                foreach (SQLPackage childPackage in eaPackage.Packages)
                {
                    this.currentNode = ePackageMocaNode.getChildNodeWithName(EPackageHelper.PackagesChildNodeName);
                    processEPackage(childPackage);
                }

                return(ePackageMocaNode);
            }
            return(null);
        }
Пример #17
0
        internal void finalize()
        {
            XmlDocument xmlDoc = MocaTreeUtil.createMocaXMLDoc();

            xmlDoc.DocumentElement.AppendChild(this.MocaTree.serializeToXmlTree(xmlDoc));
            writeDocumentToFile(xmlDoc, null);

            //track changes
            XmlDocument xmlRefactorDoc = MocaTreeUtil.createMocaXMLDoc();

            xmlRefactorDoc.DocumentElement.AppendChild(this.ChangesTree.serializeToXmlTree(xmlRefactorDoc));
            writeDocumentToFile(xmlRefactorDoc, "changes");

            ExportRunning = false;
        }
Пример #18
0
        public void processTggLinkVariable(SQLConnector linkVariable)
        {
            SQLConnectorTag mocaTreeTag = EAEcoreAddin.Util.EAUtil.findTaggedValue(linkVariable, Main.MoflonExportTreeTaggedValueName);

            TGGLinkVariable lv    = new TGGLinkVariable(linkVariable, repository);
            Boolean         valid = lv.loadTreeFromTaggedValue();

            MocaNode linkVariableMocaNode = new MocaNode();

            linkVariableMocaNode.deserializeFromXmlTree(MocaTreeUtil.stringToXmlDocument(mocaTreeTag.Notes).DocumentElement.FirstChild as XmlElement);

            lv.addAttributesDuringExport(linkVariableMocaNode);

            this.currentNode.appendChildNode(linkVariableMocaNode);
        }
Пример #19
0
        public String getXMLDocumentString()
        {
            //create xml stub with a single root node
            XmlDocument xmlDocStub = MocaTreeUtil.createMocaXMLDoc();
            //parse this object to moca element tree
            MocaNode treeElement = this.serializeToMocaTree();

            //parse moca element to xmlElement tree
            XmlElement serializedMocaRoot = treeElement.serializeToXmlTree(xmlDocStub);

            //append new xmlElement to xmlDocument
            xmlDocStub.FirstChild.AppendChild(serializedMocaRoot);

            String documentString = MocaTreeUtil.xmlDocumentToString(xmlDocStub);

            return(documentString);
        }
Пример #20
0
        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);
        }
Пример #21
0
        private void buttonImportCSP_Click(object sender, EventArgs e)
        {
            checkForFunctions();
            if (activateExportImportCSPButton)
            {
                String pathToWrite = Path.GetDirectoryName(repository.ConnectionString);

                OpenFileDialog dialog = new OpenFileDialog();
                dialog.AddExtension     = true;
                dialog.DefaultExt       = "txt";
                dialog.InitialDirectory = pathToWrite;
                dialog.Filter           = "Text files (*.txt)|*.txt|All files (*.*)|*.*";
                dialog.FileName         = "csptemp.txt";

                if (dialog.ShowDialog() == DialogResult.OK)
                {
                    TGG tggPackage = new TGG(repository, repository.GetTreeSelectedPackage());
                    tggPackage.loadTreeFromTaggedValue();

                    String   fileContent = File.ReadAllText(dialog.FileName);
                    MocaNode dummyParent = MocaTreeUtil.mocaNodeFromXmlString(fileContent);
                    foreach (MocaNode cspNode in dummyParent.Children)
                    {
                        CSPConstraint constraint = new CSPConstraint();
                        constraint.deserializeFromMocaTree(cspNode);
                        Boolean alreadyIn = false;
                        foreach (CSPConstraint existingCSP in tggPackage.Constraints)
                        {
                            if (existingCSP.Name == constraint.Name)
                            {
                                alreadyIn = true;
                                break;
                            }
                        }

                        if (!alreadyIn)
                        {
                            tggPackage.Constraints.Add(constraint);
                        }
                    }

                    tggPackage.saveTreeToEATaggedValue(false);
                }
            }
        }
Пример #22
0
        public void processTGGCorrespondenceType(SQLElement eaClass)
        {
            SQLTaggedValue        mocaTreeTag = EAEcoreAddin.Util.EAUtil.findTaggedValue(eaClass, Main.MoflonExportTreeTaggedValueName);
            TGGCorrespondenceType tggCorrType = new TGGCorrespondenceType(eaClass, repository);

            tggCorrType.loadTreeFromTaggedValue();
            MocaNode eClassMocaNode = new MocaNode();

            eClassMocaNode.deserializeFromXmlTree(MocaTreeUtil.stringToXmlDocument(mocaTreeTag.Notes).DocumentElement.FirstChild as XmlElement);

            tggCorrType.addMocaAttributesDuringExport(eClassMocaNode);

            this.currentNode.appendChildNode(eClassMocaNode);

            foreach (SQLConnector ereference in eaClass.Connectors)
            {
                if (ereference.Type == Main.EAAssociationType)
                {
                    MocaNode referencesNode = eClassMocaNode.getChildNodeWithName(EClass.ReferencesChildNodeName);

                    if (ereference.ClientID != eaClass.ElementID && ereference.ClientEnd.IsNavigable)
                    {
                        this.currentNode = referencesNode;
                        processTggEReference(ereference, ereference.ClientEnd.End);
                    }
                    else if (ereference.SupplierID != eaClass.ElementID && ereference.SupplierEnd.IsNavigable)
                    {
                        this.currentNode = referencesNode;
                        processTggEReference(ereference, ereference.SupplierEnd.End);
                    }

                    if (ereference.SupplierID == eaClass.ElementID && ereference.ClientID == eaClass.ElementID && ereference.SupplierEnd.IsNavigable)
                    {
                        this.currentNode = referencesNode;
                        processTggEReference(ereference, ereference.SupplierEnd.End);
                    }
                    if (ereference.SupplierID == eaClass.ElementID && ereference.ClientID == eaClass.ElementID && ereference.ClientEnd.IsNavigable)
                    {
                        this.currentNode = referencesNode;
                        processTggEReference(ereference, ereference.ClientEnd.End);
                    }
                }
            }
        }
Пример #23
0
        public MocaNode processTggOutermostPackage(SQLPackage tggOutermostPackage)
        {
            backgroundWorker.ReportProgress(0, PersistencyUtil.computePackageUri(tggOutermostPackage, repository));


            this.currentNode = new MocaNode();

            SQLTaggedValue mocaTreeTag = EAEcoreAddin.Util.EAUtil.findTaggedValue(tggOutermostPackage, Main.MoflonExportTreeTaggedValueName);

            TGG tgg = new TGG(repository, tggOutermostPackage);

            tgg.loadTreeFromTaggedValue();
            XmlDocument xmlDoc = MocaTreeUtil.stringToXmlDocument(mocaTreeTag.Notes);

            MocaNode ePackageMocaNode = new MocaNode();

            ePackageMocaNode.deserializeFromXmlTree(xmlDoc.DocumentElement.FirstChild as XmlElement);

            tgg.addAttributesDuringExport(ePackageMocaNode);

            this.currentNode.appendChildNode(ePackageMocaNode);
            foreach (SQLPackage childPackage in tggOutermostPackage.Packages)
            {
                this.currentNode = ePackageMocaNode.getChildNodeWithName(EPackageHelper.PackagesChildNodeName);
                processTggPackage(childPackage);
            }
            foreach (SQLElement childClass in tggOutermostPackage.Elements)
            {
                processTGGPackageFeatures(ePackageMocaNode, childClass);
            }
            SQLTaggedValue moflonExportTag = EAEcoreAddin.Util.EAUtil.findTaggedValue(tggOutermostPackage, MetamodelHelper.MoflonExportTaggedValueName);

            if (moflonExportTag != null)
            {
                ePackageMocaNode.appendChildAttribute(MetamodelHelper.MoflonExportTaggedValueName, moflonExportTag.Value);
            }
            else
            {
                ePackageMocaNode.appendChildAttribute(MetamodelHelper.MoflonExportTaggedValueName, "false");
            }

            return(ePackageMocaNode);
        }
Пример #24
0
        private MocaNode processTggPackage(SQLPackage eaPackage)
        {
            backgroundWorker.ReportProgress(0, PersistencyUtil.computePackageUri(eaPackage, repository));

            EPackage ePackage = new EPackage(eaPackage, repository);

            if (eaPackage.Element.Stereotype == TGGModelingMain.TggRulePackageStereotype || eaPackage.Name == "Rules")
            {
                ePackage = new TGGRulePackage(eaPackage, repository);
            }

            ePackage.loadTreeFromTaggedValue();

            SQLTaggedValue mocaTreeTag = EAEcoreAddin.Util.EAUtil.findTaggedValue(eaPackage, Main.MoflonExportTreeTaggedValueName);
            XmlDocument    xmlDoc      = MocaTreeUtil.stringToXmlDocument(mocaTreeTag.Notes);

            MocaNode ePackageMocaNode = new MocaNode();

            ePackageMocaNode.deserializeFromXmlTree(xmlDoc.DocumentElement.FirstChild as XmlElement);

            ePackage.addAttributesDuringExport(ePackageMocaNode);

            this.currentNode.appendChildNode(ePackageMocaNode);

            foreach (SQLPackage childPackage in eaPackage.Packages)
            {
                this.currentNode = ePackageMocaNode.getChildNodeWithName(EPackageHelper.PackagesChildNodeName);
                processTggPackage(childPackage);
            }


            foreach (SQLElement childClass in eaPackage.Elements)
            {
                processTGGPackageFeatures(ePackageMocaNode, childClass);
            }


            return(ePackageMocaNode);
        }
Пример #25
0
        public MocaNode processActivity(SQLElement sdmContainerClass)
        {
            SQLTaggedValue mocaTreeTag = EAEcoreAddin.Util.EAUtil.findTaggedValue(sdmContainerClass, Main.MoflonExportTreeTaggedValueName);

            Activity activity         = new Activity(sdmContainerClass, repository);
            Boolean  valid            = activity.loadTreeFromTaggedValue();
            MocaNode activityMocaNode = new MocaNode();

            activityMocaNode.deserializeFromXmlTree(MocaTreeUtil.stringToXmlDocument(mocaTreeTag.Notes).DocumentElement.FirstChild as XmlElement);
            this.currentNode = activityMocaNode;

            foreach (SQLElement activityNode in sdmContainerClass.Elements)
            {
                if (activityNode.Type == Main.EAActivityType || activityNode.Type == Main.EAStateNodeType)
                {
                    this.currentNode = activityMocaNode;
                    processActivityNode(activityNode);
                }
            }

            return(activityMocaNode);
        }
Пример #26
0
        private void buttonExportCsp_Click(object sender, EventArgs e)
        {
            checkForFunctions();
            if (activateExportImportCSPButton)
            {
                String cspXmlString = "";

                String pathToWrite = Path.GetDirectoryName(repository.ConnectionString);

                SaveFileDialog dialog = new SaveFileDialog();
                dialog.AddExtension     = true;
                dialog.DefaultExt       = "txt";
                dialog.InitialDirectory = pathToWrite;
                dialog.Filter           = "Text files (*.txt)|*.txt|All files (*.*)|*.*";
                dialog.FileName         = "csptemp.txt";



                if (dialog.ShowDialog() == DialogResult.OK)
                {
                    TGG tggPackage = new TGG(repository, repository.GetTreeSelectedPackage());
                    tggPackage.loadTreeFromTaggedValue();
                    MocaNode dummyNode = new MocaNode();

                    foreach (CSPConstraint constraint in tggPackage.Constraints)
                    {
                        if (constraint.UserDefined)
                        {
                            dummyNode.Children.Add(constraint.serializeToMocaTree(new MocaNode("CSPConstraint")));
                        }
                    }
                    cspXmlString = MocaTreeUtil.mocaNodeToString(dummyNode);

                    pathToWrite = dialog.FileName;
                    File.WriteAllText(pathToWrite, cspXmlString);
                    MessageBox.Show("User defined CSPs are exported to path: " + pathToWrite);
                }
            }
        }
        /// <summary>
        /// Serializes the current Object 1. to MocaTree and 2. to XmlDocument and saves the XmlDocument
        /// represented as String to a TaggedValue. Last some EA GUI stuff is done which is used to make sure that
        /// the visualization in EA works correctly.
        /// </summary>
        public void saveTreeToEATaggedValue(Boolean updateEaGui)
        {
            String documentString = "";

            if (!this.isIgnored())
            {
                //create xml stub with a single root node
                XmlDocument xmlDocStub = MocaTreeUtil.createMocaXMLDoc();
                //parse this object to moca element tree
                MocaNode treeElement = this.serializeToMocaTree();

                //parse moca element to xmlElement tree
                XmlElement serializedMocaRoot = treeElement.serializeToXmlTree(xmlDocStub);

                //append new xmlElement to xmlDocument
                xmlDocStub.FirstChild.AppendChild(serializedMocaRoot);

                documentString = MocaTreeUtil.xmlDocumentToString(xmlDocStub);
            }

            if (Import.MainImport.ImportBusy)
            {
                foreach (String oldGuid in Import.MainImport.getInstance(Repository, null).OldGuidToNewGuid.Keys)
                {
                    documentString = documentString.Replace(oldGuid, Import.MainImport.getInstance(Repository, null).OldGuidToNewGuid[oldGuid]);
                }
            }
            if (!isLocked())
            {
                EAEcoreAddin.Util.EAUtil.setTaggedValueNotes(Repository, getObjectToBeTagged(), Main.MoflonExportTreeTaggedValueName, documentString);
                if (updateEaGui)
                {
                    doEaGuiStuff();
                }
            }

            refreshSQLObject();
        }
Пример #28
0
        public MocaNode processEClass(SQLElement eaClass)
        {
            //this.exportProgressBar.invokePerformNext("Exporting EClass: " + eaClass.Name);

            SQLTaggedValue changesTreeTag = EAEcoreAddin.Util.EAUtil.findTaggedValue(eaClass, Main.MoflonChangesTreeTaggedValueName);


            SQLTaggedValue mocaTreeTag = EAEcoreAddin.Util.EAUtil.findTaggedValue(eaClass, Main.MoflonExportTreeTaggedValueName);

            if (mocaTreeTag != null)
            {
                EClass eClass = new EClass(eaClass, repository);
                eClass.loadTreeFromTaggedValue();
                MocaNode eClassMocaNode = MocaTreeUtil.mocaNodeFromXmlString(mocaTreeTag.Notes);

                eClass.addMocaAttributesDuringExport(eClassMocaNode);

                if (changesTreeTag != null)
                {
                    MocaNode eClassChangesNode = MocaTreeUtil.mocaNodeFromXmlString(changesTreeTag.Notes);
                    eClass.addMocaAttributesDuringExport(eClassChangesNode);
                }
                //add baseclass dependencies
                foreach (var baseClass in eClassMocaNode.getAttributeOrCreate("baseClasses").Value.Split(" ".ToArray()))
                {
                    if (baseClass != "")
                    {
                        SQLElement baseclass = repository.GetElementByGuid(baseClass);
                        Export.computeAndAddToDependencies(repository, baseclass);
                    }
                }

                this.currentNode.appendChildNode(eClassMocaNode);

                //process SDM Container Objects
                int counter = 0;
                foreach (SQLElement possibleSDMContainer in eaClass.Elements)
                {
                    if (possibleSDMContainer.Stereotype == SDMModelingMain.SdmContainerStereotype || possibleSDMContainer.Stereotype == "SDM_Container")
                    {
                        String   associatedMethodguid = EAEcoreAddin.Util.EAUtil.findTaggedValue(possibleSDMContainer, SDMModelingMain.SDMContainerAssociatedMethodTaggedValueName).Value;
                        MocaNode operationsNode       = eClassMocaNode.getChildNodeWithName(EClass.OperationsChildNodeName);
                        MocaNode owningOperationNode  = null;
                        if (!Export.showStatusBar)
                        {
                            Console.Out.WriteLine("SCALE:Export SDM '" + possibleSDMContainer.Name + "' %" + counter + "/" + eaClass.Elements.Count + "#");
                        }
                        counter++;
                        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.sdmExport.processActivity(possibleSDMContainer);
                            owningOperationNode.appendChildNode(sdmActivityNode);
                        }
                    }
                }

                foreach (SQLAttribute element in eaClass.Attributes)
                {
                    string     t           = element.Type;
                    int        cid         = element.ClassifierID;
                    SQLElement typeElement = repository.GetElementByIDNullable(cid);
                    Export.computeAndAddToDependencies(repository, typeElement);
                }

                counter = 0;
                foreach (SQLConnector ereference in eaClass.Connectors)
                {
                    if (ereference.Type == Main.EAAssociationType)
                    {
                        if (!Export.showStatusBar)
                        {
                            Console.Out.WriteLine("SCALE:Export EReference '" + ereference.Name + "' %" + counter + "/" + eaClass.Connectors.Count + "#");
                        }
                        counter++;
                        MocaNode referencesNode = eClassMocaNode.getChildNodeWithName(EClass.ReferencesChildNodeName);

                        if (ereference.ClientID != eaClass.ElementID && ereference.ClientEnd.IsNavigable)
                        {
                            this.currentNode = referencesNode;
                            processEReference(ereference, ereference.ClientEnd.End);
                        }
                        else if (ereference.SupplierID != eaClass.ElementID && ereference.SupplierEnd.IsNavigable)
                        {
                            this.currentNode = referencesNode;
                            processEReference(ereference, ereference.SupplierEnd.End);
                        }

                        if (ereference.SupplierID == eaClass.ElementID && ereference.ClientID == eaClass.ElementID && ereference.SupplierEnd.IsNavigable)
                        {
                            this.currentNode = referencesNode;
                            processEReference(ereference, ereference.SupplierEnd.End);
                        }
                        if (ereference.SupplierID == eaClass.ElementID && ereference.ClientID == eaClass.ElementID && ereference.ClientEnd.IsNavigable)
                        {
                            this.currentNode = referencesNode;
                            processEReference(ereference, ereference.ClientEnd.End);
                        }
                    }
                }
                return(eClassMocaNode);
            }
            return(null);
        }
Пример #29
0
        public void processActivityNode(SQLElement activityNodeEAElement)
        {
            if (Serialization.MocaTaggableElement.isIgnored(activityNodeEAElement))
            {
                return;
            }

            ActivityNode actNode = null;

            if (activityNodeEAElement.Stereotype == "StoryNode" || activityNodeEAElement.Elements.Count > 0 || (activityNodeEAElement.Elements.Count == 0 && activityNodeEAElement.Notes == "" && activityNodeEAElement.Subtype != 100 && activityNodeEAElement.Subtype != 101))
            {
                actNode = new StoryNode(repository, activityNodeEAElement);
            }
            else if (activityNodeEAElement.Stereotype == "StopNode" || activityNodeEAElement.Subtype == 101)
            {
                actNode = new StopNode(repository, activityNodeEAElement);
            }
            else if (activityNodeEAElement.Stereotype == "StartNode" || activityNodeEAElement.Subtype == 100)
            {
                actNode = new StartNode(repository, activityNodeEAElement);
            }
            else if (activityNodeEAElement.Stereotype == "StatementNode" || (activityNodeEAElement.Elements.Count == 0 && activityNodeEAElement.Notes != ""))
            {
                actNode = new StatementNode(repository, activityNodeEAElement);
            }

            Boolean        valid       = actNode.loadTreeFromTaggedValue();
            SQLTaggedValue mocaTreeTag = EAEcoreAddin.Util.EAUtil.findTaggedValue(activityNodeEAElement, Main.MoflonExportTreeTaggedValueName);

            MocaNode activityNodeMocaNode = new MocaNode();

            activityNodeMocaNode.deserializeFromXmlTree(MocaTreeUtil.stringToXmlDocument(mocaTreeTag.Notes).DocumentElement.FirstChild as XmlElement);
            this.currentNode.appendChildNode(activityNodeMocaNode);

            foreach (SQLConnector activityEdge in activityNodeEAElement.Connectors)
            {
                if ((activityEdge.Stereotype == SDMModelingMain.ActivityEdgeStereotype || activityEdge.Stereotype == "") && activityEdge.Type == "ControlFlow" && activityEdge.ClientID == activityNodeEAElement.ElementID)
                {
                    this.currentNode = activityNodeMocaNode.getChildNodeWithName(ActivityNode.OutgoingTransitionsNodeName);
                    processActivityEdge(activityEdge);
                }
            }
            foreach (SQLElement storyNodeChild in activityNodeEAElement.Elements)
            {
                if (storyNodeChild.Stereotype == SDMModelingMain.ObjectVariableStereotype || storyNodeChild.Stereotype == "SDM_Object")
                {
                    this.currentNode = activityNodeMocaNode.getChildNodeWithName(StoryPattern.ObjectVariablesChildNodeName);
                    processObjectVariable(storyNodeChild);
                }
                else if (storyNodeChild.Stereotype == SDMModelingMain.CSPInstanceStereotype)
                {
                    this.currentNode = activityNodeMocaNode.getChildNodeWithName("AttributeConstraints");
                    if (currentNode == null)
                    {
                        this.currentNode = activityNodeMocaNode.appendChildNode("AttributeConstraints");
                    }

                    MocaNode cspNode = currentNode.appendChildNode("AttributeConstraint");
                    cspNode.appendChildAttribute("constraintSpec", storyNodeChild.Notes);
                    SQLTaggedValue nacIndexTag = EAUtil.findTaggedValue(storyNodeChild, "nacIndex");
                    if (nacIndexTag != null)
                    {
                        String nacIndex = nacIndexTag.Value;
                        cspNode.appendChildAttribute("nacIndex", nacIndex != "" ? nacIndex : "-1");
                    }
                }
            }
        }