diff --git a/src/main/java/org/misoenergy/hackday/kessel_run/PCGenConverter.java b/src/main/java/org/misoenergy/hackday/kessel_run/PCGenConverter.java new file mode 100644 index 0000000..e9cf05b --- /dev/null +++ b/src/main/java/org/misoenergy/hackday/kessel_run/PCGenConverter.java @@ -0,0 +1,54 @@ +package org.misoenergy.hackday.kessel_run; + +import org.misoenergy.hackday.kessel_run.class_definitions.CharacterClass; + +import java.io.File; +import java.io.FileWriter; +import java.io.IOException; +import java.util.List; + +public class PCGenConverter { + + public File convertToPCGen(List classes) { + File pcGenOutput = new File("sw5eEquipment.lst"); + FileWriter writer = setupFileWriter(pcGenOutput); + + classes.stream().forEach((CharacterClass charClass) -> { + try { + writer.write(charClass.getArchetypes()); + writer.write(charClass.getName()); + writer.write(charClass.getSummary()); + } catch (IOException e) { + e.printStackTrace(); + } + }); + + try { + writer.close(); + } catch (IOException e) { + e.printStackTrace(); + } + + PCGenExporter exporter = new PCGenExporter(); + exporter.export(pcGenOutput); + return pcGenOutput; + } + + protected FileWriter setupFileWriter(File file) { + FileWriter writer = null; + + try { + writer = new FileWriter(file); + } catch (IOException e) { + handleFailedFileWriter(e); + } + + return writer; + } + + private void handleFailedFileWriter(Exception e) { + System.out.println("Unable to Write to File"); + e.printStackTrace(); + } + +} diff --git a/src/main/java/org/misoenergy/hackday/kessel_run/PCGenExporter.java b/src/main/java/org/misoenergy/hackday/kessel_run/PCGenExporter.java index 2058b62..8882e1b 100644 --- a/src/main/java/org/misoenergy/hackday/kessel_run/PCGenExporter.java +++ b/src/main/java/org/misoenergy/hackday/kessel_run/PCGenExporter.java @@ -20,9 +20,9 @@ public class PCGenExporter { if (file.createNewFile()) { System.out.println("File created: " + file.getName()); } else { - System.out.println("File already exists. Deleting and re-running"); - file.delete(); - createOutputFile(file); +// System.out.println("File already exists. Deleting and re-running"); +// file.delete(); +// file.createNewFile(); } } diff --git a/src/test/java/org/misoenergy/hackday/kessel_run/PCGenConverterTests.java b/src/test/java/org/misoenergy/hackday/kessel_run/PCGenConverterTests.java new file mode 100644 index 0000000..12f6ad3 --- /dev/null +++ b/src/test/java/org/misoenergy/hackday/kessel_run/PCGenConverterTests.java @@ -0,0 +1,58 @@ +package org.misoenergy.hackday.kessel_run; + +import org.junit.jupiter.api.Test; +import org.junit.runner.RunWith; +import org.junit.runners.JUnit4; +import org.misoenergy.hackday.kessel_run.class_definitions.CharacterClass; + +import java.io.*; +import java.util.ArrayList; +import java.util.List; + +import static junit.framework.TestCase.assertTrue; + +@RunWith(JUnit4.class) +public class PCGenConverterTests { + + @Test + void convertToPCGen() { + File pcGenOutput = new File("sw5eEquipment.lst"); + List classes = new ArrayList(); + + PCGenConverter converter = new PCGenConverter(); + File pcgenFile = converter.convertToPCGen(classes); + + assertTrue(pcgenFile.isFile()); + } + + @Test + void converterWritesCharacterClassesToFile() throws IOException { + File pcGenOutput = new File("sw5eEquipment.lst"); + List classes = createTestCharacterClasses(); + + PCGenConverter converter = new PCGenConverter(); + File pcgenFile = converter.convertToPCGen(classes); + + BufferedReader reader = new BufferedReader(new FileReader(pcgenFile)); + assertTrue(reader.readLine().contains("Test Class")); + reader.close(); + } + + List createTestCharacterClasses() { + List characterClasses = new ArrayList(); + + CharacterClass testClass = new CharacterClass(); + testClass.setArchetypes("Archetype1"); + testClass.setName("Test Class"); + testClass.setSummary("This is a test class"); + + + characterClasses.add(testClass); + return characterClasses; + } + + FileReader readPCGenFile(File file) throws FileNotFoundException { + return new FileReader(file); + } + +} diff --git a/src/test/java/org/misoenergy/hackday/kessel_run/PCGenExporterTest.java b/src/test/java/org/misoenergy/hackday/kessel_run/PCGenExporterTest.java index 770ca62..a6214c2 100644 --- a/src/test/java/org/misoenergy/hackday/kessel_run/PCGenExporterTest.java +++ b/src/test/java/org/misoenergy/hackday/kessel_run/PCGenExporterTest.java @@ -2,6 +2,7 @@ package org.misoenergy.hackday.kessel_run; import org.junit.jupiter.api.Test; import org.junit.runner.RunWith; +import org.junit.runners.JUnit4; import org.mockito.junit.MockitoJUnitRunner; import java.io.*; @@ -9,7 +10,7 @@ import java.io.*; import static org.junit.jupiter.api.Assertions.assertTrue; -@RunWith(MockitoJUnitRunner.class) +@RunWith(JUnit4.class) public class PCGenExporterTest { @@ -23,8 +24,10 @@ public class PCGenExporterTest { @Test void exporterCreatesFileWhenNoneExists() { exporter = new PCGenExporter(); - File file = new File("sw5eClasses.lst"); + File file = new File("sw5eEquipment.lst"); + deleteFileIfExists(file); + exporter.export(file); assertTrue(file.isFile()); } @@ -32,7 +35,7 @@ public class PCGenExporterTest { @Test void exporterRecreatesFileWhenExists() throws IOException { exporter = new PCGenExporter(); - File file = new File("sw5eClasses.lst"); + File file = new File("sw5eEquipment.lst"); deleteFileIfExists(file); createFileWithData(file); @@ -41,12 +44,20 @@ public class PCGenExporterTest { BufferedReader reader = new BufferedReader(new FileReader(file)); assertTrue(reader.readLine() == null); - + reader.close(); } void deleteFileIfExists(File file) { - if(!file.exists()) { - file.delete(); + boolean isDeleted = true; + + if(file.exists()) { + isDeleted = file.delete(); + } + + if (isDeleted) { + System.out.println("File Deleted"); + } else { + System.out.println("Unable to Delete File"); } }