diff --git a/src/main/java/org/ntlab/rdlcanvas/generaterdl/GenerateRDL.java b/src/main/java/org/ntlab/rdlcanvas/generaterdl/GenerateRDL.java new file mode 100644 index 0000000..da4da9d --- /dev/null +++ b/src/main/java/org/ntlab/rdlcanvas/generaterdl/GenerateRDL.java @@ -0,0 +1,72 @@ +package org.ntlab.rdlcanvas.generaterdl; + +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.ArrayList; +import java.util.Arrays; +import java.util.List; +import java.util.Map; + +public class GenerateRDL { + + List screendataList = new ArrayList(); //各画面のWidget一覧 + List rdlList = new ArrayList(); //RDLのメゾットを格納するリスト + + public GenerateRDL(){ + Parser parser = new Parser(); + createScreenData(parser.getValue()); + for(List data : screendataList){ + System.out.println("screenId: " + data.get(0) + ", wId: " + data.get(1) + ", wMeta: " + data.get(2) + ", data: " + data.get(3)); + + } + + } + + public GenerateRDL(final BufferedReader reader){ + Parser parser = new Parser(reader); + createScreenData(parser.getValue()); + } + + // 画面ID、ウィジェットID、ウィジェットメタデータ、データを取得してListに変換、screendataListに格納 + private void createScreenData (Value value){ + + Map screenmap = ((org.ntlab.rdlcanvas.parser.JsonValue)value).getJson(); + + for (StringValue key1 : screenmap.keySet()){ + String screenId = key1.getStringValue(); //ScreenIDを取得 + Value widget = screenmap.get(key1); + Map widgetmap = ((org.ntlab.rdlcanvas.parser.JsonValue)widget).getJson(); + for (StringValue key2 : widgetmap.keySet()){ + String wId = key2.getStringValue(); //WidgetIDを取得 + Value meta = widgetmap.get(key2); + Map metamap = ((org.ntlab.rdlcanvas.parser.JsonValue)meta).getJson(); + for (StringValue key3 : metamap.keySet()){ + String metaID = key3.getStringValue(); //MetaIDを取得 + Value data = metamap.get(key3); //Dataを取得 + + List datalist = new ArrayList(Arrays.asList(screenId, wId, metaID, data.toString())); + screendataList.add(datalist); + //System.out.println("screenId: " + screenId + ", wId: " + wId + ", metaID: " + metaID + ", data: " + data.toString()); + } + } + } + } + + // RDLを生成 + private void createRDL(List screendataList){ + // RDLを生成する処理をここに実装する + } + + // screendataListを返す + public List getScreendataList() { + return screendataList; + } + + // screendataListに画面ID、ウィジェットID、ウィジェットメタデータ、データを追加 + public void setScreendataList(String screenId, String wId, String metaID, String data){ + screendataList.add(Arrays.asList(screenId, wId, metaID, data)); + } +}