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);
            }
        }
Example #2
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();
            }
        }
        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);
            }
        }