/// <summary> /// ProcessInformationClasses /// </summary> /// <param name="el"></param> public int Import(XElement el, EA.Package eaInfoClassPackage) { int iErrorCount = 0; if (el == null) { return(iErrorCount); } IEnumerable <XElement> elInfoClasses = el.Elements("InformationModel"); foreach (XElement elInfoClass in elInfoClasses) { Application.DoEvents(); ImportFieldsValidator oFieldsValidator = new ImportFieldsValidator(); oFieldsValidator.Add(new FieldInfo("name", elInfoClass)); oFieldsValidator.Add(new FieldInfo("description", elInfoClass, "", false, false, true)); string strRequirements = ""; EA.Package oRequirements = EAImporter.m_Packages.Add("UseCaseRepository", "RequirementLibrary"); IEnumerable <XElement> elRequirements = elInfoClass.Elements("referencedRequirement"); foreach (XElement elRequirement in elRequirements) { string strID = elRequirement.Element("id").Value; strRequirements = strRequirements + "," + strID; EAImporter.m_Requirements.AddInformationClass(oRequirements, strID, ""); } if (strRequirements != "") { strRequirements = strRequirements.Remove(0, 1); } int iErrCnt = oFieldsValidator.ParseAndValidateFields("Information Class"); if (iErrCnt == 0) { oFieldsValidator.ReplaceImageLinks("UseCaseRepository/InformationModelLibrary/" + oFieldsValidator["name"].Value); iErrorCount = iErrorCount + AddInformationClass(eaInfoClassPackage, oFieldsValidator["name"].Value, oFieldsValidator["description"].Value, strRequirements); } else { iErrorCount = iErrorCount + iErrCnt; } } return(iErrorCount); }
/// <summary> /// Import /// </summary> /// <param name="el"></param> public int Import(XElement el) { int iErrorCount = 0; if (el == null) { EAImporter.LogMsg(EAImporter.LogMsgType.Info, "No actors to import "); return(iErrorCount); } foreach (XElement elDomain in el.Elements("Domain")) { ImportFieldsValidator oFieldsValidatorDomain = new ImportFieldsValidator(); oFieldsValidatorDomain.Add(new FieldInfo("name", elDomain)); int iErrCnt = oFieldsValidatorDomain.ParseAndValidateFields("Actor Category"); if (iErrCnt != 0) { iErrorCount = iErrorCount + iErrCnt; } else { IEnumerable <XElement> elActors = elDomain.Elements("Actor"); foreach (XElement elActor in elActors) { Application.DoEvents(); ImportFieldsValidator oFieldsValidator = new ImportFieldsValidator(); oFieldsValidator.Add(new FieldInfo("name", elActor)); oFieldsValidator.Add(new FieldInfo("type", elActor)); oFieldsValidator.Add(new FieldInfo("description", elActor, "", false, false, true)); oFieldsValidator.Add(new FieldInfo("furtherInformation", elActor, "", false)); iErrCnt = oFieldsValidator.ParseAndValidateFields("Actor"); if (iErrCnt == 0) { oFieldsValidator.ReplaceImageLinks("UseCaseRepository/ActorLibrary" + "/" + oFieldsValidatorDomain["name"].Value + "/" + oFieldsValidator["name"].Value); AddStereotype(elActor.Element("type").Value); iErrorCount = iErrorCount + AddActor(EAImporter.m_Packages["UseCaseRepository/ActorLibrary" + "/" + oFieldsValidatorDomain["name"].Value], oFieldsValidator); } else { iErrorCount = iErrorCount + iErrCnt; } } } } return(iErrorCount); }
/// <summary> /// ImportDomains /// </summary> /// <param name="el"></param> public int Import(XElement el) { int iErrorCount = 0; if (el == null) { EAImporter.LogMsg(EAImporter.LogMsgType.Info, "No domains to import"); return(0); } IEnumerable <XElement> elDomains = el.Elements("Domain"); foreach (XElement elDomain in elDomains) { Application.DoEvents(); ImportFieldsValidator oFieldsValidator = new ImportFieldsValidator(); oFieldsValidator.Add(new FieldInfo("name", elDomain, "name")); oFieldsValidator.Add(new FieldInfo("description", elDomain, "description", false, false, true)); int iErrCnt = oFieldsValidator.ParseAndValidateFields("Actor Grouping/Domain"); if (iErrCnt == 0) { oFieldsValidator.ReplaceImageLinks("UseCaseRepository/DomainLibrary" + "/" + oFieldsValidator["name"].Value); EAImporter.LogMsg(EAImporter.LogMsgType.Info, "Importing domain: " + oFieldsValidator["name"].Value); if (EAImporter.m_Packages.Add("UseCaseRepository/DomainLibrary", oFieldsValidator["name"].Value, oFieldsValidator["description"].Value, elDomain) == null) { iErrorCount++; } ; if (EAImporter.m_Packages.Add("UseCaseRepository/ActorLibrary", oFieldsValidator["name"].Value, "", elDomain) == null) { iErrorCount++; } ; } iErrorCount = iErrorCount + iErrCnt; } return(iErrorCount); }
/// <summary> /// Adds new package for use case and populates all children /// </summary> /// <param name="elUseCase"></param> public int ProcessUseCase(XElement elUseCase) { int iErrorCount = 0; // check if use case node exists -- if (elUseCase == null) { return(iErrorCount); } ImportFieldsValidator oFieldsValidator = new ImportFieldsValidator(); // Only Process Use Case "flat Elements" here oFieldsValidator.Add(new FieldInfo("id", elUseCase)); oFieldsValidator.Add(new FieldInfo("name", elUseCase)); oFieldsValidator.Add(new FieldInfo("classification", elUseCase)); oFieldsValidator.Add(new FieldInfo("keywords", elUseCase)); oFieldsValidator.Add(new FieldInfo("levelOfDepth", elUseCase)); oFieldsValidator.Add(new FieldInfo("prioritisation", elUseCase)); oFieldsValidator.Add(new FieldInfo("scope", elUseCase, "", false, false, true)); oFieldsValidator.Add(new FieldInfo("viewPoint", elUseCase)); // Narrative oFieldsValidator.Add(new FieldInfo("completeDescription", elUseCase.Element("Narrative"), "", true, false, true)); oFieldsValidator.Add(new FieldInfo("shortDescription", elUseCase.Element("Narrative"))); // PrimaryDomain oFieldsValidator.Add(new FieldInfo("PrimaryDomain", elUseCase.Element("PrimaryDomain"), "name")); iErrorCount = iErrorCount + oFieldsValidator.ParseAndValidateFields("general use case information"); //if (iErrCnt == 0) //{ string strPrimaryDomain = ""; string strID = ""; string strName = ""; if (oFieldsValidator["PrimaryDomain"].Value == "") { strPrimaryDomain = "STUB"; } else { strPrimaryDomain = oFieldsValidator["PrimaryDomain"].Value; } if (oFieldsValidator["id"].Value == "") { strID = "STUB"; } else { strID = oFieldsValidator["id"].Value; } if (oFieldsValidator["name"].Value == "") { strName = "STUB"; } else { strName = oFieldsValidator["name"].Value; } string strUseCasePath = "UseCaseRepository/UseCaseLibrary/ImportedUseCase/" + strPrimaryDomain + "/" + strID + " " + strName; oFieldsValidator.ReplaceImageLinks(strUseCasePath); if (EAImporter.m_Packages.Add("UseCaseRepository/UseCaseLibrary", "ImportedUseCase") == null) { iErrorCount++; } ; if (EAImporter.m_Packages.Add("UseCaseRepository/UseCaseLibrary/ImportedUseCase", strPrimaryDomain) == null) { iErrorCount++; } ; // see if use case package already exists try { EA.Package oPackage = ((EA.Package)EAImporter.m_Packages["UseCaseRepository/UseCaseLibrary/ImportedUseCase/" + strPrimaryDomain]).Packages.GetByName(strID + " " + strName); if (oPackage != null) { EAImporter.LogError(EAImporter.LogErrorLevel.A, "Use case package " + "UseCaseRepository/UseCaseLibrary/ImportedUseCase/" + strPrimaryDomain + "/" + strID + " " + strName + " already exists."); strName = "STUB"; // allow processing to continue strUseCasePath = "UseCaseRepository/UseCaseLibrary/ImportedUseCase/" + strPrimaryDomain + "/" + strID + " " + strName; iErrorCount++; } } catch (Exception ex) { //EAImporter.LogMsg(EAImporter.LogMsgType.MiscExceptions, ex.Message); } EA.Package eaPackageUseCase = EAImporter.m_Packages.Add("UseCaseRepository/UseCaseLibrary/ImportedUseCase/" + strPrimaryDomain, strID + " " + strName); if (eaPackageUseCase == null) { iErrorCount++; } ; EA.Package eaPackageEnterprise = EAImporter.m_Packages.Add(strUseCasePath, "Enterprise", ""); if (eaPackageEnterprise == null) { iErrorCount++; } ; if (EAImporter.m_Packages.Add(strUseCasePath, "Computation", "") == null) { iErrorCount++; } ; if (EAImporter.m_Packages.Add(strUseCasePath, "Technology", "") == null) { iErrorCount++; } ; if (EAImporter.m_Packages.Add(strUseCasePath, "Engineering", "") == null) { iErrorCount++; } ; if (EAImporter.m_Packages.Add(strUseCasePath, "Information", "") == null) { iErrorCount++; } ; // the following commented code was used prototyping artifacts and notes as attached rtf files. //EA.Element eaArtifact = m_Packages["UseCaseRepository/UseCaseLibrary/ImportedUseCase"].Elements.AddNew("Notes", "Artifact"); //string strTemp = oFieldsValidator["completeDescription"].Value; ///*strTemp.Replace("<", "<"); //strTemp.Replace(">", ">");*/ ////strTemp.Replace("\n", Convert.ToString(13)+Convert.ToString(10)); //eaArtifact.Notes = strTemp; // // Create/import rtf linked document ////string strHTMLHead = File.ReadAllText(@"D:\_project\EPRI\C18322-EPRIUseCaseRepository\Source\Template\ArtifactFragmentTemplateHead.html"); ////string strHTMLTail = File.ReadAllText(@"D:\_project\EPRI\C18322-EPRIUseCaseRepository\Source\Template\ArtifactFragmentTemplateTail.html"); ////string strFullHTML = strHTMLHead + oFieldsValidator["Description"].Value + strHTMLTail; ////File.WriteAllText(@"D:\_project\EPRI\C18322-EPRIUseCaseRepository\Source\Template\Artifact1.html", strFullHTML); ////m_oWord.Visible = false; ////m_oWord.Documents.Open(@"D:\_project\EPRI\C18322-EPRIUseCaseRepository\Source\Template\Artifact1.html"); ////m_oWord.Documents[1].SaveAs(@"D:\_project\EPRI\C18322-EPRIUseCaseRepository\Source\Template\Artifact1.rtf", Word.WdSaveFormat.wdFormatRTF); ////m_oWord.Documents.Close(); ////m_oWord.Visible = false; ////eaArtifact.LoadLinkedDocument(@"D:\_project\EPRI\C18322-EPRIUseCaseRepository\Source\Template\Artifact1.rtf"); //eaArtifact.Update(); // create diagram for all UC elements to display attribute values EA.Diagram diagram = EAImporter.AddDiagram(eaPackageUseCase, "Use Case Components", "Object"); // process sequences here iErrorCount = iErrorCount + m_Sequences.Import(strUseCasePath + "/Computation", elUseCase); // process Activities here iErrorCount = iErrorCount + m_Activities.Import(strUseCasePath + "/Computation", elUseCase); // process Use Case Elements EA.Element elUCClassElement = null; iErrorCount = iErrorCount + ProcessUseCaseFlatAttributes(eaPackageEnterprise, eaPackageUseCase, oFieldsValidator, diagram, ref elUCClassElement); // Process Narrative iErrorCount = iErrorCount + ProcessNarrative(eaPackageEnterprise, eaPackageUseCase, oFieldsValidator, diagram); // Process Version Information iErrorCount = iErrorCount + ProcessVersionInfo(strUseCasePath + "/Enterprise", "Versions", eaPackageEnterprise, elUseCase, diagram); // Process References Information iErrorCount = iErrorCount + ProcessReferenceInfo(strUseCasePath + "/Enterprise", "References", eaPackageEnterprise, elUseCase, diagram); // Conditions iErrorCount = iErrorCount + ProcessConditions(strUseCasePath + "/Enterprise", "Conditions", eaPackageEnterprise, elUseCase, diagram); // General Remarks iErrorCount = iErrorCount + ProcessRemarks(strUseCasePath + "/Enterprise", "GeneralRemarks", eaPackageEnterprise, elUseCase, diagram); // RelatedObjectives iErrorCount = iErrorCount + ProcessObjectives(strUseCasePath + "/Enterprise", "RelatedObjectives", eaPackageEnterprise, elUseCase, diagram); // RelatedBusinessCases iErrorCount = iErrorCount + ProcessBusinessCases(strUseCasePath + "/Enterprise", "RelatedBusinessCases", eaPackageEnterprise, elUseCase, diagram); // Additional Domains iErrorCount = iErrorCount + ProcessAdditionalDomains(strUseCasePath + "/Enterprise", "AdditionalDomains", eaPackageEnterprise, elUseCase, diagram); // UseCaseRelation iErrorCount = iErrorCount + ProcessRelations(strUseCasePath + "/Enterprise", "UseCaseRelations", eaPackageEnterprise, elUseCase, diagram); // UseCase Diagram iErrorCount = iErrorCount + CreateUseCaseDigram(strID + " " + strName, eaPackageEnterprise, elUseCase, elUCClassElement); EAImporter.m_Packages["UseCaseRepository/UseCaseLibrary/ImportedUseCase"].Elements.Refresh(); //} //iErrorCount = iErrorCount + iErrCnt; return(iErrorCount); }
private int ProcessModelObject(string strLinksFolder, EA.Package eAMainPackage, EA.Package eaPackage, EA.Diagram diagram, ImportFieldsValidator oFieldsValidator, int iBaseClassID, string strImportingData, string strObjName = "") { int iErrCnt = oFieldsValidator.ParseAndValidateFields(strImportingData); if (iErrCnt == 0) { oFieldsValidator.ReplaceImageLinks(strLinksFolder); string strLogInfo = ""; if (strObjName == "") { strLogInfo = strImportingData + ": " + (string)oFieldsValidator[oFieldsValidator.GetIDStrName()].Value; } else { strLogInfo = strImportingData + ": " + strObjName; } EA.Element element1 = null; EAImporter.LogMsg(EAImporter.LogMsgType.Adding, strLogInfo); if (strObjName == "") { element1 = eaPackage.Elements.AddNew((string)oFieldsValidator[oFieldsValidator.GetIDStrName()].Value, "Object"); } else { element1 = eaPackage.Elements.AddNew(strObjName, "Object"); } if (oFieldsValidator.GetNotesStrName() != "") { element1.Notes = oFieldsValidator[oFieldsValidator.GetNotesStrName()].Value; } element1.ClassifierID = iBaseClassID; string strRunState = ""; foreach (DictionaryEntry deFieldIndo in oFieldsValidator.GetFields()) { FieldInfo oFieldInfo = (FieldInfo)deFieldIndo.Value; if ((string)oFieldInfo.Value != "") { if (!oFieldInfo.bIsID && !oFieldInfo.bIsNote) { strRunState = strRunState + "@VAR;Variable=" + oFieldInfo.ValueName + ";Value=" + (string)oFieldInfo.Value + ";Op==;@ENDVAR;"; } if (oFieldInfo.bIsNote) { strRunState = strRunState + "@VAR;Variable=" + oFieldInfo.ValueName + ";Value=See notes for this object;Op==;@ENDVAR;"; } } } element1.RunState = strRunState; element1.Update(); eaPackage.Elements.Refresh(); AddUCComponentToDiagram(eAMainPackage, diagram, element1.ElementID); } return(iErrCnt); }