X-Git-Url: https://mograsim.net/gitweb/?a=blobdiff_plain;f=net.mograsim.logic.ui%2Fsrc%2Fnet%2Fmograsim%2Flogic%2Fui%2Futil%2FJsonHandler.java;h=df48266622a22efe78cc8c18a907b0d2dcf2574c;hb=dbda073d92ae9dd8e701d904c4c71dd0edd1fce7;hp=dc8ace3d03a649213124678a2180e6afdb43d93b;hpb=a19dde054ec5cab3c835840d569880ee8ee156dc;p=Mograsim.git diff --git a/net.mograsim.logic.ui/src/net/mograsim/logic/ui/util/JsonHandler.java b/net.mograsim.logic.ui/src/net/mograsim/logic/ui/util/JsonHandler.java index dc8ace3d..df482666 100644 --- a/net.mograsim.logic.ui/src/net/mograsim/logic/ui/util/JsonHandler.java +++ b/net.mograsim.logic.ui/src/net/mograsim/logic/ui/util/JsonHandler.java @@ -1,9 +1,12 @@ package net.mograsim.logic.ui.util; import java.io.BufferedReader; -import java.io.FileReader; +import java.io.FileInputStream; import java.io.FileWriter; import java.io.IOException; +import java.io.InputStream; +import java.io.InputStreamReader; +import java.util.stream.Collectors; import com.google.gson.Gson; import com.google.gson.GsonBuilder; @@ -14,20 +17,40 @@ public class JsonHandler public static T readJson(String path, Class type) throws IOException { - try (FileReader reader = new FileReader(path); BufferedReader bf = new BufferedReader(reader)) + try (FileInputStream jsonStream = new FileInputStream(path)) { - String json = bf.lines().dropWhile(s -> s.length() == 0 || s.charAt(0) != '{').reduce("", (x, y) -> x.concat(y)); - T params = parser.fromJson(json, type); - return params; + return readJson(jsonStream, type); } } + /** + * @param input The Stream is closed after being read + */ + public static T readJson(InputStream input, Class type) throws IOException + { + try (InputStreamReader reader = new InputStreamReader(input); BufferedReader bf = new BufferedReader(reader)) + { + return fromJson(bf.lines().collect(Collectors.joining("\n")), type); + } + } + + public static T fromJson(String src, Class type) + { + // TODO actually parse and compare version + String rawJson = src.lines().dropWhile(s -> s.length() == 0 || s.charAt(0) != '{').collect(Collectors.joining()); + return parser.fromJson(rawJson, type); + } + public static void writeJson(Object o, String path) throws IOException { try (FileWriter writer = new FileWriter(path)) { - writer.write(String.format("mograsim version: %s\n", Version.jsonCompVersion.toString())); - writer.write(parser.toJson(o)); + writer.write(toJson(o)); } } + + public static String toJson(Object o) + { + return String.format("mograsim version: %s\n%s", Version.jsonCompVersion.toString(), parser.toJson(o)); + } }