public List <Node> GetAllHierarchies() { List <Node> result = new List <Node>(); EAAPI.Collection searchResult = _repository.GetElementsByQuery("SpecificationPackages", ""); if (searchResult.Count > 0) { for (short counter = 0; counter < searchResult.Count; counter++) { EAAPI.Element packageElement = searchResult.GetAt(counter) as EAAPI.Element; EAAPI.Package package = _repository.GetPackageByGuid(packageElement.ElementGUID); CachedDataProvider eaCacheDataProvider = new CachedDataProvider(_repository); EADM.Element specificationPackageElement = eaCacheDataProvider.GetCachedSpecification(package); Node rootNode = new Node(); ConvertEaDataToSpecifNodeRecursively(specificationPackageElement, rootNode); result = rootNode.Nodes; } } return(result); }
private void PrintPackage(EA.Package package) { Trace(package.Name); EA.Collection packages = package.Packages; for (short ip = 0; ip < packages.Count; ip++) { EA.Package child = (EA.Package)packages.GetAt(ip); PrintPackage(child); } }
/// <summary> /// Make EA.DiagramObject list from collection /// </summary> /// <param name="col"></param> /// <returns></returns> public static List <EA.DiagramObject> MakeObjectListFrmCollection(EA.Collection col) { List <EA.DiagramObject> lDiaObj = new List <EA.DiagramObject>(); foreach (EA.DiagramObject diaObj in col) { lDiaObj.Add(diaObj); } return(lDiaObj); }
/// /// returns true if a project is currently opened /// /// <param name="Repository" />the repository /// true if a project is opened in EA bool IsProjectOpen(EA.Repository Repository) { try { EA.Collection c = Repository.Models; return(true); } catch { return(false); } }
/// /// returns true if a project is currently opened /// /// <param name="Repository" />the repository /// true if a project is opened in EA bool IsProjectOpen(EA.Repository Repository) { try { EA.Collection c = Repository.Models; EAUtils.zapiszNazweModelu(EAUtils.dajModelPR(ref Repository).Name); return(true); } catch { return(false); } }
/// <summary> /// Get tree selected elements. These are the selected elements or the selected package /// </summary> private void GetTreeSelected() { EA.Collection col = _rep.GetTreeSelectedElements(); if (col.Count == 0) { TreeSelectedPackage = _rep.GetTreeSelectedPackage(); } else { foreach (EA.Element c in col) { TreeSelectedElements.Add(c); } } }
public bool PrintModel() { if (Repository == null) { Trace(String.Format("Repository unavailable for pid {0}", m_ProcessID)); return(false); } Trace(String.Format("Target repository process pid {0}", m_ProcessID)); EA.Collection packages = Repository.Models; for (short ip = 0; ip < packages.Count; ip++) { EA.Package child = (EA.Package)packages.GetAt(ip); PrintPackage(child); } return(true); }
private Dictionary <String, EAAPI.Element> ConvertEAElementsToDictionary(EAAPI.Collection eaElements) { Dictionary <String, EAAPI.Element> dicElements = new Dictionary <string, EAAPI.Element>(); for (short nIndex = 0; nIndex < eaElements.Count; nIndex++) { EAAPI.Element element = (EAAPI.Element)eaElements.GetAt(nIndex); if (false == dicElements.ContainsKey(element.Alias)) { dicElements.Add(element.Alias, element); } } return(dicElements); }
private void AddOrUpdateElements(EAAPI.Package parentPackage, EAAPI.Element parentElement, EAAPI.Diagram lifeCycleDiagram, ref Dictionary <String, EAAPI.Element> elements) { // Get the Tagged Values from the parent diagram. EAAPI.Collection taggedValues = parentElement.TaggedValues; foreach (Utility.Element element in diagramConfig.Elements.Element.AsQueryable()) { String elementName = element.Name; String elementType = element.Type; String elementText = element.Text; if (!String.IsNullOrEmpty(elementText) && true == elementText.Contains("@TAGVALUE")) { // Get the value from the TaggedValues String[] keyValuePair = elementText.Split(':'); EAAPI.TaggedValue taggedValue = (EAAPI.TaggedValue)taggedValues.GetByName(keyValuePair[1]); elementText = taggedValue.Value; // If there is an associated Map then use that. if (!String.IsNullOrEmpty(element.TextMap)) { // Get the text map to use from the Configuration Utility.Map mapValues = (from t in diagramConfig.Configuration.Map where t.Name.Contains(element.TextMap) select t).First(); // Map the key to the value and that is the string to add on the diagram. elementText = (from t in mapValues.MapValue where t.Key.Contains(elementText) select t.Value).First(); } } // Add the elements to the Repository. // Update only the text if it is already in the Repository. AddOrUpdateElement( parentPackage, ref elements, FormatDiagramElementAlias(lifeCycleDiagram.DiagramID, elementName), elementType, elementText, element.BackColor); } parentPackage.Elements.Refresh(); }
// public bool InventoryDesignInterfaces() { // Get all interfaces // 'object_id' has to be included in select string sql = $@"select object_id, name from t_object where object_type = 'Interface' AND package_id in ( { _designPackagedIds} ) order by 2"; EA.Collection interfaceList = Rep.GetElementSet(sql, 2); foreach (EA.Element el in interfaceList) { InterfaceItem ifItem = (InterfaceItem)_designFiles.Add($"{el.Name}.h"); ifItem.El = el; foreach (EA.Method m in el.Methods) { // create function FunctionItem functionItem = new FunctionItem(m.Name, m.ReturnType, m.IsStatic, new List <ParameterItem>(), ifItem, m); if (_designFunctions.FunctionList.ContainsKey(m.Name)) { var function = _designFunctions.FunctionList[m.Name]; MessageBox.Show($"Interface:\t{function.Interface?.Name}\r\nModule:\t{function.Module?.Name}", $"Duplicated Function {m.Name}, skipped!"); } else { _designFunctions.FunctionList.Add(m.Name, functionItem); } // update interface ifItem.ProvidedFunctions.Add(functionItem); } } // Show deleted Interface var deletedInterfaces = from s in _designFiles.FileList where !_files.FileList.Any(t => (s.Value.Name == t.Value.Name) && t.Value.GetType().Name.Equals(typeof(InterfaceItem).Name)) select s.Value.El; var createdInterfaces = from s in _files.FileList where !_designFiles.FileList.All(t => (s.Value.Name == t.Value.Name) && t.Value.GetType().Name.Equals(typeof(InterfaceItem).Name)) select s.Value.El; _deletedInterfaces = 0; string deleteMe = "DeleteMe"; foreach (var el in deletedInterfaces) { if (!el.Name.EndsWith(deleteMe)) { el.Name = el.Name + deleteMe; el.Update(); } _deletedInterfaces++; } _createdInterfaces = createdInterfaces.Count(); return(true); }
private void AddOrUpdateElementsOnDiagram(EAAPI.Element parentElement, EAAPI.Diagram lifeCycleDiagram, ref Dictionary <String, EAAPI.Element> elements) { String alias; int elementID; // Get all of the diagram elements on the existing diagram into a list that is easier to search. Dictionary <String, int> preExistingObjects = new Dictionary <String, int>(); foreach (EAAPI.DiagramObject digObject in lifeCycleDiagram.DiagramObjects) { EAAPI.Element packageElement = eaRepo.GetElementByID(digObject.ElementID); alias = packageElement.Alias; elementID = packageElement.ElementID; if (!String.IsNullOrEmpty(alias)) { preExistingObjects.Add(packageElement.Alias, packageElement.ElementID); } } int topDef; int leftDef; int heightDef; int widthDef; String elementName; int top; int left; int right; int bottom; int row; int column; topDef = SafeToInt(diagramConfig.Configuration.Position.DefaultTop, 0); leftDef = SafeToInt(diagramConfig.Configuration.Position.DefalutLeft, 0); heightDef = SafeToInt(diagramConfig.Configuration.Position.DefaultHeight, 0); widthDef = SafeToInt(diagramConfig.Configuration.Position.DefaultWidth, 0); String backColor; // Get the parent diagram. This contains the Tagged Values. EAAPI.Collection taggedValues = parentElement.TaggedValues; // Ad or update the diagram elements. foreach (Utility.Element element in diagramConfig.Elements.Element.AsQueryable()) { elementName = FormatDiagramElementAlias(lifeCycleDiagram.DiagramID, element.Name); elementID = elements[elementName].ElementID; row = SafeToInt(element.Cell.Row, 0); column = SafeToInt(element.Cell.Column, 0); top = topDef + ((row - 1) * heightDef) + SafeToInt(element.PositionOffset.Top, 0); left = leftDef + ((column - 1) * widthDef) + SafeToInt(element.PositionOffset.Left, 0); right = widthDef + left + SafeToInt(element.PositionOffset.Width, 0); bottom = heightDef + top + SafeToInt(element.PositionOffset.Height, 0); backColor = element.BackColor; if (!String.IsNullOrEmpty(backColor) && true == backColor.Contains("@TAGVALUE")) { // Get the value from the TaggedValues String[] keyValuePair = backColor.Split(':'); EAAPI.TaggedValue taggedValue = (EAAPI.TaggedValue)taggedValues.GetByName(keyValuePair[1]); // Get the color map to use Utility.TaggedValueColorMap mapValues = (from t in diagramConfig.Configuration.TaggedValueColorMap where t.Name.Contains(element.ColorMap) select t).First(); backColor = MapColor(mapValues.Color, taggedValue.Value); } if (!preExistingObjects.ContainsKey(elements[elementName].Alias)) { AddElementToDiagram( lifeCycleDiagram, elementID, element.Type, left, right, top, bottom, MapFont(diagramConfig.Configuration.FontMap.Font, element.Font), MapColor(diagramConfig.Configuration.ColorMap.Color, backColor)); } else { UpdateElementOnDiagram( lifeCycleDiagram, preExistingObjects[elementName], MapColor(diagramConfig.Configuration.ColorMap.Color, backColor)); } } }
/// <summary> /// Write the EA dependencies according to ReqIF between the requirements /// </summary> public bool WriteRelations() { // Read all requirements string stereotypePredicate = _settings.Stereotype == "" ? "" : $" AND stereotype = '{_settings.Stereotype}' "; string sql = $@"select * from t_object o inner join t_package pkg on pkg.package_id = o.package_id where pkg.ea_guid in ( {_settings.PackageGuidCommaList} ) AND o.object_type = '{_settings.ObjectType}' {stereotypePredicate}"; EA.Collection reqCol = _rep.GetElementSet(sql, 2); foreach (EA.Element req in reqCol) { _requirements.Add(req); } // All EA requirements and their target try { // check not existing references var notExistingTargets = (from r in _reqIf.CoreContent[0].SpecRelations join eaRS in _requirements on r.Source.Identifier ?? "" equals eaRS.Multiplicity ?? "" where r.Target == null select $"{eaRS.Multiplicity}:{eaRS.Name}").ToArray(); if (notExistingTargets.Length > 0) { MessageBox.Show($@"{String.Join("\r\n", notExistingTargets)}", @"Target Requirements for Link not available, skip links"); } var relations = from r in _reqIf.CoreContent[0].SpecRelations join eaRS in _requirements on r.Source?.Identifier ?? "" equals eaRS.Multiplicity ?? "" join eaRT in _requirements on r.Target?.Identifier ?? "" equals eaRT.Multiplicity ?? "" orderby r.Source?.Identifier ?? "" select new { SourceReq = eaRS, TargetReq = eaRT, SObjectId = r.Source.Identifier ?? "", TObjectId = r.Target.Identifier ?? "", }; // Create the relations EA.Element el = null; foreach (var rel in relations) { if (el != rel.SourceReq) { el = rel.SourceReq; if (el != null) { DeleteDependencies(el, _settings.PackageGuidList); } } EA.Connector con = (EA.Connector)el.Connectors.AddNew("", "Dependency"); con.Stereotype = _settings.StereotypeDependency; con.ClientID = rel.TargetReq.ElementID; con.SupplierID = rel.SourceReq.ElementID; con.Update(); el.Connectors.Refresh(); el.Update(); } return(true); } catch (Exception e) { MessageBox.Show($@"Related link to requirement not available File: '{_settings.InputFile}' {e}", @"Can't write ReqIF relations in EA, skip relations!"); return(false); } }