package org.ntlab.rdlcanvas.generaterdl;
import org.ntlab.rdlcanvas.models.*;
import org.ntlab.rdlcanvas.parser.JsonValue;
import org.ntlab.rdlcanvas.parser.Parser;
import org.ntlab.rdlcanvas.parser.StringValue;
import org.ntlab.rdlcanvas.parser.Value;
import java.io.BufferedReader;
import java.util.Map;
public class GenerateRDL {
//screenのJsonとtableのJsonをまとめてreturnする用
private record SeparatedJsonValue(Value screen, Value table){}
RDLSpec spec = new RDLSpec();
public GenerateRDL() {
Parser parser = new Parser();
MetaScreenGenerateRDL metaScreenGenerateRDL = new MetaScreenGenerateRDL(spec);
MetaTableGenerateRDL metaTableGenerateRDL = new MetaTableGenerateRDL(spec);
MetaScreenViewGenerateRDL metaScreenViewGenerateRDL = new MetaScreenViewGenerateRDL(spec);
ScreenGenerateRDL screenGenerateRDL = new ScreenGenerateRDL(parser.getValue(), spec);
System.out.println(spec.toString());
}
public GenerateRDL(final BufferedReader reader) {
Parser parser = new Parser(reader);
//メタアプリケーション仕様
MetaScreenGenerateRDL metaScreenGenerateRDL = new MetaScreenGenerateRDL(spec);
MetaTableGenerateRDL metaTableGenerateRDL = new MetaTableGenerateRDL(spec);
MetaScreenViewGenerateRDL metaScreenViewGenerateRDL = new MetaScreenViewGenerateRDL(spec);
//JsonをScreen部分とTable部分に分割
SeparatedJsonValue separatedJson = separateJsonValue(parser.getValue());
//アプリケーション固有仕様
ScreenGenerateRDL screenGenerateRDL = new ScreenGenerateRDL(separatedJson.screen, spec);
TableGenerateRDL tableGenerateRDL = new TableGenerateRDL(separatedJson.table, spec);
System.out.println(spec.toString());
spec.outputConstant(); //デバッグ用
}
//一つのJsonValueからScreenとTableにそれぞれValueを分割
private SeparatedJsonValue separateJsonValue(Value parserValue) {
Map<StringValue, Value> jsonmap = ((JsonValue) parserValue).getJson();
Value screenValue = null;
Value tableValue = null;
for (StringValue key : jsonmap.keySet()) {
if (key.getStringValue().equals("screen")) {
screenValue = jsonmap.get(key);
} else if (key.getStringValue().equals("table")) {
tableValue = jsonmap.get(key);
}
}
return new SeparatedJsonValue(screenValue, tableValue);
}
}