diff options
Diffstat (limited to 'src/main/java/net/sowgro/npehero/levelapi')
3 files changed, 15 insertions, 4 deletions
diff --git a/src/main/java/net/sowgro/npehero/levelapi/Difficulties.java b/src/main/java/net/sowgro/npehero/levelapi/Difficulties.java index ea17e21..cfb3673 100644 --- a/src/main/java/net/sowgro/npehero/levelapi/Difficulties.java +++ b/src/main/java/net/sowgro/npehero/levelapi/Difficulties.java @@ -82,7 +82,7 @@ public class Difficulties {       * @param text The name of the directory       * @throws IOException If there is a problem adding the level       */ -    public void add(String text) throws IOException { +    public Difficulty add(String text) throws IOException {          File diffDir = new File(level.dir, text.toLowerCase().replaceAll("\\W+", "-"));          if (diffDir.exists()) {              throw new FileAlreadyExistsException(diffDir.getName()); @@ -92,6 +92,7 @@ public class Difficulties {              temp.title = text;              list.add(temp);              list.sort(Comparator.naturalOrder()); +            return temp;          }          else {              throw new IOException(); diff --git a/src/main/java/net/sowgro/npehero/levelapi/Difficulty.java b/src/main/java/net/sowgro/npehero/levelapi/Difficulty.java index 2e99a7a..99fa285 100755 --- a/src/main/java/net/sowgro/npehero/levelapi/Difficulty.java +++ b/src/main/java/net/sowgro/npehero/levelapi/Difficulty.java @@ -5,6 +5,7 @@ import com.google.gson.GsonBuilder;  import com.google.gson.ToNumberPolicy;  import java.io.*; +import java.util.HashMap;  import java.util.Map;  /** @@ -50,6 +51,9 @@ public class Difficulty implements Comparable<Difficulty>              return;          }          Map<String, Object> data = jsonParser.fromJson(new FileReader(jsonFile), Map.class); +        if (data == null) { +            data = new HashMap<>(); +        }          title = (String) data.getOrDefault("title", title);          bpm = (Double) data.getOrDefault("bpm", bpm); @@ -78,8 +82,13 @@ public class Difficulty implements Comparable<Difficulty>       * @throws IOException If there is a problem writing to the file       */      public void writeMetadata() throws IOException { -        jsonFile.createNewFile(); +        if (!jsonFile.createNewFile()) { +            throw new IOException("Could not create file " + jsonFile.getAbsolutePath()); +        }          Map<String, Object> data = jsonParser.fromJson(new FileReader(jsonFile), Map.class); // start with previous values +        if (data == null) { +            data = new HashMap<>(); +        }          data.put("title", title);          data.put("endTime", endTime);          data.put("priority", order); diff --git a/src/main/java/net/sowgro/npehero/levelapi/Levels.java b/src/main/java/net/sowgro/npehero/levelapi/Levels.java index c82c2fa..37878d8 100755 --- a/src/main/java/net/sowgro/npehero/levelapi/Levels.java +++ b/src/main/java/net/sowgro/npehero/levelapi/Levels.java @@ -39,7 +39,7 @@ public class Levels {              try {                  Level level = new Level(file);                  list.add(level); -            } catch (IOException e) { +            } catch (Exception e) {                  problems.put(file.getName(), e);                  e.printStackTrace();              } @@ -52,7 +52,7 @@ public class Levels {       * @param text: the name of the directory and default title       * @throws IOException if there was an error adding the level       */ -    public static void add(String text) throws IOException { +    public static Level add(String text) throws IOException {          File levelDir = new File(dir, text.toLowerCase().replaceAll("\\W+", "-"));          if (levelDir.exists()) {              throw new FileAlreadyExistsException(levelDir.getName()); @@ -61,6 +61,7 @@ public class Levels {              Level temp = new Level(levelDir);              temp.title = text;              list.add(temp); +            return temp;          }          else {              throw new IOException();  | 
