diff --git a/src/main/java/org/ntlab/rdlcanvas/generaterdl/GenerateRDL.java b/src/main/java/org/ntlab/rdlcanvas/generaterdl/GenerateRDL.java index 9443429..2364035 100644 --- a/src/main/java/org/ntlab/rdlcanvas/generaterdl/GenerateRDL.java +++ b/src/main/java/org/ntlab/rdlcanvas/generaterdl/GenerateRDL.java @@ -13,6 +13,7 @@ Parser parser = new Parser(); ScreenTemplateGenerateRDL screenTemplateGenerateRDL = new ScreenTemplateGenerateRDL(spec); ScreenGenerateRDL screenGenerateRDL = new ScreenGenerateRDL(parser.getValue(), spec); + MetaTableGenerateRDL metaTableGenerateRDL = new MetaTableGenerateRDL(spec); System.out.println(spec.toString()); spec.outputConstant(); } @@ -21,6 +22,12 @@ Parser parser = new Parser(reader); ScreenTemplateGenerateRDL screenTemplateGenerateRDL = new ScreenTemplateGenerateRDL(spec); ScreenGenerateRDL screenGenerateRDL = new ScreenGenerateRDL(parser.getValue(), spec); + MetaTableGenerateRDL metaTableGenerateRDL = new MetaTableGenerateRDL(spec); + //SpecStatementにResourceDeclaretionを追加 + for(String name: spec.getResourceMap().keySet()){ + spec.addRDLSpecStatement(spec.getRDLSpecResourceDeclaration(name)); + } + System.out.println(spec.toString()); spec.outputConstant(); } diff --git a/src/main/java/org/ntlab/rdlcanvas/generaterdl/MetaTableGenerateRDL.java b/src/main/java/org/ntlab/rdlcanvas/generaterdl/MetaTableGenerateRDL.java new file mode 100644 index 0000000..552aeb8 --- /dev/null +++ b/src/main/java/org/ntlab/rdlcanvas/generaterdl/MetaTableGenerateRDL.java @@ -0,0 +1,27 @@ +package org.ntlab.rdlcanvas.generaterdl; + +import org.ntlab.rdlcanvas.models.RDLSpec; +import org.ntlab.rdlcanvas.models.RDLSpecLang; +import org.ntlab.rdlcanvas.models.StructuralType; +import org.ntlab.rdlcanvas.models.ValueType; + +public class MetaTableGenerateRDL { + + public MetaTableGenerateRDL(RDLSpec spec){ + createMetaTableResourceDeclaration(spec); + } + + private void createMetaTableResourceDeclaration(RDLSpec spec){ + + spec.addRDLSpecResourceDeclaration("table", 1, StructuralType.structure, null); + spec.addRDLSpecResourceDeclaration("tableId", 1, StructuralType.id, RDLSpecLang.typeString); + spec.addRDLSpecResourceDeclaration("keyName", 1, RDLSpecLang.typeString); + spec.addRDLSpecResourceDeclaration("curKey", 1, RDLSpecLang.typeString); + spec.addRDLSpecResourceDeclaration("columnName", 2, RDLSpecLang.typeString); + spec.addRDLSpecResourceDeclaration("columnNo", 2, StructuralType.id, RDLSpecLang.typeInt); + spec.addRDLSpecResourceDeclaration("columnValue", 2, RDLSpecLang.typeString); + spec.addRDLSpecResourceDeclaration("key", 2, StructuralType.id, RDLSpecLang.typeString); + + + } +} diff --git a/src/main/java/org/ntlab/rdlcanvas/generaterdl/ScreenGenerateRDL.java b/src/main/java/org/ntlab/rdlcanvas/generaterdl/ScreenGenerateRDL.java index 66c6d0e..ec0c24c 100644 --- a/src/main/java/org/ntlab/rdlcanvas/generaterdl/ScreenGenerateRDL.java +++ b/src/main/java/org/ntlab/rdlcanvas/generaterdl/ScreenGenerateRDL.java @@ -23,13 +23,11 @@ for (StringValue key1 : screenmap.keySet()){ 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 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(); @@ -37,7 +35,6 @@ String metaIdString = key3.getStringValue(); //MetaIDをStringValue(key3)からStringへ変換 Value data = metamap.get(key3); //Dataを取得 String dataString = data.toString(); - spec.getConstant(dataString, checkValueType(data)); createScreenDefinition(scIdString, wIdString, metaIdString, dataString, spec); } } @@ -57,7 +54,7 @@ return RDLSpecLang.typeDouble; } - //ただし定数はどうStatementに持ってくるか + //ex [wText : wId -> "editBotton"] : scId -> "一覧画面"] := "編集" private void createScreenDefinition(String scIdName, String wIdName, String metaIdName, String dataName, RDLSpec spec){ RDLSpecDependencyTerm insideDependencyTerm = new RDLSpecDependencyTerm(spec.getConstant(metaIdName, RDLSpecLang.typeString), new ArrayList<>(Arrays.asList(spec.getRDLSpecResourceDeclaration("wId").getResource())), new ArrayList<>(Arrays.asList(spec.getConstant(wIdName, RDLSpecLang.typeString)))); RDLSpecDependencyTerm outsideDependencyTerm = new RDLSpecDependencyTerm(insideDependencyTerm, new ArrayList<>(Arrays.asList(spec.getRDLSpecResourceDeclaration("scId").getResource())), new ArrayList<>(Arrays.asList(spec.getConstant(scIdName, RDLSpecLang.typeString)))); diff --git a/src/main/java/org/ntlab/rdlcanvas/generaterdl/ScreenTemplateGenerateRDL.java b/src/main/java/org/ntlab/rdlcanvas/generaterdl/ScreenTemplateGenerateRDL.java index 87abc66..4553d88 100644 --- a/src/main/java/org/ntlab/rdlcanvas/generaterdl/ScreenTemplateGenerateRDL.java +++ b/src/main/java/org/ntlab/rdlcanvas/generaterdl/ScreenTemplateGenerateRDL.java @@ -31,11 +31,6 @@ spec.addRDLSpecResourceDeclaration("wEnabled", 2, RDLSpecLang.typeBoolean); spec.addRDLSpecResourceDeclaration("wVisible", 2, RDLSpecLang.typeBoolean); spec.addRDLSpecResourceDeclaration("wColor", 2, RDLSpecLang.typeString); - - //SpecStatementにResourceDeclaretionを追加 - for(String name: spec.getResourceMap().keySet()){ - spec.addRDLSpecStatement(spec.getRDLSpecResourceDeclaration(name)); - } } private void createScreenTemplateFormula(RDLSpec spec){