/// <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}"); }