diff --git a/R7.University.Core.Tests/Program.cs b/R7.University.Core.Tests/Program.cs index 1ad827bb..f02b0e1d 100644 --- a/R7.University.Core.Tests/Program.cs +++ b/R7.University.Core.Tests/Program.cs @@ -31,7 +31,7 @@ static void WorkbookToCsv () { Console.WriteLine ("--- Start test output"); var workbookManager = new WorkbookManager (); - Console.Write (workbookManager.SerializeWorkbook ("./assets/templates/workbook-1.xls", WorkbookSerializationFormat.CSV)); + Console.Write (workbookManager.SerializeWorkbook ("./assets/templates/workbook-1.xls", workbookManager.GetWorkbookSerializer (WorkbookSerializationFormat.CSV))); Console.WriteLine ("--- End test output"); } @@ -39,7 +39,7 @@ static void WorkbookToLinearCsv () { Console.WriteLine ("--- Start test output"); var workbookManager = new WorkbookManager (); - Console.Write (workbookManager.SerializeWorkbook ("./assets/templates/workbook-1.xls", WorkbookSerializationFormat.LinearCSV)); + Console.Write (workbookManager.SerializeWorkbook ("./assets/templates/workbook-1.xls", workbookManager.GetWorkbookSerializer (WorkbookSerializationFormat.LinearCSV))); Console.WriteLine ("--- End test output"); } } diff --git a/R7.University.Core.Tests/Templates/WorkbookManagerTests.cs b/R7.University.Core.Tests/Templates/WorkbookManagerTests.cs index 92d58dfb..a86d143f 100644 --- a/R7.University.Core.Tests/Templates/WorkbookManagerTests.cs +++ b/R7.University.Core.Tests/Templates/WorkbookManagerTests.cs @@ -1,3 +1,4 @@ +using System; using R7.University.Templates; using Xunit; @@ -14,5 +15,15 @@ public void ReadWorkbookInfoTest () Assert.Equal ("Sample Entity", bookInfo.EntityType); Assert.Equal (123, bookInfo.EntityId); } + + [Fact] + public void GetWorkbookSerializerTest () + { + var wbm = new WorkbookManager (); + + Assert.Equal (nameof (WorkbookToCsvSerializer), wbm.GetWorkbookSerializer (WorkbookSerializationFormat.CSV).GetType ().Name); + Assert.Equal (nameof (WorkbookToLinearCsvSerializer), wbm.GetWorkbookSerializer (WorkbookSerializationFormat.LinearCSV).GetType ().Name); + Assert.Throws (() => wbm.GetWorkbookSerializer ("NoExistentSerializer")); + } } } diff --git a/R7.University.Core/Templates/WorkbookManager.cs b/R7.University.Core/Templates/WorkbookManager.cs index c35fd5ab..e9d982e0 100644 --- a/R7.University.Core/Templates/WorkbookManager.cs +++ b/R7.University.Core/Templates/WorkbookManager.cs @@ -7,18 +7,11 @@ namespace R7.University.Templates { public class WorkbookManager { - public string SerializeWorkbook (string filePath, string format) - { - return SerializeWorkbook (filePath, - (WorkbookSerializationFormat) Enum.Parse (typeof (WorkbookSerializationFormat), format)); - } - - public string SerializeWorkbook (string filePath, WorkbookSerializationFormat format) + public string SerializeWorkbook (string filePath, IWorkbookSerializer serializer) { var workbookProvider = new HSSFWorkbookProvider (); - var workbookSerializer = GetWorkbookSerializer (format); using (var fileStream = new FileStream (filePath, FileMode.Open, FileAccess.Read)) { - return workbookSerializer.Serialize (workbookProvider.CreateWorkbook (fileStream), new StringBuilder ()) + return serializer.Serialize (workbookProvider.CreateWorkbook (fileStream), new StringBuilder ()) .ToString (); } } @@ -37,7 +30,13 @@ public IWorkbookSerializer GetWorkbookSerializer (WorkbookSerializationFormat fo return new WorkbookToCsvSerializer (); } - throw new ArgumentException ("Unsupported serialization format!", nameof (format)); + return null; + } + + public IWorkbookSerializer GetWorkbookSerializer (string format) + { + var enumFormat = (WorkbookSerializationFormat) Enum.Parse (typeof (WorkbookSerializationFormat), format); + return GetWorkbookSerializer (enumFormat); } public WorkbookInfo ReadWorkbookInfo (string filePath) diff --git a/R7.University.Launchpad/Services/WorkbookConverterController.cs b/R7.University.Launchpad/Services/WorkbookConverterController.cs index b1fcf39d..0cb93f27 100644 --- a/R7.University.Launchpad/Services/WorkbookConverterController.cs +++ b/R7.University.Launchpad/Services/WorkbookConverterController.cs @@ -124,9 +124,7 @@ public HttpResponseMessage ConvertOriginal (string fileName, string guid, string string FindAndConvertOriginal (string filePath, string format) { var workbookManager = new WorkbookManager (); - var serializer = - workbookManager.GetWorkbookSerializer ( - (WorkbookSerializationFormat) Enum.Parse (typeof (WorkbookSerializationFormat), format)); + var serializer = workbookManager.GetWorkbookSerializer (format); var bookInfo = workbookManager.ReadWorkbookInfo (filePath); if (bookInfo.EntityId != null && !string.IsNullOrEmpty (bookInfo.EntityType)) { @@ -144,7 +142,7 @@ string FindAndConvertOriginal (string filePath, string format) string GetWorkbookText (string tempFilePath, string format) { var workbookManager = new WorkbookManager (); - return workbookManager.SerializeWorkbook (tempFilePath, format); + return workbookManager.SerializeWorkbook (tempFilePath, workbookManager.GetWorkbookSerializer (format)); } string GetEmployeeCsvText (IEmployee employee, IWorkbookSerializer serializer)