Example #1
0
        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");
            }
        }
Example #3
0
 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();
 }
Example #4
0
 public EA.Element getRealElement()
 {
     if (realElem == null)
     {
         realElem = EAUtil.sqlEAObjectToOriginalObject(repository, this) as EA.Element;
     }
     return(realElem);
 }
Example #5
0
        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);
                }
            }
        }
Example #6
0
        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();
     }
 }
Example #9
0
 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();
 }
Example #10
0
        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);
                }
            }
        }
Example #11
0
        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();
            }
        }
Example #13
0
        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);
        }