public ProcessedCallLog(MetaCallLog mf) { this.MetaData = mf; this.InAddressBook = false; this.SuspectPhoneNumber = false; this.NameBadness = 0; }
/// <summary> /// Takes the list of call log metafields and generates a list of ProcessedCallLog /// objects. Eliminates those whose timestamps are clearly out of range. /// </summary> /// <param name="metaList">List of call log records to be filtered.</param> /// <param name="pruneTimestamp">Whether or not to use the timestamp of a call log record as a parameter for filtering.</param> /// <param name="lower">Lower limit for timestamps.</param> /// <param name="upper">Upper limit for timestamps.</param> /// <returns>A list of processed call log records.</returns> private List <ProcessedCallLog> GetCallLogs(List <MetaField> metaList, bool pruneTimestamp, DateTime lower, DateTime upper) { List <ProcessedCallLog> pList = new List <ProcessedCallLog>(); foreach (MetaCallLog mf in metaList) { if (!mf.TimeStamp.HasValue) { continue; } if (pruneTimestamp && ((mf.TimeStamp.Value < lower) || (mf.TimeStamp.Value > upper))) { continue; } pList.Add(new ProcessedCallLog(mf)); } // Can we get rid of any duplicate call logs? pList = EliminateDupCallLogs(pList); // Save numbers and names for later cross referencing. foreach (ProcessedCallLog pcl in pList) { MetaCallLog mf = (MetaCallLog)pcl.MetaData; AddNumber(callLogNumbersFull, mf.Number); AddNumber(callLogNumbers7, mf.SevenDigit); AddRecordToDict(callLogNames, mf.Name, pcl); AddRecordToDict(callLogSevenDigits, mf.SevenDigit, pcl); } return(pList); }
private bool CompareNumbers(MetaCallLog mcl, MetaSms msms) { if (CompareNumbers1(mcl, msms)) { return(true); } return(CompareNumbers2(mcl, msms)); }
private bool CompareNumbers2(MetaCallLog mcl, MetaSms msms) { if ((mcl.Number != null) && (msms.Number2 != null) && (mcl.Number != MetaField.DEFAULT_STRING) && (mcl.Number == msms.Number2)) { return(true); } if ((mcl.Number != null) && (msms.Number2 != null)) { string acode1 = Dec0de.Bll.Utilities.GetAreaCode(mcl.Number); string acode2 = Dec0de.Bll.Utilities.GetAreaCode(msms.Number2); if ((acode1 != null) && (acode2 != null) && (acode1 != acode2)) { return(false); } } if ((mcl.SevenDigit != null) && (msms.SevenDigit2 != null) && (mcl.SevenDigit != MetaField.DEFAULT_STRING) && (mcl.SevenDigit == msms.SevenDigit2)) { return(true); } return(false); }
private bool CompareNumbers(MetaCallLog mcl, MetaAddressBookEntry mabe) { if ((mcl.Number != null) && (mabe.Number != null) && (mcl.Number != MetaField.DEFAULT_STRING) && (mcl.Number == mabe.Number)) { return(true); } if ((mcl.Number != null) && (mabe.Number != null)) { string acode1 = Dec0de.Bll.Utilities.GetAreaCode(mcl.Number); string acode2 = Dec0de.Bll.Utilities.GetAreaCode(mabe.Number); if ((acode1 != null) && (acode2 != null) && (acode1 != acode2)) { return(false); } } if ((mcl.SevenDigit != null) && (mabe.SevenDigit != null) && (mcl.SevenDigit != MetaField.DEFAULT_STRING) && (mcl.SevenDigit == mabe.SevenDigit)) { return(true); } return(false); }
private List <MetaCallLog> GetMetaCallLog(ViterbiField field, List <MetaResult> metaResults) { string name = null; string number = null; List <DateTime> timeStamps = new List <DateTime>(); string type = null; long startOffset = -1; List <long> proximityOffsets = new List <long>(); FieldPaths path = new FieldPaths(); for (int i = 0; i < field.Raw.Length; i++) { if (i == 0) { path._path_beg_offset = metaResults[(int)field.OffsetFile].Field.OffsetFile; } if (i == field.Raw.Length - 1) { path._path_end_offset = metaResults[(int)field.OffsetFile + i].Field.OffsetFile; } path._fields_in_path.Add(metaResults[(int)field.OffsetFile + i].Field.MachineName.ToString()); if (field.Raw[i] == (byte)MetaMachine.Text && name == null) { name = metaResults[(int)field.OffsetFile + i].Field.FieldString; } else if (field.Raw[i] == (byte)MetaMachine.PhoneNumber && number == null) { number = metaResults[(int)field.OffsetFile + i].Field.FieldString; } else if (field.Raw[i] == (byte)MetaMachine.TimeStamp) { timeStamps.Add(DateTime.Parse(metaResults[(int)field.OffsetFile + i].Field.FieldString)); proximityOffsets.Add(metaResults[(int)field.OffsetFile + i].Field.OffsetFile); } else if (field.Raw[i] == (byte)MetaMachine.CallLogType && type == null) { type = metaResults[(int)field.OffsetFile + i].Field.FieldString; } if (startOffset == -1) { startOffset = metaResults[(int)field.OffsetFile + i].Field.OffsetFile; } } path.find_actual_path(); fieldPaths.Add(path); var entries = new List <MetaCallLog>(); for (int i = 0; i < timeStamps.Count; i++) { var entry = new MetaCallLog() { Name = name, Number = number, SevenDigit = Utilities.GetLastSevenDigits(number), TimeStamp = timeStamps[i], Type = type, Offset = startOffset, MachineName = field.MachineName, ProximityOffset = proximityOffsets[i] }; if (entry.Name == null) { entry.Name = MetaField.DEFAULT_STRING; } if (entry.Number == null) { entry.Number = MetaField.DEFAULT_STRING; } if (entry.SevenDigit == null) { entry.SevenDigit = MetaField.DEFAULT_STRING; } if (entry.Type == null) { entry.Type = MetaField.DEFAULT_STRING; } if (entry.TimeStamp == null) { entry.TimeStamp = MetaField.DEFAULT_DATE; } entries.Add(entry); } return(entries); }
private List <MetaCallLog> GetMetaCallLogNokia(ViterbiField field, List <MetaResult> metaResults) { string name = null; var numbers = new List <string>(); List <DateTime> timeStamps = new List <DateTime>(); string type = null; long startOffset = -1; List <long> proximityOffsets = new List <long>(); var phoneIndex = new List <string>(); var timeStampIndex = new List <string>(); FieldPaths path = new FieldPaths(); for (int i = 0; i < field.Raw.Length; i++) { if (i == 0) { path._path_beg_offset = metaResults[(int)field.OffsetFile].Field.OffsetFile; } if (i == field.Raw.Length - 1) { path._path_end_offset = metaResults[(int)field.OffsetFile + i].Field.OffsetFile; } path._fields_in_path.Add(metaResults[(int)field.OffsetFile + i].Field.MachineName.ToString()); if (field.Raw[i] == (byte)MetaMachine.Text && name == null) { name = metaResults[(int)field.OffsetFile + i].Field.FieldString; } //There should be a binary field in between. else if (field.Raw[i] == (byte)MetaMachine.CallLogNumberIndex && field.Raw[i + 2] == (byte)MetaMachine.PhoneNumber) { phoneIndex.Add(metaResults[(int)field.OffsetFile + i].Field.FieldString); numbers.Add(metaResults[(int)field.OffsetFile + i + 2].Field.FieldString); i += 2; } else if (field.Raw[i] == (byte)MetaMachine.TimeStamp && field.Raw[i + 1] == (byte)MetaMachine.CallLogNumberIndex) { timeStamps.Add(DateTime.Parse(metaResults[(int)field.OffsetFile + i].Field.FieldString)); timeStampIndex.Add(metaResults[(int)field.OffsetFile + i + 1].Field.FieldString); proximityOffsets.Add(metaResults[(int)field.OffsetFile + i].Field.OffsetFile); i++; } else if (field.Raw[i] == (byte)MetaMachine.CallLogType && type == null) { type = metaResults[(int)field.OffsetFile + i].Field.FieldString; } if (startOffset == -1) { startOffset = metaResults[(int)field.OffsetFile + i].Field.OffsetFile; } } path.find_actual_path(); fieldPaths.Add(path); var entries = new List <MetaCallLog>(); for (int i = 0; i < timeStamps.Count; i++) { int numberI = -1; //Get phone number for (int j = 0; j < phoneIndex.Count; j++) { if (timeStampIndex[i] == phoneIndex[j]) { numberI = j; break; } } string number = (numberI != -1) ? numbers[numberI] : "*NONE*"; var entry = new MetaCallLog() { Name = name, Number = number, SevenDigit = Utilities.GetLastSevenDigits(number), TimeStamp = timeStamps[i], Type = type, Offset = startOffset, MachineName = field.MachineName, ProximityOffset = proximityOffsets[i] }; if (entry.Name == null) { entry.Name = MetaField.DEFAULT_STRING; } if (entry.Number == null) { entry.Number = MetaField.DEFAULT_STRING; } if (entry.SevenDigit == null) { entry.SevenDigit = MetaField.DEFAULT_STRING; } if (entry.Type == null) { entry.Type = MetaField.DEFAULT_STRING; } if (entry.TimeStamp == null) { entry.TimeStamp = MetaField.DEFAULT_DATE; } entries.Add(entry); } return(entries); }
private List<MetaCallLog> GetMetaCallLogNokia(ViterbiField field, List<MetaResult> metaResults) { string name = null; var numbers = new List<string>(); List<DateTime> timeStamps = new List<DateTime>(); string type = null; long startOffset = -1; List<long> proximityOffsets = new List<long>(); var phoneIndex = new List<string>(); var timeStampIndex = new List<string>(); FieldPaths path = new FieldPaths(); for (int i = 0; i < field.Raw.Length; i++) { if (i == 0) { path._path_beg_offset = metaResults[(int)field.OffsetFile].Field.OffsetFile; } if (i == field.Raw.Length - 1) { path._path_end_offset = metaResults[(int)field.OffsetFile + i].Field.OffsetFile; } path._fields_in_path.Add(metaResults[(int)field.OffsetFile + i].Field.MachineName.ToString()); if (field.Raw[i] == (byte)MetaMachine.Text && name == null) name = metaResults[(int)field.OffsetFile + i].Field.FieldString; //There should be a binary field in between. else if (field.Raw[i] == (byte)MetaMachine.CallLogNumberIndex && field.Raw[i + 2] == (byte)MetaMachine.PhoneNumber) { phoneIndex.Add(metaResults[(int)field.OffsetFile + i].Field.FieldString); numbers.Add(metaResults[(int)field.OffsetFile + i + 2].Field.FieldString); i += 2; } else if (field.Raw[i] == (byte)MetaMachine.TimeStamp && field.Raw[i + 1] == (byte)MetaMachine.CallLogNumberIndex) { timeStamps.Add(DateTime.Parse(metaResults[(int)field.OffsetFile + i].Field.FieldString)); timeStampIndex.Add(metaResults[(int)field.OffsetFile + i + 1].Field.FieldString); proximityOffsets.Add(metaResults[(int)field.OffsetFile + i].Field.OffsetFile); i++; } else if (field.Raw[i] == (byte)MetaMachine.CallLogType && type == null) type = metaResults[(int)field.OffsetFile + i].Field.FieldString; if (startOffset == -1) { startOffset = metaResults[(int)field.OffsetFile + i].Field.OffsetFile; } } path.find_actual_path(); fieldPaths.Add(path); var entries = new List<MetaCallLog>(); for (int i = 0; i < timeStamps.Count; i++) { int numberI = -1; //Get phone number for (int j = 0; j < phoneIndex.Count; j++) { if (timeStampIndex[i] == phoneIndex[j]) { numberI = j; break; } } string number = (numberI != -1) ? numbers[numberI] : "*NONE*"; var entry = new MetaCallLog() { Name = name, Number = number, SevenDigit = Utilities.GetLastSevenDigits(number), TimeStamp = timeStamps[i], Type = type, Offset = startOffset, MachineName = field.MachineName, ProximityOffset = proximityOffsets[i] }; if (entry.Name == null) entry.Name = MetaField.DEFAULT_STRING; if (entry.Number == null) entry.Number = MetaField.DEFAULT_STRING; if (entry.SevenDigit == null) entry.SevenDigit = MetaField.DEFAULT_STRING; if (entry.Type == null) entry.Type = MetaField.DEFAULT_STRING; if (entry.TimeStamp == null) entry.TimeStamp = MetaField.DEFAULT_DATE; entries.Add(entry); } return entries; }
private List<MetaCallLog> GetMetaCallLog(ViterbiField field, List<MetaResult> metaResults) { string name = null; string number = null; List<DateTime> timeStamps = new List<DateTime>(); string type = null; long startOffset = -1; List<long> proximityOffsets = new List<long>(); FieldPaths path = new FieldPaths(); for (int i = 0; i < field.Raw.Length; i++) { if (i == 0) { path._path_beg_offset = metaResults[(int)field.OffsetFile].Field.OffsetFile; } if (i == field.Raw.Length - 1) { path._path_end_offset = metaResults[(int)field.OffsetFile + i].Field.OffsetFile; } path._fields_in_path.Add(metaResults[(int)field.OffsetFile + i].Field.MachineName.ToString()); if (field.Raw[i] == (byte)MetaMachine.Text && name == null) name = metaResults[(int)field.OffsetFile + i].Field.FieldString; else if (field.Raw[i] == (byte)MetaMachine.PhoneNumber && number == null) number = metaResults[(int)field.OffsetFile + i].Field.FieldString; else if (field.Raw[i] == (byte)MetaMachine.TimeStamp) { timeStamps.Add(DateTime.Parse(metaResults[(int)field.OffsetFile + i].Field.FieldString)); proximityOffsets.Add(metaResults[(int)field.OffsetFile + i].Field.OffsetFile); } else if (field.Raw[i] == (byte)MetaMachine.CallLogType && type == null) type = metaResults[(int)field.OffsetFile + i].Field.FieldString; if (startOffset == -1) { startOffset = metaResults[(int)field.OffsetFile + i].Field.OffsetFile; } } path.find_actual_path(); fieldPaths.Add(path); var entries = new List<MetaCallLog>(); for (int i = 0; i < timeStamps.Count; i++) { var entry = new MetaCallLog() { Name = name, Number = number, SevenDigit = Utilities.GetLastSevenDigits(number), TimeStamp = timeStamps[i], Type = type, Offset = startOffset, MachineName = field.MachineName, ProximityOffset = proximityOffsets[i] }; if (entry.Name == null) entry.Name = MetaField.DEFAULT_STRING; if (entry.Number == null) entry.Number = MetaField.DEFAULT_STRING; if (entry.SevenDigit == null) entry.SevenDigit = MetaField.DEFAULT_STRING; if (entry.Type == null) entry.Type = MetaField.DEFAULT_STRING; if (entry.TimeStamp == null) entry.TimeStamp = MetaField.DEFAULT_DATE; entries.Add(entry); } return entries; }
public List <MetaCallLog> GetMetaCallLog(ViterbiField field, List <MetaResult> metaResults) { string name = null; string number = null; List <DateTime> timeStamps = new List <DateTime>(); string type = null; long startOffset = -1; for (int i = 0; i < field.Raw.Length; i++) { if (field.Raw[i] == (byte)MetaMachine.Text && name == null) { name = metaResults[(int)field.OffsetFile + i].Field.FieldString; } else if (field.Raw[i] == (byte)MetaMachine.PhoneNumber && number == null) { number = metaResults[(int)field.OffsetFile + i].Field.FieldString; } else if (field.Raw[i] == (byte)MetaMachine.TimeStamp) { timeStamps.Add(DateTime.Parse(metaResults[(int)field.OffsetFile + i].Field.FieldString)); } else if (field.Raw[i] == (byte)MetaMachine.CallLogType && type == null) { type = metaResults[(int)field.OffsetFile + i].Field.FieldString; } if (startOffset == -1) { startOffset = metaResults[(int)field.OffsetFile + i].Field.OffsetFile; } } var entries = new List <MetaCallLog>(); for (int i = 0; i < timeStamps.Count; i++) { var entry = new MetaCallLog() { Name = name, Number = number, SevenDigit = Utilities.GetLastSevenDigits(number), TimeStamp = timeStamps[i], Type = type, Offset = startOffset }; if (entry.Name == null) { entry.Name = MetaField.DEFAULT_STRING; } if (entry.Number == null) { entry.Number = MetaField.DEFAULT_STRING; } if (entry.SevenDigit == null) { entry.SevenDigit = MetaField.DEFAULT_STRING; } if (entry.Type == null) { entry.Type = MetaField.DEFAULT_STRING; } if (entry.TimeStamp == null) { entry.TimeStamp = MetaField.DEFAULT_DATE; } entries.Add(entry); } return(entries); }
public List<MetaCallLog> GetMetaCallLog(ViterbiField field, List<MetaResult> metaResults) { string name = null; string number = null; List<DateTime> timeStamps = new List<DateTime>(); string type = null; long startOffset = -1; for (int i = 0; i < field.Raw.Length; i++) { if (field.Raw[i] == (byte)MetaMachine.Text && name == null) name = metaResults[(int)field.OffsetFile + i].Field.FieldString; else if (field.Raw[i] == (byte)MetaMachine.PhoneNumber && number == null) number = metaResults[(int)field.OffsetFile + i].Field.FieldString; else if (field.Raw[i] == (byte)MetaMachine.TimeStamp) timeStamps.Add(DateTime.Parse(metaResults[(int)field.OffsetFile + i].Field.FieldString)); else if (field.Raw[i] == (byte)MetaMachine.CallLogType && type == null) type = metaResults[(int)field.OffsetFile + i].Field.FieldString; if (startOffset == -1) startOffset = metaResults[(int)field.OffsetFile + i].Field.OffsetFile; } var entries = new List<MetaCallLog>(); for (int i = 0; i < timeStamps.Count; i++) { var entry = new MetaCallLog() { Name = name, Number = number, SevenDigit = Utilities.GetLastSevenDigits(number), TimeStamp = timeStamps[i], Type = type, Offset = startOffset }; if (entry.Name == null) entry.Name = MetaField.DEFAULT_STRING; if (entry.Number == null) entry.Number = MetaField.DEFAULT_STRING; if (entry.SevenDigit == null) entry.SevenDigit = MetaField.DEFAULT_STRING; if (entry.Type == null) entry.Type = MetaField.DEFAULT_STRING; if (entry.TimeStamp == null) entry.TimeStamp = MetaField.DEFAULT_DATE; entries.Add(entry); } return entries; }
private bool CompareNumbers2(MetaCallLog mcl, MetaSms msms) { if ((mcl.Number != null) && (msms.Number2 != null) && (mcl.Number != MetaField.DEFAULT_STRING) && (mcl.Number == msms.Number2)) { return true; } if ((mcl.Number != null) && (msms.Number2 != null)) { string acode1 = Dec0de.Bll.Utilities.GetAreaCode(mcl.Number); string acode2 = Dec0de.Bll.Utilities.GetAreaCode(msms.Number2); if ((acode1 != null) && (acode2 != null) && (acode1 != acode2)) { return false; } } if ((mcl.SevenDigit != null) && (msms.SevenDigit2 != null) && (mcl.SevenDigit != MetaField.DEFAULT_STRING) && (mcl.SevenDigit == msms.SevenDigit2)) { return true; } return false; }
private bool CompareNumbers(MetaCallLog mcl, MetaSms msms) { if (CompareNumbers1(mcl, msms)) { return true; } return CompareNumbers2(mcl, msms); }
private bool CompareNumbers(MetaCallLog mcl, MetaAddressBookEntry mabe) { if ((mcl.Number != null) && (mabe.Number != null) && (mcl.Number != MetaField.DEFAULT_STRING) && (mcl.Number == mabe.Number)) { return true; } if ((mcl.Number != null) && (mabe.Number != null)) { string acode1 = Dec0de.Bll.Utilities.GetAreaCode(mcl.Number); string acode2 = Dec0de.Bll.Utilities.GetAreaCode(mabe.Number); if ((acode1 != null) && (acode2 != null) && (acode1 != acode2)) { return false; } } if ((mcl.SevenDigit != null) && (mabe.SevenDigit != null) && (mcl.SevenDigit != MetaField.DEFAULT_STRING) && (mcl.SevenDigit == mabe.SevenDigit)) { return true; } return false; }