public ConnectionsForm(IDataItem Node) { InitializeComponent(); try { emg = GetSession(); mpWindows = emg.ManagementPacks.GetManagementPack("Microsoft.Windows.Library", "31bf3856ad364e35", new Version()); mpAssetCore = emg.ManagementPacks.GetManagementPack("SMCenter.AssetManagement.Core", "75b45bd6835084b1", new Version()); mpNetworkAssetLibrary = emg.ManagementPacks.GetManagementPack("SMCenter.NetworkAssetManagement.Library", "75b45bd6835084b1", new Version()); mpNetworkLibrary = emg.GetManagementPack("System.NetworkManagement.Library", "31bf3856ad364e35", new Version()); mpCMLibrary = emg.ManagementPacks.GetManagementPack("Microsoft.SystemCenter.ConfigurationManager", "31bf3856ad364e35", new Version()); classModule = emg.EntityTypes.GetClass("SMCenter.Module", mpNetworkAssetLibrary); classWindowsComputer = emg.EntityTypes.GetClass("SMCenter.WindowsComputer", mpNetworkAssetLibrary); classDeployedComputer = emg.EntityTypes.GetClass("SMCenter.DeployedComputer", mpNetworkAssetLibrary); classComputerNetworkAdapter = emg.EntityTypes.GetClass("Microsoft.Windows.ComputerNetworkAdapter", mpWindows); classNode = emg.EntityTypes.GetClass("SMCenter.Node", mpNetworkAssetLibrary); classNodePort = emg.EntityTypes.GetClass("SMCenter.NodePort", mpNetworkAssetLibrary); classLocation = emg.EntityTypes.GetClass("SMCenter.Location", mpAssetCore); classDevice = emg.EntityTypes.GetClass("SMCenter.Device", mpNetworkAssetLibrary); classDeviceNetworkAdapter = emg.EntityTypes.GetClass("SMCenter.Device.NetworkAdapter", mpNetworkAssetLibrary); classPatchPanel = emg.EntityTypes.GetClass("SMCenter.PatchPanel", mpNetworkAssetLibrary); classPatchPanelPort = emg.EntityTypes.GetClass("SMCenter.PatchPanelPort", mpNetworkAssetLibrary); relComputerRunsWindowsComputer = emg.EntityTypes.GetRelationshipClass("Microsoft.SystemCenter.ConfigurationManager.DeployedComputerRunsWindowsComputer", mpCMLibrary); relComputerHostsComputerNetworkAdapter = emg.EntityTypes.GetRelationshipClass("Microsoft.Windows.ComputerHostsComputerNetworkAdapter", mpWindows); relLoctoLoc = emg.EntityTypes.GetRelationshipClass("SMCenter.LocationContainsChildLocation", mpAssetCore); //relNetworkAdapterHasChildNetworkAdapter = emg.EntityTypes.GetRelationshipClass("SMCenter.NetworkAdapterHasChildNetworkAdapter", mpNetworkAssetLibrary); relChildNetworkAdapterRefParentNetworkAdapter = emg.EntityTypes.GetRelationshipClass("SMCenter.ChildNetworkAdapterRefParentNetworkAdapter", mpNetworkAssetLibrary); //relLocationContainsConfigItem = emg.EntityTypes.GetRelationshipClass("SMCenter.LocationContainsConfigItem", mpAssetCore); relConfigItemRefLocation = emg.EntityTypes.GetRelationshipClass("SMCenter.ConfigItemRefLocation", mpAssetCore); relNodeComposedOfNetworkAdapter = emg.EntityTypes.GetRelationshipClass("System.NetworkManagement.NodeComposedOfNetworkAdapter", mpNetworkLibrary); relDeviceHostNetworkAdapter = emg.EntityTypes.GetRelationshipClass("SMCenter.DeviceHostsNetworkAdapter", mpNetworkAssetLibrary); this.ConnectionsTreeView.Items.Clear(); this.CabelsTreeView.Items.Clear(); TreeViewItem treeitem = new TreeViewItem(); LogFile = new LogFile(@"C:\LogFile.txt", true); CablesTree = new CablesTree(emg, relChildNetworkAdapterRefParentNetworkAdapter, classModule, relConfigItemRefLocation, LogFile); //Get CurrentNode Guid CurrentNodeId = (Guid)Node["$Id$"]; EMO = emg.EntityObjects.GetObject <EnterpriseManagementObject>(CurrentNodeId, ObjectQueryOptions.Default); this.txtTargetObject.Text = EMO.FullName; Guid Id_NA = new Guid(); if (EMO.IsInstanceOf(classModule)) { this.CabelsTreeView.Items.Add(CablesTree.CreateTreeViewItem(CurrentNodeId)); } else if (EMO.IsInstanceOf(classWindowsComputer)) { #region var T_objects = emg.EntityObjects.GetRelationshipObjectsWhereSource <EnterpriseManagementObject>(CurrentNodeId, relComputerHostsComputerNetworkAdapter, DerivedClassTraversalDepth.None, TraversalDepth.OneLevel, ObjectQueryOptions.Default); foreach (EnterpriseManagementRelationshipObject <EnterpriseManagementObject> relobj in T_objects) { Id_NA = relobj.TargetObject.Id; } this.CabelsTreeView.Items.Add(CablesTree.CreateTreeViewItem(Id_NA)); treeitem = ConnectionsTree.Create(Id_NA, emg); if (treeitem != null) { this.ConnectionsTreeView.Items.Add(treeitem); } #endregion } else if (EMO.IsInstanceOf(classDeployedComputer)) { #region ObservableCollection <Guid> GuidCol = new ObservableCollection <Guid>(); var T_objects = emg.EntityObjects.GetRelationshipObjectsWhereSource <EnterpriseManagementObject>(CurrentNodeId, relComputerRunsWindowsComputer, DerivedClassTraversalDepth.None, TraversalDepth.OneLevel, ObjectQueryOptions.Default); foreach (EnterpriseManagementRelationshipObject <EnterpriseManagementObject> relobj in T_objects) { GuidCol.Add(relobj.TargetObject.Id); } //Для каждого WindowsComputer ищем свой NetworkAdapter foreach (Guid id in GuidCol) { T_objects = emg.EntityObjects.GetRelationshipObjectsWhereSource <EnterpriseManagementObject>(id, relComputerHostsComputerNetworkAdapter, DerivedClassTraversalDepth.None, TraversalDepth.OneLevel, ObjectQueryOptions.Default); foreach (EnterpriseManagementRelationshipObject <EnterpriseManagementObject> relobj in T_objects) { Id_NA = relobj.TargetObject.Id; } this.CabelsTreeView.Items.Add(CablesTree.Go(Id_NA)); treeitem = ConnectionsTree.Create(Id_NA, emg); if (treeitem != null) { this.ConnectionsTreeView.Items.Add(treeitem); } } #endregion } else if (EMO.IsInstanceOf(classNode)) { #region ObservableCollection <Guid> GuidCol = new ObservableCollection <Guid>(); var T_objects = emg.EntityObjects.GetRelationshipObjectsWhereSource <EnterpriseManagementObject>(CurrentNodeId, relNodeComposedOfNetworkAdapter, DerivedClassTraversalDepth.None, TraversalDepth.OneLevel, ObjectQueryOptions.Default); foreach (EnterpriseManagementRelationshipObject <EnterpriseManagementObject> relobj in T_objects) { GuidCol.Add(relobj.TargetObject.Id); } foreach (Guid id in GuidCol) { this.CabelsTreeView.Items.Add(CablesTree.Go(id)); treeitem = ConnectionsTree.Create(id, emg); if (treeitem != null) { this.ConnectionsTreeView.Items.Add(treeitem); } } #endregion } else if (EMO.IsInstanceOf(classNodePort)) { this.CabelsTreeView.Items.Add(CablesTree.Go(CurrentNodeId)); treeitem = ConnectionsTree.Create(CurrentNodeId, emg); if (treeitem != null) { this.ConnectionsTreeView.Items.Add(treeitem); } } else if (EMO.IsInstanceOf(classDevice)) { #region var T_objects = emg.EntityObjects.GetRelationshipObjectsWhereSource <EnterpriseManagementObject>(CurrentNodeId, relDeviceHostNetworkAdapter, DerivedClassTraversalDepth.None, TraversalDepth.OneLevel, ObjectQueryOptions.Default); foreach (EnterpriseManagementRelationshipObject <EnterpriseManagementObject> relobj in T_objects) { Id_NA = relobj.TargetObject.Id; } this.CabelsTreeView.Items.Add(CablesTree.Go(Id_NA)); treeitem = ConnectionsTree.Create(Id_NA, emg); if (treeitem != null) { this.ConnectionsTreeView.Items.Add(treeitem); } #endregion } else if (EMO.IsInstanceOf(classDeviceNetworkAdapter)) { this.CabelsTreeView.Items.Add(CablesTree.Go(CurrentNodeId)); treeitem = ConnectionsTree.Create(CurrentNodeId, emg); if (treeitem != null) { this.ConnectionsTreeView.Items.Add(treeitem); } } } catch (Exception ex) { System.Windows.MessageBox.Show("Initialize procedure error : " + ex.Message, "Service Manager", MessageBoxButton.OK, MessageBoxImage.Error); this.Close(); } }
private void NodesTreeView_SelectedItemChanged(object sender, RoutedPropertyChangedEventArgs <object> e) { try { TreeViewItem SelectedItem = (TreeViewItem)e.NewValue; //TextBox this.txtTargetObject.Text = SelectedItem.Header.ToString(); this.txtLocation.Text = ""; TreeViewItem NewItem = new TreeViewItem(); Guid SelectedItemId = new Guid(SelectedItem.Tag.ToString()); this.ConnectionsTreeView.Items.Clear(); this.CabelsTreeView.Items.Clear(); ObservableCollection <TreeViewItem> ColCables = new ObservableCollection <TreeViewItem>(); ObservableCollection <TreeViewItem> ColConnections = new ObservableCollection <TreeViewItem>(); if (SelectedItem.Header.ToString().Contains("PORT")) { this.CabelsTreeView.Items.Add(CablesTree.Go(SelectedItemId)); TreeViewItem treeitem = ConnectionsTree.Create(SelectedItemId, emg); if (treeitem != null) { this.ConnectionsTreeView.Items.Add(treeitem); } } else { var items = emg.EntityObjects.GetRelationshipObjectsWhereSource <EnterpriseManagementObject>(SelectedItemId, relNodeComposedOfNetworkAdapter, DerivedClassTraversalDepth.None, TraversalDepth.OneLevel, ObjectQueryOptions.Default); foreach (EnterpriseManagementRelationshipObject <EnterpriseManagementObject> relobj in items) { Guid Guid_NetworkAdapter = relobj.TargetObject.Id; ColCables.Add(CablesTree.CreateTreeViewItem(Guid_NetworkAdapter)); NewItem = ConnectionsTree.Create(Guid_NetworkAdapter, emg); if (NewItem != null) { ColConnections.Add(NewItem); } } //Сортировка var sortedCables = from item in ColCables orderby item.Header select item; foreach (var i in sortedCables) { TreeViewItem TVitem = (TreeViewItem)i; this.CabelsTreeView.Items.Add(TVitem); } if (ColConnections.Count > 0) { var sortedConnections = from item in ColConnections orderby item.Header select item; foreach (var i in sortedConnections) { TreeViewItem TVitem = (TreeViewItem)i; if (TVitem != null) { this.ConnectionsTreeView.Items.Add(TVitem); } } } } } catch (Exception ex) { System.Windows.MessageBox.Show("NodesTreeView_SelectedItemChanged procedure error : " + ex.Message, "Service Manager", MessageBoxButton.OK, MessageBoxImage.Error); this.Close(); } }