RuneHive-Tarnish
Neural OSRS Enhancement Framework
Loading...
Searching...
No Matches
GsonParser.java
1package com.osroyale.util.parser;
2
3import com.google.gson.*;
4import com.google.gson.stream.JsonReader;
5import org.apache.logging.log4j.LogManager;
6import org.apache.logging.log4j.Logger;
7
8import java.io.FileReader;
9
44
45* This class provides an easy to use google gson parser specifically designed for parsing JSON files.
46 *
47 * @author Seven
48 * @author Daniel
49 */
50public abstract class GsonParser extends GenericParser {
51
52 private static final Logger logger = LogManager.getLogger(GsonParser.class);
53
55 protected transient Gson builder;
56
62 public GsonParser(String path) {
63 this(path, true);
64 }
65
72 public GsonParser(String path, boolean log) {
73 super(path, ".json", log);
74 this.builder = new GsonBuilder().create();
75 }
76
77 public void initialize(int size) {
78 }
79
85 protected abstract void parse(JsonObject data);
86
90 protected void onEnd() {
91 }
92
93 @Override
94 public final void deserialize() {
95 try (final JsonReader reader = new JsonReader(new FileReader(path.toFile()))) {
96 final JsonParser parser = new JsonParser();
97 final JsonElement element = parser.parse(reader);
98
99 if (element.isJsonNull()) {
100 logger.warn(String.format("json document=%s is null", path));
101 return;
102 }
103
104 if (element.isJsonArray()) {
105 final JsonArray array = element.getAsJsonArray();
106 initialize(array.size());
107 for (index = 0; index < array.size(); index++) {
108 final JsonElement element2 = array.get(index);
109 if (element2 == null) continue;
110 if (element2 instanceof JsonNull) continue;
111
112 final JsonObject data = (JsonObject) element2;
113 parse(data);
114 }
115 } else if (element.isJsonObject()) {
116 parse(element.getAsJsonObject());
117 }
118
119 onEnd();
120 } catch (Exception e) {
121 e.printStackTrace();
122 }
123 }
124
125}
GenericParser(String path, String extension, boolean log)
abstract void parse(JsonObject data)
GsonParser(String path, boolean log)