Example #1
0
        public override void correct()
        {
            EAOutputLogger.log(this.model, this.outputName
                               , string.Format("{0} Starting fix notes'"
                                               , DateTime.Now.ToLongTimeString())
                               , 0
                               , LogTypeEnum.log);

            // get al the diagrams
            foreach (var mdDiagramKeyValue in magicDrawReader.allDiagrams)
            {
                var mdDiagram     = mdDiagramKeyValue.Value;
                var ownerID       = magicDrawReader.getDiagramOnwerID(mdDiagramKeyValue.Key);
                var parentElement = getElementByMDid(ownerID);

                foreach (var mdDiagramNote in mdDiagram.diagramNotes)
                {
                    if (parentElement != null)
                    {
                        //create a new note
                        TSF_EA.NoteComment newNote = this.model.factory.createNewElement <TSF_EA.NoteComment>(parentElement, string.Empty);
                        //add the comments to the note
                        newNote.ownedComments.FirstOrDefault().body = model.convertToEANotes(mdDiagramNote.text, "HTML");
                        //save the note
                        newNote.save();
                        //add the tagged value md_guid
                        newNote.addTaggedValue("md_guid", mdDiagramNote.note_Id);

                        //links
                        var linkedElement = getElementByMDid(mdDiagramNote.linkedElement);
                        if (linkedElement != null)
                        {
                            TSF_EA.ConnectorWrapper noteLink = newNote.addOwnedElement <TSF_EA.ConnectorWrapper>(string.Empty, "NoteLink");
                            noteLink.target = linkedElement;
                            noteLink.save();
                        }

                        EAOutputLogger.log(this.model, this.outputName
                                           , string.Format("{0} Create new note '{1}'"
                                                           , DateTime.Now.ToLongTimeString()
                                                           , newNote.ownedComments.FirstOrDefault().body)

                                           , parentElement.id
                                           , LogTypeEnum.log);
                    }
                }
            }


            //Log finished
            EAOutputLogger.log(this.model, this.outputName
                               , string.Format("{0} Finished fix notes"
                                               , DateTime.Now.ToLongTimeString())
                               , 0
                               , LogTypeEnum.log);
        }
        public override void correct()
        {
            EAOutputLogger.log(this.model, this.outputName
                               , string.Format("{0} Starting fix notes'"
                                               , DateTime.Now.ToLongTimeString())
                               , 0
                               , LogTypeEnum.log);

            // get al the diagrams
            foreach (var mdDiagramKeyValue in magicDrawReader.allDiagrams)
            {
                var mdDiagram     = mdDiagramKeyValue.Value;
                var ownerID       = magicDrawReader.getDiagramOnwerID(mdDiagramKeyValue.Key);
                var parentElement = getElementByMDid(ownerID);



                foreach (var mdDiagramNote in mdDiagram.diagramNotes)
                {
                    if (parentElement != null)
                    {
                        TSF_EA.NoteComment newNote = this.model.factory.createNewElement <TSF_EA.NoteComment>(parentElement, string.Empty);
                        newNote.ownedComments.FirstOrDefault().body = mdDiagramNote.text;
                        newNote.save();

                        var linkedElement = getElementByMDid(mdDiagramNote.linkedElement);
                        if (linkedElement != null)
                        {
                            TSF_EA.ConnectorWrapper noteLink = newNote.addOwnedElement <TSF_EA.ConnectorWrapper>(string.Empty, "NoteLink");
                            noteLink.target = linkedElement;
                            noteLink.save();
                            EAOutputLogger.log(this.model, this.outputName
                                               , string.Format("{0} Create note '{1}' for '{2}'"
                                                               , DateTime.Now.ToLongTimeString()
                                                               , newNote.ownedComments.FirstOrDefault().body
                                                               , getElementByMDid(mdDiagramNote.linkedElement).name)
                                               , newNote.id
                                               , LogTypeEnum.log);
                        }
                        else
                        {
                            EAOutputLogger.log(this.model, this.outputName
                                               , string.Format("{0} Create note '{1}'"
                                                               , DateTime.Now.ToLongTimeString()
                                                               , newNote.ownedComments.FirstOrDefault().body)

                                               , newNote.id
                                               , LogTypeEnum.log);
                        }
                    }
                    else
                    {
                        EAOutputLogger.log(this.model, this.outputName
                                           , string.Format("{0} No parent for note '{1}'"
                                                           , DateTime.Now.ToLongTimeString()
                                                           , mdDiagramNote.text)

                                           , 0
                                           , LogTypeEnum.log);
                    }
                }
            }


            //Log finished
            EAOutputLogger.log(this.model, this.outputName
                               , string.Format("{0} Finished fix notes"
                                               , DateTime.Now.ToLongTimeString())
                               , 0
                               , LogTypeEnum.log);
        }
        /// creates a new EAElementWrapper based on the given EA.Element
        internal ElementWrapper createEAElementWrapper
            (global::EA.Element elementToWrap)
        {
            //first check if this element already exists in the cache
            if (this.EAModel.useCache)
            {
                var elementWrapper = this.EAModel.getElementFromCache(elementToWrap.ElementID);
                if (elementWrapper != null)
                {
                    return(elementWrapper);
                }
            }
            ElementWrapper newElementWrapper;

            switch (elementToWrap.Type)
            {
            case "Class":
                //first check if this isn't an enumeration.
                // Enumerations are stored as type Class but with the stereotype enumeration
                if (elementToWrap.StereotypeEx.Contains("enumeration"))
                {
                    newElementWrapper = new Enumeration(this.model as Model, elementToWrap);
                    break;
                }
                else
                {
                    //check if associationclass
                    //elementToWrap.IsAssocationClass() returns an exception when used in a background thread so we use our own method to figure out if its an associationClass.
                    if (this.isAssociationClass(elementToWrap))
                    {
                        newElementWrapper = new AssociationClass(this.model as Model, elementToWrap);
                        break;
                    }
                    else
                    {
                        //just a regular class
                        newElementWrapper = new Class(this.model as Model, elementToWrap);
                        break;
                    }
                }

            case "Enumeration":
                // since version 10 there are also "real" enumerations Both are still supported
                newElementWrapper = new Enumeration(this.model as Model, elementToWrap);
                break;

            case "Interface":
                newElementWrapper = new Interface(this.model as Model, elementToWrap);
                break;

            case "Note":
                newElementWrapper = new NoteComment(this.model as Model, elementToWrap);
                break;

            case "Action":
                // figure out wether this Action is a standard action or a
                // specialized action
                //elementToWrap.Properties;
                XmlDocument descriptionXml   = ((Model)this.model).SQLQuery(@"SELECT x.Description FROM t_object o
										inner join t_xref x on x.Client = o.ea_guid
										where o.Object_ID = "                                         + elementToWrap.ElementID.ToString());
                XmlNodeList descriptionNodes = descriptionXml.SelectNodes(((EA.Model) this.model).formatXPath("//Description"));
                foreach (XmlNode descriptionNode in descriptionNodes)
                {
                    if (descriptionNode.InnerText.Contains("CallOperation"))
                    {
                        newElementWrapper = new CallOperationAction(this.model as Model, elementToWrap);
                        break;
                    }
                }

                // simple Action
                newElementWrapper = new Action(this.model as Model, elementToWrap);
                break;

            case "Interaction":
                newElementWrapper = new Interaction(this.model as Model, elementToWrap);
                break;

            case "Activity":
                newElementWrapper = new Activity(this.model as Model, elementToWrap);
                break;

            case "StateMachine":
                newElementWrapper = new BehaviorStateMachines.StateMachine(this.model as Model, elementToWrap);
                break;

            case "State":
                newElementWrapper = new BehaviorStateMachines.State(this.model as Model, elementToWrap, null);
                break;

            case "StateNode":
                string metaType = elementToWrap.MetaType;
                if (metaType == "Pseudostate" ||
                    metaType == "Synchronisation")
                {
                    newElementWrapper = new BehaviorStateMachines.PseudoState(this.model as Model, elementToWrap, null);
                    break;
                }
                else if (metaType == "FinalState")
                {
                    newElementWrapper = new BehaviorStateMachines.FinalState(this.model as Model, elementToWrap, null);
                    break;
                }
                newElementWrapper = new ElementWrapper(this.model as Model, elementToWrap);
                break;

            case "Package":
                int packageID;
                if (int.TryParse(elementToWrap.MiscData[0], out packageID))
                {
                    newElementWrapper = ((Model)this.model).getElementWrapperByPackageID(packageID);
                    break;
                }
                else
                {
                    throw new Exception("WrappedElement " + elementToWrap.Name + " is not a package");
                }

            case "DataType":
            case "PrimitiveType":     //TODO: fix primitive type so it can handle this
                newElementWrapper = new DataType(this.model as Model, elementToWrap);
                break;

            case "InformationItem":
                newElementWrapper = new InformationItem(this.model as Model, elementToWrap);
                break;

            case "ProxyConnector":
                newElementWrapper = new ProxyConnector(this.model as Model, elementToWrap);
                break;

            case "Part":
                newElementWrapper = new Property(this.model as Model, elementToWrap);
                break;

            case "InteractionFragment":
                newElementWrapper = new InteractionFragment(this.model as Model, elementToWrap);
                break;

            default:
                newElementWrapper = new ElementWrapper(this.model as Model, elementToWrap);
                break;
            }
            //add the element to the cache if needed
            if (this.EAModel.useCache)
            {
                this.EAModel.addElementToCache(newElementWrapper);
            }
            return(newElementWrapper);
        }