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); }