Example #1
0
        /// <summary>
        /// Help read data from a storage; convert data into list of name object
        /// </summary>
        /// <param name="file">storage file</param>
        /// <returns></returns>
        public static List <Name> ReadNamesFromStorage(NamesFile file)
        {
            string      namesString;
            List <Name> names;

            //
            //create storage and message object from the respective factories
            //
            IStorage storage       = StorageFactory.CreatStorage(file);
            IMessage promptMessage = MessageFactory.CreatMessage(Message.MessageType.Prompt);

            //
            //read name list into a string from a storage
            //
            namesString = storage.ReadData();

            //
            //make a list of name object from the names in string
            //
            names = NamesStringConverter.ConvertStringToNames(namesString);


            //
            //give a reading completion message on screen
            //
            promptMessage.DisplayMessage("Reading data from " + file.ReadFilePath + " is completed");

            return(names);
        }
Example #2
0
        /// <summary>
        /// Write the list of name to storage
        /// </summary>
        /// <param name="file">file name and path</param>
        /// <param name="names">list of name object</param>
        public static void WriteNamesToStorage(NamesFile file, List <Name> names)
        {
            string namesString;

            //
            //create storage and message object from the factory
            //
            IStorage storage       = StorageFactory.CreatStorage(file);
            IMessage promptMessage = MessageFactory.CreatMessage(Message.MessageType.Prompt);


            //
            //convert list of name object to a string
            //
            namesString = NamesStringConverter.ConvertNamesToString(names);

            //
            //write names string to storage
            //
            storage.WriteData(namesString);

            //
            //give user a message of writing completion at the end
            //
            promptMessage.DisplayMessage("Writing data to " + file.WriteFilePath + " is completed");
        }
Example #3
0
        static void Main(string[] args)
        {
            string      FileNamePathToWrite;
            ILogger     logger       = LogFactory.CreatLogger();
            IMessage    errorMessage = MessageFactory.CreatMessage(Message.MessageType.Error);
            IMessage    promptMessage;
            IDisplay    display;
            NamesFile   file;
            List <Name> names;
            IStorage    storage;

            try
            {
                //
                //Get file name/path from app.config
                //
                FileNamePathToWrite = ConfigurationManager.AppSettings["FileNamePathToWrite"];

                //
                //create screen display object from the factory
                //
                display = DisplayFactory.CreatDisplay();

                //
                //create message object from the factory
                //
                promptMessage = MessageFactory.CreatMessage(Message.MessageType.Prompt);

                //
                //get file name and path for reading names from command parameter; file name and path for writing names to is set by program
                //
                file = FileInfoValidator.GetFile(args, FileNamePathToWrite);

                //
                //only proceed further if file is available
                //
                if (file != null)
                {
                    //
                    //create storage object from the factory
                    //
                    storage = StorageFactory.CreatStorage(file);

                    //
                    // get list of name object by reading
                    //
                    names = new ReadNamesHelper(storage).ReadNamesFromStorage();

                    //
                    //give a reading completion message on screen
                    //
                    promptMessage.DisplayMessage("Reading data from " + file.ReadFilePath + " is completed");

                    //
                    //do sorting on names
                    //
                    names = NameSorter.Sort(names);

                    //
                    //writing sorted names to a storage
                    //
                    WriteNamesHelper.WriteNamesToStorage(file, names);


                    //
                    //display sorted name list on screen
                    //
                    display.DisplayName(names);
                }
            }
            catch (Exception ex)
            {
                logger.Log(ex.Message);
                errorMessage.DisplayMessage(ex.Message);
            }
        }