private void tsbShow_Click(object sender, EventArgs e) { // Сначала запрашиваем стиль и пообще не передумали ли мы ExecResult <SetLinkStyle> setLinkStyleResult = new FLinkStyle().Execute(); if (setLinkStyleResult.code != 0) { return; } // Проходимся по списку выделенных коннекторов foreach (ListViewItem item in lvConnectors.SelectedItems) { ConnectorData connectorData = (ConnectorData)item.Tag; EA.DiagramLink diagramLink = DiagramLinkHelper.GetDLFromConnector(connectorData.ConnectorID); if (diagramLink == null) { diagramLink = DiagramLinkHelper.CreateDiagramLink(connectorData.Connector); } DiagramLinkHelper.SetDiagramLinkVisibility(diagramLink, true); // устанавливаем видимость item.Text = (!diagramLink.IsHidden).ToString(); if (setLinkStyleResult.value.DoSetLinkStyle) // устанавливаем стиль линий { DiagramLinkHelper.ApplyStyleToDL(diagramLink, setLinkStyleResult.value); } } }
/// <summary> /// Ищет на текущей диаграмме коннекторы для элементов, которые принадлежат к перечисленному ПО /// </summary> /// <param name=""></param> /// <returns></returns> public static List <ConnectorData> GetDAForSoftwareOnDiagram(List <string> selectedSoftware) { List <ConnectorData> result = new List <ConnectorData>(); foreach (EA.DiagramObject diagramObject in CurrentDiagram.DiagramObjects) { EA.Element element = EARepository.GetElementByID(diagramObject.ElementID); string elementSoftware = LibraryHelper.GetElementSoftwareName(element); if (selectedSoftware.Contains(elementSoftware)) { foreach (EA.Connector connector in element.Connectors) { EA.DiagramLink diagramLink = DiagramLinkHelper.GetDLFromConnector(connector.ConnectorID); if (diagramLink != null) { ConnectorData connectorData = new ConnectorData(connector); result.Add(connectorData); } } } } return(result); }
/// <summary> /// Функция загружает список коннекторов из текущей библиотеки (используя SQL - запрос) /// </summary> /// <returns></returns> public static Dictionary <int, ConnectorData> LoadConnectorData2() { var result = new Dictionary <int, ConnectorData>(); string[] args = new string[] { String.Join(",", Context.CurLibPackageIDs) }; XDocument sqlResultSet = SQLHelper.RunSQL("GetConnectors.sql", args); // Коннекторы IEnumerable <XElement> rowNodes = sqlResultSet.Root.XPathSelectElements("/EADATA/Dataset_0/Data/Row"); foreach (XElement rowNode in rowNodes) { ConnectorData connectorData = new ConnectorData(); connectorData.ConnectorID = int.Parse(rowNode.Descendants("connector_id").First().Value); connectorData.Name = rowNode.Descendants("name").First().Value; connectorData.Notes = rowNode.Descendants("notes").First().Value; connectorData.SourceElementID = int.Parse(rowNode.Descendants("start_object_id").First().Value); connectorData.TargetElementID = int.Parse(rowNode.Descendants("end_object_id").First().Value); result.Add(connectorData.ConnectorID, connectorData); } // Тэги коннекторов sqlResultSet = SQLHelper.RunSQL("GetConnectorsTags.sql", args); rowNodes = sqlResultSet.Root.XPathSelectElements("/EADATA/Dataset_0/Data/Row"); foreach (XElement rowNode in rowNodes) { int elementID = int.Parse(rowNode.Descendants("elementid").First().Value); string property = rowNode.Descendants("property").First().Value; string value = rowNode.Descendants("value").First().Value; if (result.ContainsKey(elementID)) { ConnectorData connectorData = result[elementID]; // получаем уже созданный объект ConnectorData if (property == DAConst.DP_LibraryTag) { connectorData.IsLibrary = true; } if (property == DAConst.DP_LinkTypeTag) { connectorData.LinkType = (LinkType)Enum.Parse(typeof(LinkType), value); } if (property == DAConst.DP_FlowIDTag) { connectorData.FlowID = value; } if (property == DAConst.DP_SegmentIDTag) { connectorData.SegmentID = value; } } else { throw new Exception("рассогласование набора коннекторов при загрузке"); } } return(result); }
/// <summary> /// Creates a new NodeGraphConnector, given a name, a parent container, type and index /// </summary> /// <param name="newName">The display name of the connector</param> /// <param name="newParent">Reference to the parent NodeGraphNode</param> /// <param name="newConnectorType">Type of the connector (input/output)</param> /// <param name="newConnectorIndex">Connector Index</param> public Connector(string newName, Node newParent, ConnectorType newConnectorType, int newConnectorIndex) { // Try Setting Connector Data Correct ConnectorData newConnectorData = ConnectorData.None; bool success = Enum.TryParse(newName, out newConnectorData); if (!success) { Console.WriteLine($"## ERROR:\t\tCasting {newName} to Enum failed"); } this.color = new Vector4(0, 0, 0, 1); this.Name = newName; this.Parent = newParent; this.Type = newConnectorType; this.Data = newConnectorData; this.Index = newConnectorIndex; this.scale = newParent.Tex_Scale; this.pen = new Pen(Util.VectorToColor(this.color), 1.0f); this.font = new Font(this.Parent.View.Font_Node_Connector.Name, this.Parent.View.Font_Node_Connector.Size * this.scale); this.brush = new SolidBrush(Util.VectorToColor(this.color)); }
private void tsbSelectConnector_Click(object sender, EventArgs e) { foreach (ListViewItem item in lvConnectors.SelectedItems) { ConnectorData connectorData = (ConnectorData)item.Tag; Context.CurrentDiagram.SelectedConnector = Context.EARepository.GetConnectorByID(connectorData.ConnectorID); break; } }
public static ExecResult <ConnectorData> Execute(ConnectorData connectorData) { var result = new ExecResult <ConnectorData>(); try { var form = new FEditConnector(); form.tbID.Text = connectorData.ConnectorID.ToString(); form.tbGUID.Text = connectorData.Connector.ConnectorGUID; form.tbName.Text = connectorData.Name; form.cbType.SelectedIndex = form.cbType.SelectedIndex = form.cbType.Items.IndexOf(connectorData.LinkType); form.tbClientID.Text = connectorData.SourceElementID.ToString() + " (" + Context.ElementData[connectorData.SourceElementID].DisplayName + ")"; form.tbClientID.Tag = connectorData.SourceElementID; form.tbSupplierID.Text = connectorData.TargetElementID.ToString() + " (" + Context.ElementData[connectorData.TargetElementID].DisplayName + ")"; form.tbSupplierID.Tag = connectorData.TargetElementID; form.cbFlowID.Text = connectorData.FlowID; form.cbSegmentID.Text = connectorData.SegmentID; form.tbNotes.Text = connectorData.Notes; form.lvTaggedValues.Items.Clear(); foreach (EA.ConnectorTag connectorTag in connectorData.Connector.TaggedValues) { ListViewItem item = new ListViewItem(connectorTag.Name); item.SubItems.Add(connectorTag.Value); form.lvTaggedValues.Items.Add(item); } DialogResult res = form.ShowDialog(); if (res != DialogResult.OK) { result.code = (int)res; } else { result.value = new ConnectorData(); result.value.ConnectorID = int.Parse(form.tbID.Text); result.value.Name = form.tbName.Text; result.value.IsLibrary = true; result.value.LinkType = (LinkType)Enum.Parse(typeof(LinkType), form.cbType.Text); result.value.SourceElementID = (int)form.tbClientID.Tag; result.value.TargetElementID = (int)form.tbSupplierID.Tag; result.value.FlowID = form.cbFlowID.Text; result.value.SegmentID = form.cbSegmentID.Text; result.value.Notes = form.tbNotes.Text; } } catch (Exception ex) { result.setException(ex); } return(result); }
private void tsbShowEndInProject_Click(object sender, EventArgs e) { foreach (ListViewItem item in lvConnectors.SelectedItems) { ConnectorData connectorData = (ConnectorData)item.Tag; EA.Element targetElement = Context.EARepository.GetElementByID(connectorData.TargetElementID); Context.EARepository.ShowInProjectView(targetElement); break; } }
private void btnSelectConnectorObjects_Click(object sender, EventArgs e) { while (Context.CurrentDiagram.SelectedObjects.Count > 0) { Context.CurrentDiagram.SelectedObjects.Delete(0); } foreach (ListViewItem item in lvConnectors.SelectedItems) { ConnectorData connectorData = (ConnectorData)item.Tag; //EA.DiagramObject sourceDiagramObject = Context.CurrentDiagram.GetDiagramObjectByID(connectorData.SourceElementID); Context.CurrentDiagram.SelectedObjects.AddNew(connectorData.SourceElementID.ToString(), ""); Context.CurrentDiagram.SelectedObjects.AddNew(connectorData.TargetElementID.ToString(), ""); } }
private void tsbHide_Click(object sender, EventArgs e) { // Проходимся по списку выделенных коннекторов foreach (ListViewItem item in lvConnectors.SelectedItems) { ConnectorData connectorData = (ConnectorData)item.Tag; EA.DiagramLink diagramLink = DiagramLinkHelper.GetDLFromConnector(connectorData.ConnectorID); if (diagramLink == null) { diagramLink = DiagramLinkHelper.CreateDiagramLink(connectorData.Connector); } DiagramLinkHelper.SetDiagramLinkVisibility(diagramLink, false); // устанавливаем видимость item.Text = (!diagramLink.IsHidden).ToString(); } }
private void LoadConnectorList() { // получаем список описателей элементов диаграммы Dictionary <int, ElementData> elementDataList = EAHelper.GetCurDiagramElementData(); // получаем список коннекторов диаграммы Dictionary <int, bool> curDiagramConnectorsID = EAHelper.GetCurDiagramConnectorsID(); // заливаем список коннекторов на форму lvConnectors.Items.Clear(); foreach (int curConnectorID in curDiagramConnectorsID.Keys) { ConnectorData connectorData; if (Context.ConnectorData.ContainsKey(curConnectorID)) { connectorData = Context.ConnectorData[curConnectorID]; } else // небиблиотечный коннектор, его нет в списке { EA.Connector connector = Context.EARepository.GetConnectorByID(curConnectorID); connectorData = new ConnectorData(connector); } if (!AllowByFilter(connectorData)) { continue; // Проверяем, что показ этого коннектора в списке разрешён фильтрами } // Создаём ListViewItem ListViewItem item = new ListViewItem(); item.Tag = connectorData; item.Text = (!curDiagramConnectorsID[curConnectorID]).ToString(); item.SubItems.Add(elementDataList[connectorData.SourceElementID].DisplayName); item.SubItems.Add(connectorData.NameForShow()); item.SubItems.Add(connectorData.IsLibrary ? connectorData.LinkType.ToString() : ""); item.SubItems.Add(connectorData.IsLibrary ? connectorData.FlowID : ""); item.SubItems.Add(connectorData.IsLibrary ? connectorData.SegmentID : ""); item.SubItems.Add(connectorData.Notes); item.SubItems.Add(elementDataList[connectorData.TargetElementID].DisplayName); lvConnectors.Items.Add(item); } }
public async Task <IActionResult> AttachConnector([FromBody] ConnectorData connectorData) { if (!ModelState.IsValid) { return(BadRequest(ModelState)); } Connector connector = new Connector() { NetworkName = connectorData.NetworkName, Url = connectorData.Url }; _context.Connectors.Add(connector); await _context.SaveChangesAsync(); return(Ok()); }
/// <summary> /// Функция обновляет данные коннектора пор данным переданного ConnectorData /// </summary> /// <param name="connectorData"></param> public static void UpdateConnectorByData(ConnectorData connectorData) { EA.Connector connector = connectorData.Connector; connector.Name = connectorData.Name; connector.Notes = connectorData.Notes; connector.ClientID = connectorData.SourceElementID; connector.SupplierID = connectorData.TargetElementID; connector.Update(); if (connectorData.IsLibrary) { EATVHelper.TaggedValueSet(connector, DAConst.DP_LibraryTag, ""); EATVHelper.TaggedValueSet(connector, DAConst.DP_LinkTypeTag, connectorData.LinkType.ToString()); EATVHelper.TaggedValueSet(connector, DAConst.DP_FlowIDTag, connectorData.FlowID); EATVHelper.TaggedValueSet(connector, DAConst.DP_SegmentIDTag, connectorData.SegmentID); } Context.ConnectorData[connectorData.ConnectorID] = connectorData; }
/// <summary> /// Возвращает список коннекторов для элементов текущей диаграммы /// </summary> /// <returns></returns> public static List <ConnectorData> GetCurDiagramConnectors() { List <ConnectorData> result = new List <ConnectorData>(); string[] args = new string[] { Context.CurrentDiagram.DiagramGUID }; XDocument sqlResultSet = SQLHelper.RunSQL("CurDiagramConnectorsID.sql", args); IEnumerable <XElement> rowNodes = sqlResultSet.Root.XPathSelectElements("/EADATA/Dataset_0/Data/Row"); foreach (XElement rowNode in rowNodes) { int connector_id = int.Parse(rowNode.Descendants("connector_id").First().Value); bool hidden = bool.Parse(rowNode.Descendants("hidden").First().Value); if (!hidden) { ConnectorData connectorData = Context.ConnectorData[connector_id]; result.Add(connectorData); } } return(result); }
public static void Execute(ConnectorData connectorData) { var form = new FConnectorProperties(); EA.Connector connector = Context.EARepository.GetConnectorByID(connectorData.ConnectorID); form.tbID.Text = connector.ConnectorID.ToString(); form.tbGUID.Text = connector.ConnectorGUID; form.tbName.Text = connector.Name; form.tbType.Text = connector.Type; form.tbClientID.Text = connector.ClientID.ToString(); form.tbSupplierID.Text = connector.SupplierID.ToString(); form.tbNotes.Text = connector.Notes; form.lvTaggedValues.Items.Clear(); foreach (EA.ConnectorTag connectorTag in connector.TaggedValues) { ListViewItem item = new ListViewItem(connectorTag.Name); item.SubItems.Add(connectorTag.Value); form.lvTaggedValues.Items.Add(item); } form.ShowDialog(); }
/// <summary> /// Creates a new NodeGraphConnector, given a name, a parent container, type and index /// </summary> /// <param name="newName">The display name of the connector</param> /// <param name="newParent">Reference to the parent NodeGraphNode</param> /// <param name="newConnectorType">Type of the connector (input/output)</param> /// <param name="newConnectorIndex">Connector Index</param> public Connector(string newName, Node newParent, ConnectorType newConnectorType, ConnectorData newConnectorData, int newConnectorIndex) { this.color = new Vector4(0, 0, 0, 1); this.Name = newName; this.Parent = newParent; this.Type = newConnectorType; this.Data = newConnectorData; this.Index = newConnectorIndex; this.scale = newParent.Tex_Scale; this.pen = new Pen(Util.VectorToColor(this.color), 1.0f); this.font = new Font(this.Parent.View.Font_Node_Connector.Name, this.Parent.View.Font_Node_Connector.Size * this.scale); this.brush = new SolidBrush(Util.VectorToColor(this.color)); }
public static ExecResult <List <ConnectorData> > Execute(List <ConnectorData> connectorDataList) { var result = new ExecResult <List <ConnectorData> >(); try { var form = new FEditConnectors(); // Список коннекторов form.lvConnectors.Items.Clear(); foreach (var connectorData in connectorDataList) { ListViewItem item = new ListViewItem(connectorData.ConnectorID.ToString()); item.SubItems.Add(connectorData.Name); form.lvConnectors.Items.Add(item); } // Имена в комбобокс form.cbName.Items.Clear(); form.cbName.Items.AddRange(connectorDataList.Select(cd => cd.Name).ToArray()); // linkType и FlowID form.cbType.SelectedIndex = form.cbType.SelectedIndex = form.cbType.Items.IndexOf(connectorDataList[0].LinkType); form.cbFlowID.Text = connectorDataList[0].FlowID; //form.cbSegmentID.Text = connectorDataList[0].SegmentID; Идентификатор сегмента массово не редактируем form.lvTaggedValues.Items.Clear(); foreach (var connectorData in connectorDataList) { foreach (EA.ConnectorTag connectorTag in connectorData.Connector.TaggedValues) { ListViewItem item = new ListViewItem(connectorData.ConnectorID.ToString()); item.SubItems.Add(connectorTag.Name); item.SubItems.Add(connectorTag.Value); form.lvTaggedValues.Items.Add(item); } } DialogResult res = form.ShowDialog(); if (res != DialogResult.OK) { result.code = (int)res; } else { result.value = new List <ConnectorData>(); foreach (var connectorData in connectorDataList) { ConnectorData newConnectorData = new ConnectorData(); newConnectorData.ConnectorID = connectorData.ConnectorID; if (form.cbName.Text == "") { newConnectorData.Name = connectorData.Name; } else { newConnectorData.Name = form.cbName.Text; } newConnectorData.IsLibrary = true; if (form.cbType.SelectedIndex == 0) // не усатновленные поля не записываются, берутся из старых объектов { newConnectorData.LinkType = connectorData.LinkType; } else { newConnectorData.LinkType = (LinkType)Enum.Parse(typeof(LinkType), form.cbType.Text); } newConnectorData.SourceElementID = connectorData.SourceElementID; newConnectorData.TargetElementID = connectorData.TargetElementID; if (form.cbFlowID.Text == "") { newConnectorData.FlowID = connectorData.FlowID; } else { newConnectorData.FlowID = form.cbFlowID.Text; } if (form.cbSegmentID.Text == "") { newConnectorData.SegmentID = connectorData.SegmentID; } else { newConnectorData.SegmentID = form.cbSegmentID.Text; } newConnectorData.Notes = connectorData.Notes; result.value.Add(newConnectorData); } } } catch (Exception ex) { result.setException(ex); } return(result); }
public static EA.Connector CreateConnector(ConnectorData createNewLinkData, bool putOnDiagram = true) { EA.Connector newConnector = null; EA.Element firstElement = EARepository.GetElementByID(createNewLinkData.SourceElementID); EA.Element secondElement = EARepository.GetElementByID(createNewLinkData.TargetElementID); // Определяем тип создаваемого коннектора string creatingConnectorType; switch (createNewLinkData.LinkType) { case LinkType.Communication: case LinkType.Deploy: creatingConnectorType = "Dependency"; break; case LinkType.InformationFlow: creatingConnectorType = "InformationFlow"; break; case LinkType.SoftwareClassification: creatingConnectorType = "Generalization"; break; default: throw new Exception("Непредусмотренный тип коннектора при создании"); } // Создаём newConnector = firstElement.Connectors.AddNew("", creatingConnectorType); if (createNewLinkData.LinkType == LinkType.InformationFlow || createNewLinkData.LinkType == LinkType.Deploy) { newConnector.Direction = "Source -> Destination"; } else { newConnector.Direction = "Unspecified"; } newConnector.ClientID = firstElement.ElementID; newConnector.SupplierID = secondElement.ElementID; newConnector.Name = createNewLinkData.Name; newConnector.Notes = createNewLinkData.Notes; newConnector.Update(); EATVHelper.TaggedValueSet(newConnector, DAConst.DP_LibraryTag, ""); EATVHelper.TaggedValueSet(newConnector, DAConst.DP_LinkTypeTag, Enum.GetName(typeof(LinkType), createNewLinkData.LinkType)); EATVHelper.TaggedValueSet(newConnector, DAConst.DP_FlowIDTag, createNewLinkData.FlowID); EATVHelper.TaggedValueSet(newConnector, DAConst.DP_SegmentIDTag, createNewLinkData.SegmentID); //EAHelper.TaggedValueSet(newConnector, DAConst.DP_TempLinkTag, createNewLinkData.tempLink.ToString()); //EAHelper.TaggedValueSet(newConnector, DAConst.DP_TempLinkDiagramIDTag, createNewLinkData.tempLink ? createNewLinkData.tempLinkDiagramID : ""); newConnector.Update(); newConnector.TaggedValues.Refresh(); // Добавляем коннектор к кэш информации о коннекторах createNewLinkData.ConnectorID = newConnector.ConnectorID; Context.ConnectorData.Add(createNewLinkData.ConnectorID, createNewLinkData); if (putOnDiagram) { // Помещаем на диаграмму EA.DiagramLink diagramLink = DiagramLinkHelper.CreateDiagramLink(newConnector); } return(newConnector); }
/// <summary> /// Функция проверяет, разрешён ли показ коннекторат текущим фильтром /// </summary> private bool AllowByFilter(ConnectorData connectorData) { bool result = true; if (lblFlowIDFilter.Tag != null && ((string[])lblFlowIDFilter.Tag).Length > 0) { if (!((string[])lblFlowIDFilter.Tag).Contains(connectorData.FlowID)) { return(false); } } if (lblSourceElementFilter.Tag != null && ((int[])lblSourceElementFilter.Tag).Length != 0) { if (!( ((int[])lblSourceElementFilter.Tag).Contains(connectorData.SourceElementID) || ((int[])lblSourceElementFilter.Tag).Contains(connectorData.TargetElementID) ) ) { return(false); } } if (lblLinkTypeFilter.Tag != null && ((LinkType[])lblLinkTypeFilter.Tag).Length != 0) { if (!((LinkType[])lblLinkTypeFilter.Tag).Contains(connectorData.LinkType)) { return(false); } } if (lblSoftwareClassificationFilter1.Tag != null && ((int[])lblSoftwareClassificationFilter1.Tag).Length != 0) { bool belongsToSoftware = false; foreach (int softwareID in (int[])lblSoftwareClassificationFilter1.Tag) { ElementData softwareElementData = Context.SoftwareClassification.AllNodes[softwareID].Value; ElementData sourceElementData = Context.ElementData[connectorData.SourceElementID]; if (SoftwareClassificationHelper.ISBelongsToSoftware(sourceElementData, softwareElementData)) { belongsToSoftware = true; break; } ElementData targetElementData = Context.ElementData[connectorData.TargetElementID]; if (SoftwareClassificationHelper.ISBelongsToSoftware(targetElementData, softwareElementData)) { belongsToSoftware = true; break; } } if (!belongsToSoftware) { return(false); } } return(result); }