Exemple #1
0
        /// <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));
        }
Exemple #2
0
        /// <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);
            }
        }
Exemple #3
0
        /// <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));
        }
Exemple #4
0
        /// <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));
        }