/// <summary> /// Load an input file for a given month. /// </summary> /// <param name="path">directory containing the month files</param> /// <param name="month">month to load</param> /// <returns>file contents</returns> public static List <IJourneyDetailsType> LoadMonth( string path, int month) { string filePath = DailyInputFactory.BuildFilePath( path, month); if (string.IsNullOrEmpty(filePath)) { Logger.Instance.WriteLog( $"ERROR: DailyInputFactory: Load Month: Input is invalid (Path-{path}, Month-{month})"); return(new List <IJourneyDetailsType>()); } int year; try { year = DailyInputFactory.GetYear(path); } catch (Exception ex) { Logger.Instance.WriteLog( $"ERROR: DailyInputFactory: Load Month: Input is invalid (Path-{path}, Month-{month})"); return(new List <IJourneyDetailsType>()); } return(DailyInputFactory.LoadFile( filePath, year, month)); }
/// <summary> /// Load an input file. /// </summary> /// <param name="filePath">name and path of file to load</param> /// <returns>file contents</returns> private static List <IJourneyDetailsType> LoadFile( string filePath) { if (!File.Exists(filePath)) { return(new List <IJourneyDetailsType>()); } int month; int year; try { month = DailyInputFactory.GetMonth(filePath); year = DailyInputFactory.GetYear(filePath); } catch (Exception ex) { Logger.Instance.WriteLog( $"DailyInputFactory File name is invalid {ex}"); return(new List <IJourneyDetailsType>()); } List <JourneyDetailsType> fileList = new List <JourneyDetailsType>(); return(DailyInputFactory.LoadFile( filePath, year, month)); }
/// <summary> /// Save a day. /// </summary> /// <remarks> /// Need to revisit this to look at the correct division of labour. /// </remarks> /// <param name="year"></param> /// <param name="month"></param> /// <param name="day"></param> /// <param name="dayJourneysList"></param> /// <returns></returns> public static void SaveDay( int year, int month, int day, List <IJourneyDetailsType> dayJourneysList) { StreamWriter writer; List <IJourneyDetailsType> newJourneys = new List <IJourneyDetailsType>(); foreach (IJourneyDetailsType journey in dayJourneysList) { newJourneys.Add((IJourneyDetailsType)journey); } string saveFilePath = DailyInputFactory.BuildFilePath( year, month); List <string> baFileLines = new List <string>(); DailyInputFactory.EnsureDirectoryExists(year); DailyInputFactory.BackupFile( saveFilePath, year, month); List <IJourneyDetailsType> existingJourneys = DailyInputFactory.LoadFile(saveFilePath); List <IJourneyDetailsType> beforeDay = DailyInputFactory.GetJnysBeforeDay( existingJourneys, day); List <IJourneyDetailsType> afterDay = DailyInputFactory.GetJnysAfterDay( existingJourneys, day); // create new file // output buffer line by line. // if its a earlier day then output the line straight back out // if current date output todays journeys // if its a later day then output the line straight back out using (writer = new StreamWriter(saveFilePath)) { DailyInputFactory.OutputJourneys( writer, beforeDay); DailyInputFactory.OutputJourneys( writer, newJourneys); DailyInputFactory.OutputJourneys( writer, afterDay); } }
/// <summary> /// Get all the journeys for the given <paramref name="date"/> /// </summary> /// <param name="date">day to check</param> /// <returns>observable collection of journeys</returns> public static List <IJourneyDetailsType> LoadDay(DateTime date) { string filePath = DailyInputFactory.BuildFilePath( date.Year, date.Month); if (string.IsNullOrEmpty(filePath)) { Logger.Instance.WriteLog( $"ERROR: DailyInputFactory: Load File: Input is invalid (Date-{date})"); return(new List <IJourneyDetailsType>()); } return (DailyInputFactory.LoadFile( filePath, date.Year, date.Month, date.Day)); }
/// <summary> /// Load an input file for a given month. /// </summary> /// <param name="year">year to load</param> /// <param name="month">month to load</param> /// <returns>file contents</returns> public static List <IJourneyDetailsType> LoadMonth( int year, int month) { List <IJourneyDetailsType> fileJourneys = new List <IJourneyDetailsType>(); string filePath = DailyInputFactory.BuildFilePath( year, month); if (string.IsNullOrEmpty(filePath)) { Logger.Instance.WriteLog( $"ERROR: DailyInputFactory: Load File: Input is invalid (Year-{year}, Month-{month})"); return(new List <IJourneyDetailsType>()); } return(DailyInputFactory.LoadFile( filePath, year, month)); }