コード例 #1
0
        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);
            }
        }
コード例 #2
0
        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);
            }
        }