/// <summary> /// Appends all the data from a LogfileRecord to the outputfile on 1 line /// </summary> /// <param name="record">The record for which to write the data to the outputfile</param> private void WriteFileRecordToFile(LogFilerecord record) { // Create the line to write string line = record.node + sep + record.callTime + sep + record.callDate + sep + record.cancelTime + sep + record.cancelDate + sep + record.onTime + sep + record.offTime + sep + record.cancelKey; //outputfile.WriteLine(line); using (StreamWriter file = new StreamWriter(outputfile, true)) { file.WriteLine(line); } }
private void processData(List <LogDbRecord> list) { // Needed to keep track of on/off times int currentTag = -1; // Will represent a record in the file combining event 3 and 4 LogFilerecord onOffTemp = new LogFilerecord("-", "-", "-", "-", "-", "-", "-", "-"); // Will keep track of all call events before a cancel is triggered. List <LogFilerecord> callEvents = new List <LogFilerecord>(); foreach (LogDbRecord dbRecord in list) { switch (dbRecord._event) { case 1: callEvents.Add(new LogFilerecord( dbRecord.node.ToString(), dbRecord.time, dbRecord.date.ToString("yyyy-MM-dd"), "-", "-", "-", "-", "-" )); break; case 2: foreach (LogFilerecord callEvent in callEvents) { callEvent.cancelTime = dbRecord.time; callEvent.cancelDate = dbRecord.date.ToString("yyyy-MM-dd"); callEvent.cancelKey = dbRecord.node.ToString(); WriteFileRecordToFile(callEvent); } callEvents.Clear(); break; case 3: if (dbRecord.tag == currentTag) { onOffTemp.onTime = dbRecord.time; WriteFileRecordToFile(onOffTemp); } else { // This code should not be reached. Console.WriteLine("ERROR: matching event 3 not found"); } break; case 4: onOffTemp = new LogFilerecord("-", "-", "-", "-", "-", "-", dbRecord.time, "-"); currentTag = dbRecord.tag; break; default: Console.WriteLine("ERROR: each line should be an event of type 1, 2, 3, or 4"); break; } } }