diff --git a/src/main/java/org/ntlab/rdlcanvas/generaterdl/BaseGenerateRDL.java b/src/main/java/org/ntlab/rdlcanvas/generaterdl/BaseGenerateRDL.java new file mode 100644 index 0000000..5542e39 --- /dev/null +++ b/src/main/java/org/ntlab/rdlcanvas/generaterdl/BaseGenerateRDL.java @@ -0,0 +1,19 @@ +package org.ntlab.rdlcanvas.generaterdl; + +//import org.ntlab.rdlcanvas.parser.Value; + +import java.util.List; + +public abstract class BaseGenerateRDL { +// abstract void createData(Value value); // Jsonを構成するデータを抽出する +// abstract void createRDL(List DataList); // 抽出したデータからRDL式を作成する + + abstract List> getDataList(); //Jsonの構成データを返す + abstract void setDataList(String screenId, String wId, String metaID, String data); //DataListに追加 + abstract void outputData(); //Jsonの構成データを標準出力 + + abstract List getRDLList(); //RDL式を出力 + abstract void outputRDL(); //RDL式を標準出力 + + +} diff --git a/src/main/java/org/ntlab/rdlcanvas/generaterdl/GenerateRDL.java b/src/main/java/org/ntlab/rdlcanvas/generaterdl/GenerateRDL.java index 1f6a8b0..10ea6d8 100644 --- a/src/main/java/org/ntlab/rdlcanvas/generaterdl/GenerateRDL.java +++ b/src/main/java/org/ntlab/rdlcanvas/generaterdl/GenerateRDL.java @@ -1,102 +1,20 @@ 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; -import java.util.stream.Collectors; public class GenerateRDL { - List screendataList = new ArrayList(); //各画面のWidget一覧 - List screenRDLList = new ArrayList(); //RDLのメゾットを格納するリスト - - public GenerateRDL(){ + 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)); + ScreenGenerateRDL screenGenerateRDL = new ScreenGenerateRDL(parser.getValue()); - } - - createScreenRDL(screendataList); - toStingScreenRDL(); } - public GenerateRDL(final BufferedReader reader){ + 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 createScreenRDL(List screendataList){ - // RDLを生成する処理をここに実装する - for(List data: screendataList){ - StringBuilder stringBuilder = new StringBuilder(); - stringBuilder.append("[["); - stringBuilder.append(data.get(2)); - stringBuilder.append(":wId->"); - stringBuilder.append(data.get(1)); - stringBuilder.append("]:scId->"); - stringBuilder.append(data.get(0)); - stringBuilder.append("]="); - stringBuilder.append(data.get(3)); - screenRDLList.add(stringBuilder); - } - } - - - // screenRDLListを返す - public List getScreenRDLList(){ - return screenRDLList; - } - - // 作成されたRDLコードを標準出力 - public void toStingScreenRDL(){ - String result = screenRDLList.stream() - .map(StringBuilder::toString) - .collect(Collectors.joining("\n")); - - System.out.println(result); - } - - // 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)); + ScreenGenerateRDL screenGenerateRDL = new ScreenGenerateRDL(parser.getValue()); } } + diff --git a/src/main/java/org/ntlab/rdlcanvas/generaterdl/ScreenGenerateRDL.java b/src/main/java/org/ntlab/rdlcanvas/generaterdl/ScreenGenerateRDL.java new file mode 100644 index 0000000..ed5429e --- /dev/null +++ b/src/main/java/org/ntlab/rdlcanvas/generaterdl/ScreenGenerateRDL.java @@ -0,0 +1,107 @@ +package org.ntlab.rdlcanvas.generaterdl; + +import org.ntlab.rdlcanvas.parser.StringValue; +import org.ntlab.rdlcanvas.parser.Value; + +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; + +public class ScreenGenerateRDL extends BaseGenerateRDL{ + + List> screenDataList = new ArrayList<>(); //各画面のWidget一覧 + List screenRDLList = new ArrayList<>(); //RDLの式を格納するリスト + + + public ScreenGenerateRDL(Value value){ + createData(value); + createRDL(screenDataList); + outputData(); //デバッグ用 + outputRDL(); //デバッグ用 + } + + + + // Jsonを構成するデータを抽出する + private void createData(Value value){ + + Map screenmap = ((org.ntlab.rdlcanvas.parser.JsonValue)value).getJson(); + + for (StringValue key1 : screenmap.keySet()){ + String screenId = key1.toString(); //ScreenIDを取得 + Value widget = screenmap.get(key1); + Map widgetmap = ((org.ntlab.rdlcanvas.parser.JsonValue)widget).getJson(); + for (StringValue key2 : widgetmap.keySet()){ + String wId = key2.toString(); //WidgetIDを取得 + Value meta = widgetmap.get(key2); + Map metamap = ((org.ntlab.rdlcanvas.parser.JsonValue)meta).getJson(); + for (StringValue key3 : metamap.keySet()){ + String metaID = key3.toString(); //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){ + + for(List data: screenDataList){ + StringBuilder stringBuilder = new StringBuilder(); + stringBuilder.append("[["); + stringBuilder.append(data.get(2)); + stringBuilder.append(":wId->"); + stringBuilder.append(data.get(1)); + stringBuilder.append("]:scId->"); + stringBuilder.append(data.get(0)); + stringBuilder.append("]="); + stringBuilder.append(data.get(3)); + screenRDLList.add(stringBuilder); + } + } + + //Json構成データを返す + @Override + public List> getDataList(){ + return screenDataList; + } + + //DataListに渡された値のリストを追加 + @Override + public void setDataList(String screenId, String wId, String metaID, String data){ + screenDataList.add(Arrays.asList(screenId, wId, metaID, data)); + } + + // DataListを標準出力 + @Override + public void outputData(){ + for(List data : screenDataList){ + System.out.println("screenId: " + data.get(0) + ", wId: " + data.get(1) + ", wMeta: " + data.get(2) + ", data: " + data.get(3)); + } + } + + //RDL式を返す + @Override + public List getRDLList(){ + return screenRDLList; + } + + //RDL式を標準出力 + @Override + public void outputRDL(){ + String result = screenRDLList.stream() + .map(StringBuilder::toString) + .collect(Collectors.joining("\n")); + + System.out.println(result); + } + + + +}