Esempio n. 1
0
        /// <summary>
        /// convert data from an input file to a new format and output to a new file
        /// this function could be broken down into smaller functions
        /// i.e. getData, convertData, writeData functions
        /// </summary>
        /// <param name="inputFile"></param>
        /// <param name="outputFile"></param>
        /// <param name="convertTo"></param>
        static void ConvertData(string inputFile, string outputFile, string convertTo)
        {
            // initialise variables
            CSVService inputService = null;
            IService <string, string, string> outputService = null;
            IBuilder  builder   = null;
            Converter converter = null;

            // get data
            inputService = new CSVService(inputFile);
            var lines = inputService.GetAllData();

            // create builder and output services dependent on new format required
            switch (convertTo.ToLower())
            {
            case "xml":
                builder       = new XMLBuilder("root", "entity");
                outputService = new XMLService(outputFile);
                break;

            case "json":
                builder       = new JSONBuilder();
                outputService = new JSONService(outputFile);
                break;

            default:
                throw new ArgumentNullException("Invalid file format to convert to");
            }

            // do the conversion
            converter = new Converter(builder);
            var data = converter.ConvertCSV(lines.headings, lines.data);

            // write the new file
            outputService.WriteData(data);
            WriteLine($"Created {convertTo} file: {outputFile}");
        }