private NetworkNode_line_class[] Get_new_nodes_with_indexes_above_max_index(Add_node_line_class[] add_nodes) { int add_index = Get_max_nw_index(); add_nodes = Add_node_line_class.Order_by_standard_way(add_nodes); Add_node_line_class add_node_line; int add_nodes_length = add_nodes.Length; List <NetworkNode_line_class> new_nodes = new List <NetworkNode_line_class>(); NetworkNode_line_class new_node_line; for (int indexN = 0; indexN < add_nodes_length; indexN++) { add_node_line = add_nodes[indexN]; if ((indexN == 0) || (!add_node_line.Equal_in_standard_way(add_nodes[indexN - 1]))) { add_index++; new_node_line = new NetworkNode_line_class(); new_node_line.Id = (string)add_node_line.Id.Clone(); new_node_line.Name = (string)add_node_line.Name.Clone(); new_node_line.NW_index = add_index; new_nodes.Add(new_node_line); } else { throw new Exception(); } } return(new_nodes.ToArray()); }
public NetworkNode_line_class Deep_copy() { NetworkNode_line_class node_line = (NetworkNode_line_class)this.MemberwiseClone(); node_line.Id = (string)this.Id.Clone(); node_line.Name = (string)this.Name.Clone(); node_line.Name2 = (string)this.Name2.Clone(); return(node_line); }
public bool Equal_in_standard_way(NetworkNode_line_class other) { bool equal = (this.Name.Equals(other.Name)); //bool equal = ((this.Id.Equals(other.Id)) // && (this.Name.Equals(other.Name)) // && (this.Ontology_type.Equals(other.Ontology_type)) // && (this.Ontology_namespace.Equals(other.Ontology_namespace))); return(equal); }
public NetworkNode_line_class Get_indexed_old_node_line_if_index_old_is_correct(int indexNode_old) { NetworkNode_line_class node_line = Nodes[indexNode_old]; if (node_line.NW_index_old != indexNode_old) { node_line = new NetworkNode_line_class(); string text = typeof(NetworkNode_class).Name + ": Get indexed old node line, Indexes_old do not match (" + indexNode_old + " <-> " + node_line.NW_index_old + ")"; throw new Exception(text); } return(node_line); }
public NetworkNode_line_class Get_indexed_node_line_if_index_is_correct(int indexNode) { NetworkNode_line_class node_line = Nodes[indexNode]; if (node_line.NW_index != indexNode) { node_line = new NetworkNode_line_class(); Report_class.Write_error_line("{0}: Get indexed node line, Indexes do not match ({1} <-> {2})", typeof(NetworkNode_line_class).Name, indexNode, node_line.NW_index); throw new Exception(); } return(node_line); }
public void Set_process_level_if_index_is_rigth(int nodeIndex, int process_level) { NetworkNode_line_class node_line = Nodes[nodeIndex]; if (node_line.NW_index != nodeIndex) { throw new Exception("Nodes not sorted properly"); } else { node_line.Level = process_level; } }
public void Reindex_nodes_and_set_index_old() { Nodes = NetworkNode_line_class.Order_in_standard_way(Nodes); NetworkNode_line_class node_line; int nodes_length = Nodes_length; for (int indexN = 0; indexN < nodes_length; indexN++) { node_line = Nodes[indexN]; node_line.NW_index_old = node_line.NW_index; node_line.NW_index = indexN; } Index_change_adopted = false; }
private void Remove_duplicates() { Nodes = NetworkNode_line_class.Order_in_standard_way(Nodes); int nodes_length = Nodes_length; NetworkNode_line_class kept_node_line; List <NetworkNode_line_class> kept_nodes_list = new List <NetworkNode_line_class>(); for (int indexN = 0; indexN < nodes_length; indexN++) { kept_node_line = this.Nodes[indexN]; if ((indexN == 0) || (!kept_node_line.Equal_in_standard_way(this.Nodes[indexN - 1]))) { kept_nodes_list.Add(kept_node_line); } else { throw new Exception(); } } Nodes = kept_nodes_list.ToArray(); }
private void Add_nodes(NetworkNode_line_class[] add_nodes) { int add_length = add_nodes.Length; int this_length = this.Nodes_length; int new_length = add_length + this_length; NetworkNode_line_class[] new_nodes = new NetworkNode_line_class[new_length]; int indexNew = -1; for (int indexThis = 0; indexThis < this_length; indexThis++) { indexNew++; new_nodes[indexNew] = this.Nodes[indexThis]; } for (int indexAdd = 0; indexAdd < add_length; indexAdd++) { indexNew++; new_nodes[indexNew] = add_nodes[indexAdd].Deep_copy(); } Nodes = new_nodes; }
private NetworkNode_line_class[] Get_new_nodes_with_indexes_above_max_index(string[] add_nodeNames) { int add_index = Get_max_nw_index(); add_nodeNames = add_nodeNames.Distinct().OrderBy(l => l).ToArray(); string add_nodeName; int add_nodeNames_length = add_nodeNames.Length; List <NetworkNode_line_class> new_nodes = new List <NetworkNode_line_class>(); NetworkNode_line_class new_node_line; for (int indexN = 0; indexN < add_nodeNames_length; indexN++) { add_nodeName = add_nodeNames[indexN]; add_index++; new_node_line = new NetworkNode_line_class(); new_node_line.Id = "no id"; new_node_line.Name = (string)add_nodeName.Clone(); new_node_line.NW_index = add_index; new_nodes.Add(new_node_line); } return(new_nodes.ToArray()); }
public NetworkNode_line_class Get_indexed_node_line_without_checking_if_index_is_correct(int indexNode) { NetworkNode_line_class node_line = Nodes[indexNode]; return(node_line); }
public NetworkNode_class() { Nodes = new NetworkNode_line_class[0]; Index_change_adopted = true; }
public NetworkNode_class Merge_this_nodes_with_other_nodes_and_get_new_indexes_of_other_UN(NetworkNode_class inputOther) { NetworkNode_class other = inputOther.Deep_copy(); this.Order_by_name(); other.Order_by_name(); int this_length = this.Nodes.Length; int indexThis = 0; int other_length = other.Nodes.Length; int indexOther = 0; int stringCompare = 0; List <NetworkNode_line_class> mergedUN = new List <NetworkNode_line_class>(); NetworkNode_line_class this_line = new NetworkNode_line_class(); NetworkNode_line_class other_line = new NetworkNode_line_class(); int overlapping_nodes_count = 0; int indexOtherNew = this_length - 1; while ((indexThis < this_length) || (indexOther < other_length)) { if ((indexThis < this_length) && (indexOther < other_length)) { this_line = this.Nodes[indexThis]; other_line = other.Nodes[indexOther]; this_line.NW_index_old = this_line.NW_index; stringCompare = other_line.Name.CompareTo(this_line.Name); } else if (indexThis < this_length) { this_line = this.Nodes[indexThis]; this_line.NW_index_old = this_line.NW_index; stringCompare = 2; } else // if (indexOther < other_count) { other_line = other.Nodes[indexOther]; stringCompare = -2; } if (stringCompare < 0) //other_line is not in this.un { indexOtherNew++; other_line.NW_index_old = other_line.NW_index; other_line.NW_index = indexOtherNew; NetworkNode_line_class newOtherLine = other_line.Deep_copy(); newOtherLine.NW_index = indexOtherNew; newOtherLine.NW_index_old = indexOtherNew; mergedUN.Add(newOtherLine); indexOther++; } else if (stringCompare == 0) { mergedUN.Add(this_line); other_line.NW_index_old = other_line.NW_index; other_line.NW_index = this_line.NW_index; overlapping_nodes_count++; indexOther++; indexThis++; } else // (stringCompare > 0) { mergedUN.Add(this_line); indexThis++; } } Nodes = mergedUN.ToArray(); other.Index_change_adopted = false; return(other); }