public void print_node_revision_info(node_revision_info info) { Console.Write("{0}, ", info.number_of_revision); Console.Write("{0}, ", info.outlink_vector_size); Console.Write("{0}, ", info.first_time_stamp.ToString()); for (int i = 0; i < info.number_of_revision; i++) { Console.Write("{0}, ", info.first_time_stamp.AddSeconds(info.time_duration[i]).ToString()); //Console.Write("{0}, ", Convert.ToDateTime(info.first_time_stamp).AddSeconds(info.time_duration[i])); for (int j = 0; j < info.revision_matrix[i].Length; j++) { Console.Write("{0}, ", info.revision_matrix[i][j]); } } Console.WriteLine(); }
public SortedDictionary <string, long> getOutlinkInDuration(long nodeId, long[] uids, string[] urls, DateTime start_date, DateTime end_date) { node_revision_info info = getNodeInfo(nodeId); //Console.Write("{0}, ", nodeId); //print_node_revision_info(info); if (start_date > end_date) { return(null); } long dist_start = (long)(start_date - info.first_time_stamp).TotalSeconds; long dist_end = (long)(end_date - info.first_time_stamp).TotalSeconds; //DateTime first_time_stamp = Convert.ToDateTime(info.first_time_stamp); //long dist_start = (first_time_stamp - start_date).Milliseconds; //long dist_end = (first_time_stamp - end_date).Milliseconds; byte[] union_vector = new byte[(int)Math.Ceiling((double)(info.outlink_vector_size / 8.0))]; List <long> final_outlink = new List <long>(); for (int i = 0; i < union_vector.Length; i++) // byte vector { union_vector[i] = 0; } for (int i = 0; i < info.number_of_revision; i++) { //Console.WriteLine("Current {0}, {1}, {2}, {3}", dist_start, dist_end, info.first_time_stamp.ToString(), info.first_time_stamp.AddSeconds(info.time_duration[i]).ToString()); if (info.time_duration[i] < dist_end && info.time_duration[i] > dist_start) { for (int k = 0; k < union_vector.Length; k++) { //Console.Write("{0}|{1}={2}", info.revision_matrix[i][k], union_vector[k], (byte)(info.revision_matrix[i][k] | union_vector[k])); union_vector[k] = (byte)(info.revision_matrix[i][k] | union_vector[k]); } //Console.WriteLine(); } } //for (int k = 0; k < union_vector.Length; k++) //{ // Console.Write("{0}, ", union_vector[k]); //} //Console.WriteLine(); SortedDictionary <string, long> dict = new SortedDictionary <string, long>(); for (int i = 0; i < uids.Length; i++) // byte vector { dict.Add(urls[i], uids[i]); } dict.Values.CopyTo(uids, 0); for (int i = 0; i < info.outlink_vector_size; i++) { if (link_at_index(union_vector, i) == 0) { dict.Remove(urls[i]); } } return(dict); }