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<List> screendataList = new ArrayList<List>(); //各画面のWidget一覧
List<List> rdlList = new ArrayList<List>(); //RDLのメゾットを格納するリスト
public GenerateRDL(){
Parser parser = new Parser();
createScreenData(parser.getValue());
for(List<String> 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<StringValue, Value> screenmap = ((org.ntlab.rdlcanvas.parser.JsonValue)value).getJson();
for (StringValue key1 : screenmap.keySet()){
String screenId = key1.getStringValue(); //ScreenIDを取得
Value widget = screenmap.get(key1);
Map<StringValue, Value> widgetmap = ((org.ntlab.rdlcanvas.parser.JsonValue)widget).getJson();
for (StringValue key2 : widgetmap.keySet()){
String wId = key2.getStringValue(); //WidgetIDを取得
Value meta = widgetmap.get(key2);
Map<StringValue, Value> 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<String> datalist = new ArrayList<String>(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<List> screendataList){
// RDLを生成する処理をここに実装する
}
// screendataListを返す
public List<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));
}
}