66 lines
2.1 KiB
Java
66 lines
2.1 KiB
Java
import java.io.FileOutputStream;
|
|
import java.io.OutputStreamWriter;
|
|
import java.nio.charset.StandardCharsets;
|
|
|
|
import com.google.gson.JsonArray;
|
|
import com.google.gson.JsonObject;
|
|
import com.google.gson.Gson;
|
|
import com.google.gson.GsonBuilder;
|
|
|
|
public class JsonWriter {
|
|
|
|
private static JsonObject writeVariableType(ExpFctsHelper.VariableType vt) {
|
|
JsonObject data = new JsonObject();
|
|
|
|
JsonArray hierarchy = new JsonArray();
|
|
for (String item : vt.getBaseTypeHierarchy()) {
|
|
hierarchy.add(item);
|
|
}
|
|
data.add("hierarchy", hierarchy);
|
|
data.addProperty("pointer_level", vt.getPointerLevel());
|
|
|
|
return data;
|
|
}
|
|
|
|
private static JsonObject writeExpFctParam(ExpFctsHelper.ExpFctParam param) {
|
|
JsonObject data = new JsonObject();
|
|
data.addProperty("name", param.mVarName);
|
|
data.addProperty("is_input", param.mIsInput);
|
|
data.addProperty("desc", param.mVarDesc);
|
|
data.add("type", writeVariableType(param.mVarType));
|
|
|
|
return data;
|
|
}
|
|
|
|
private static JsonObject writeExpFct(ExpFctsHelper.ExpFct fct) {
|
|
JsonObject data = new JsonObject();
|
|
data.addProperty("name", fct.mFctName);
|
|
data.add("return", writeVariableType(fct.mFctRetType));
|
|
|
|
JsonArray paramList = new JsonArray();
|
|
for (ExpFctsHelper.ExpFctParam param : fct.mFctParams) {
|
|
paramList.add(writeExpFctParam(param));
|
|
}
|
|
data.add("params", paramList);
|
|
|
|
return data;
|
|
}
|
|
|
|
private static JsonArray writeExpFctCollection(ExpFctsHelper.ExpFctCollection fctCollection) {
|
|
JsonArray data = new JsonArray();
|
|
for (ExpFctsHelper.ExpFct fct : fctCollection.mFcts) {
|
|
data.add(writeExpFct(fct));
|
|
}
|
|
return data;
|
|
}
|
|
|
|
public static void writeJson(ExpFctsHelper.ExpFctCollection data) throws Exception {
|
|
FileOutputStream fs = new FileOutputStream(CommonHelper.getOutputFilePath("BMExports.json"));
|
|
OutputStreamWriter writer = new OutputStreamWriter(fs, StandardCharsets.UTF_8);
|
|
//Gson gsonInstance = new GsonBuilder().serializeNulls().setPrettyPrinting().disableHtmlEscaping().create();
|
|
Gson gsonInstance = new GsonBuilder().serializeNulls().disableHtmlEscaping().create();
|
|
writer.write(gsonInstance.toJson(writeExpFctCollection(data)));
|
|
writer.close();
|
|
}
|
|
}
|