public static string Read(string file, int?project = null, bool sortbystartdate = false)
        {
            try
            {
                int noOfValueRows;
                //Read the .txt file into data columns.
                var fileDataColumns = FileReader.ReadFileData(file, out noOfValueRows);
                //Create objects out of input data.
                var productData = FileDataHandler.DataToObjects <ProductData>(fileDataColumns, noOfValueRows);

                //Filter data.
                if (project.HasValue)
                {
                    productData = FileDataHandler.FilterBy(productData, project.Value, pd => pd.Project);
                }

                //Sort data.
                if (sortbystartdate)
                {
                    productData = FileDataHandler.SortBy(productData, pd => pd.StartDate, false);
                }

                return(CreateProductDataOutput(productData, fileDataColumns));
            }
            catch (InputException ex)
            {
                throw ex;
            }
        }