diff --git a/src/main/java/org/ntlab/rdlcanvas/Main.java b/src/main/java/org/ntlab/rdlcanvas/Main.java index 1fb6bb8..eacb30c 100644 --- a/src/main/java/org/ntlab/rdlcanvas/Main.java +++ b/src/main/java/org/ntlab/rdlcanvas/Main.java @@ -11,7 +11,7 @@ public class Main { public static void main(String[] args) { - File file = new File("models/screen-wighet-sample.json"); + File file = new File("models/screen-table-sample.json"); try{ BufferedReader reader = new BufferedReader(new FileReader(file)); GenerateRDL generateRDL = new GenerateRDL(reader); diff --git a/src/main/java/org/ntlab/rdlcanvas/generaterdl/GenerateRDL.java b/src/main/java/org/ntlab/rdlcanvas/generaterdl/GenerateRDL.java index 729958d..9238035 100644 --- a/src/main/java/org/ntlab/rdlcanvas/generaterdl/GenerateRDL.java +++ b/src/main/java/org/ntlab/rdlcanvas/generaterdl/GenerateRDL.java @@ -1,12 +1,19 @@ 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() { @@ -16,17 +23,44 @@ 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); - ScreenGenerateRDL screenGenerateRDL = new ScreenGenerateRDL(parser.getValue(), 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(); + spec.outputConstant(); //デバッグ用 + } + + //一つのJsonValueからScreenとTableにそれぞれValueを分割 + private SeparatedJsonValue separateJsonValue(Value parserValue) { + Map 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); } }