diff --git a/src/main/java/org/ntlab/rdlcanvas/generaterdl/ScreenGenerateRDL.java b/src/main/java/org/ntlab/rdlcanvas/generaterdl/ScreenGenerateRDL.java index 9d3dc1b..21bd649 100644 --- a/src/main/java/org/ntlab/rdlcanvas/generaterdl/ScreenGenerateRDL.java +++ b/src/main/java/org/ntlab/rdlcanvas/generaterdl/ScreenGenerateRDL.java @@ -1,8 +1,6 @@ package org.ntlab.rdlcanvas.generaterdl; -import org.ntlab.rdlcanvas.models.RDLSpec; -import org.ntlab.rdlcanvas.models.RDLSpecLang; -import org.ntlab.rdlcanvas.models.ValueType; +import org.ntlab.rdlcanvas.models.*; import org.ntlab.rdlcanvas.parser.StringValue; import org.ntlab.rdlcanvas.parser.Value; @@ -24,21 +22,23 @@ Map screenmap = ((org.ntlab.rdlcanvas.parser.JsonValue)value).getJson(); for (StringValue key1 : screenmap.keySet()){ - String screenId = key1.getStringValue(); //ScreenIDをStringValue(key1)からStringに変換 - spec.getConstant(screenId, checkValueType(key1)); //定数(Constant)の一覧に値を登録 + String scIdString = key1.getStringValue(); //ScreenIDをStringValue(key1)からStringに変換 + spec.getConstant(scIdString, checkValueType(key1)); //定数(Constant)の一覧に値を登録 Value widgets = screenmap.get(key1); Map widgetmap = ((org.ntlab.rdlcanvas.parser.JsonValue)widgets).getJson(); for (StringValue key2 : widgetmap.keySet()){ - String wId = key2.getStringValue(); //widgetIDをStringValue(key2)からStringに変換 - spec.getConstant(wId, checkValueType(key2)); + String wIdString = key2.getStringValue(); //widgetIDをStringValue(key2)からStringに変換 + spec.getConstant(wIdString, checkValueType(key2)); Value metas = widgetmap.get(key2); Map metamap = ((org.ntlab.rdlcanvas.parser.JsonValue)metas).getJson(); for (StringValue key3 : metamap.keySet()){ - String metaId = key3.getStringValue(); //MetaIDをStringValue(key3)からStringへ変換 + String metaIdString = key3.getStringValue(); //MetaIDをStringValue(key3)からStringへ変換 Value data = metamap.get(key3); //Dataを取得 - spec.getConstant(data.toString(), checkValueType(data)); + String dataString = data.toString(); + spec.getConstant(dataString, checkValueType(data)); + createScreenDefinition(scIdString, wIdString, metaIdString, dataString, spec); } } } @@ -57,4 +57,10 @@ return RDLSpecLang.typeDouble; } + //ただし定数はどうStatementに持ってくるか + private void createScreenDefinition(String scIdName, String wIdName, String metaIdName, String dataName, RDLSpec spec){ + RDLSpecDependencyTerm insideDependencyTerm = new RDLSpecDependencyTerm(spec.getRDLSpecResourceDeclaration(metaIdName).getResource(), new ArrayList<>(Arrays.asList(spec.getRDLSpecResourceDeclaration("wId").getResource())), new ArrayList<>(Arrays.asList(spec.getRDLSpecResourceDeclaration(wIdName).getResource()))); + RDLSpecDependencyTerm outsideDependencyTerm = new RDLSpecDependencyTerm(insideDependencyTerm, new ArrayList<>(Arrays.asList(spec.getRDLSpecResourceDeclaration("scId").getResource())), new ArrayList<>(Arrays.asList(spec.getRDLSpecResourceDeclaration(scIdName).getResource()))); + spec.addRDLSpecStatement(new RDLSpecInitialization(outsideDependencyTerm, spec.getRDLSpecResourceDeclaration(dataName).getResource())); + } } diff --git a/src/main/java/org/ntlab/rdlcanvas/generaterdl/ScreenTemplateGenerateRDL.java b/src/main/java/org/ntlab/rdlcanvas/generaterdl/ScreenTemplateGenerateRDL.java index 7819a54..87abc66 100644 --- a/src/main/java/org/ntlab/rdlcanvas/generaterdl/ScreenTemplateGenerateRDL.java +++ b/src/main/java/org/ntlab/rdlcanvas/generaterdl/ScreenTemplateGenerateRDL.java @@ -4,7 +4,6 @@ import java.util.ArrayList; import java.util.List; -import java.util.Map; public class ScreenTemplateGenerateRDL{ @@ -54,6 +53,7 @@ createElementPairDependencyFormula("wVisible", "widget", spec); createElementPairDependencyFormula("wColor", "widget", spec); + // [widget:wid]:screen createNestedDependencyFormula("widget", "wId", "screen", spec); }