//This function takes the data from the project file and loads it into memory. void ParseLine(string L) { string[] data; string[] IDs; int Chans; data = L.Split(','); //Data format - Record Type - Record Start //Record types - An = Animal, Fl = File, Gp = Group, Lb = Label. if (data[0].IndexOf("Fl") != -1) { DateTime TempDate; try { TempDate = ConvertFileToDT(data[1]); //Get the ACQ info. int.TryParse(data[3],out Chans); IDs = new string[Chans]; for (int i = 0; i < Chans; i++) { IDs[i] = data[4+i]; } FileType F = new FileType(IDs, Chans, TempDate, data[2]); Files.Add(F); } catch { Console.WriteLine("FAILURE IN DATE PARSE"); } } else if (data[0].IndexOf("Gp") != -1) { GroupType G = new GroupType(data[1], data[2], data[3]); Groups.Add(G); } else if (data[0].IndexOf("Lb") != -1) { LabelType Lb; Lb = new LabelType(data[1], data[2]); Labels.Add(Lb); } else if (data[0].IndexOf("An") != -1) { int CurrentAnimal = FindAnimal(data[1]); switch (data[2]) { case " gp": int.TryParse(data[3], out Animals[CurrentAnimal].Group.IDNum); Animals[CurrentAnimal].Group.Name = data[4]; break; case " bd": BloodDrawType B = new BloodDrawType(data[3], data[4], data[5]); Animals[CurrentAnimal].BloodDraws.Add(B); break; case " rm": RemovalType R = new RemovalType(data[3], data[4], data[5]); Animals[CurrentAnimal].Removals.Add(R); break; case " wt": WeightType W = new WeightType(data[3], data[4], data[5]); Animals[CurrentAnimal].WeightInfo.Add(W); break; case " sz": SeizureType S; if (data.Length == 8) { //Old way - no severity score S = new SeizureType(data[3], data[4], data[5], data[6], data[7]); } else { //New way, has severity info S = new SeizureType(data[3], data[4], data[5], data[6], data[7], data[8]); } Animals[CurrentAnimal].Sz.Add(S); break; case " ml": MealType M = new MealType(data[3], data[4], data[5]); Animals[CurrentAnimal].Meals.Add(M); break; case " dt": ImportantDateType I = new ImportantDateType(data[3], data[4]); Animals[CurrentAnimal].ImportantDates.Add(I); break; default: Console.WriteLine(data[2] + ": ERROR IN COMPARE"); break; } } }
public bool ImportDirectory(string Dir) { ACQReader TempACQ = new ACQReader(); FileType F = new FileType(); //Open the ACQ file string[] FName = Directory.GetFiles(Dir, "*.acq"); if (FName.Length > 0) { TempACQ.openACQ(FName[0]); string Fn = FName[0].Substring(FName[0].LastIndexOf('\\') + 1); F.Start = ConvertFileToDT(Fn); F.Chans = TempACQ.Chans; F.AnimalIDs = TempACQ.ID; F.Duration = TimeSpan.FromSeconds(TempACQ.FileTime); TempACQ.closeACQ(); FileType Fs = Files.Find(delegate(FileType Ft) { return ((DateTime.Compare(Ft.Start, F.Start) == 0) && (string.Compare(F.AnimalIDs[0], Ft.AnimalIDs[0])== 0)); }); //Determine if duplicate file - compare animal name and file start if (Fs != null) { //Boot us out of the function return false; } Files.Add(F); //Open the Feeder file string[] FLogName = Directory.GetFiles(Dir, "*Feeder.log"); if (FLogName.Length != 0) { DateTime d; string Type; int PC; string Line; int CurrentAnimal; int Feeder; StreamReader FLog = new StreamReader(FLogName[0]); while (!FLog.EndOfStream) { //5/1/2012 3:00:04 AM Feeder: 1 Pellets: 8 Medicated Line = FLog.ReadLine(); if (Line.IndexOf("Feeder") > -1) { DateTime.TryParse(Line.Substring(0, Line.IndexOf("Feeder") - 1), out d); int.TryParse(Line.Substring(Line.IndexOf("Pellets: ") + 9, 2), out PC); int.TryParse(Line.Substring(Line.IndexOf("Feeder: ") + 8, 2), out Feeder); CurrentAnimal = FindAnimal(F.AnimalIDs[Feeder / 2]); if (Feeder % 2 == 1) //Figure out which feeder went off using modulus. //Odd = Back, i.e. "_M_edicated" //Even = Front, i.e. "_U_nmedicated" { Type = "M"; //M for medicated } else { Type = "U"; //U for unmedicated } MealType M = new MealType(d.ToString(), Type, PC.ToString()); //create temporary MealType M Animals[CurrentAnimal].Meals.Add(M); //Add it to the correct animal } else if (Line.IndexOf("Removal") > -1) { int AID; string type; DateTime.TryParse(Line.Substring(0, Line.IndexOf("Removal") - 1), out d); int.TryParse(Line.Substring(Line.IndexOf("P: ") + 3), out PC); int.TryParse(Line.Substring(Line.IndexOf("Removal: ") + 9, 2), out AID); CurrentAnimal = FindAnimal(F.AnimalIDs[AID-1]); if (Line.IndexOf("Tot") > -1) { type = "T"; } else { type = "M"; } RemovalType R = new RemovalType(d.ToString(), PC.ToString(), type); Animals[CurrentAnimal].Removals.Add(R); } else if (Line.IndexOf("BloodDraw") > -1) { int AID; TimeSpan T; DateTime.TryParse(Line.Substring(0, Line.IndexOf("Blood") - 1), out d); int.TryParse(Line.Substring(Line.IndexOf("BloodDraw: ") + 11, 2), out AID); TimeSpan.TryParse(Line.Substring(Line.IndexOf("Time: ") + 5, 8), out T); string S = Line.Substring(Line.IndexOf("ID: ") + 4, 3); CurrentAnimal = FindAnimal(F.AnimalIDs[AID-1]); BloodDrawType B = new BloodDrawType(d.ToString(), T.ToString(), S); Animals[CurrentAnimal].BloodDraws.Add(B); } else { Console.WriteLine("Unparsable Line in feeding file: " + Line); } } FLog.Close(); } if (Directory.Exists(Dir + "\\Seizure")) { string[] SZFile = Directory.GetFiles(Dir + "\\Seizure", "*.txt"); if (SZFile[0] != null) { ImportSzFile(SZFile[0]); } } } return true; }