Ejemplo n.º 1
0
        public override List <string> doRule(SQLElement eaElement, SQLWrapperClasses.SQLRepository repository)
        {
            List <String> results = new List <string>();

            if (eaElement.Stereotype == TGGModelingMain.CSPConstraintStereotype || eaElement.Stereotype == "TGGCsp")
            {
                SQLElement parentElement = repository.GetElementByID(eaElement.ParentID);
                if (parentElement.Stereotype != SDMModelingMain.StoryNodeStereotype)
                {
                    CSPInstance csp = new CSPInstance(repository, eaElement);
                    if (csp.loadTreeFromTaggedValue())
                    {
                        foreach (CSPInstanceEntry instance in csp.createdEntries)
                        {
                            foreach (Expression exp in instance.typedInExpressions)
                            {
                                if (!ConsistencyUtil.checkExpression(eaElement, exp, repository))
                                {
                                    results.Add("Tgg CSP expression is invalid: " + exp);
                                }
                            }
                        }
                    }
                    else
                    {
                        results.Add("Tgg CSP is outdated and maybe erroneous - updating it manually is recommended");
                    }
                }
            }
            else if (eaElement.Type == "Constraint")
            {
                results.Add("Tgg CSP is outdated and cant be modified - quickfix is recommended");
            }

            return(results);
        }
Ejemplo n.º 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);
            }
        }