diff --git a/src/main/java/org/ntlab/rdlcanvas/generaterdl/GenerateRDL.java b/src/main/java/org/ntlab/rdlcanvas/generaterdl/GenerateRDL.java index 2e4b514..9443429 100644 --- a/src/main/java/org/ntlab/rdlcanvas/generaterdl/GenerateRDL.java +++ b/src/main/java/org/ntlab/rdlcanvas/generaterdl/GenerateRDL.java @@ -11,16 +11,16 @@ public GenerateRDL() { Parser parser = new Parser(); - ScreenGenerateRDL screenGenerateRDL = new ScreenGenerateRDL(parser.getValue(), spec); ScreenTemplateGenerateRDL screenTemplateGenerateRDL = new ScreenTemplateGenerateRDL(spec); + ScreenGenerateRDL screenGenerateRDL = new ScreenGenerateRDL(parser.getValue(), spec); System.out.println(spec.toString()); spec.outputConstant(); } public GenerateRDL(final BufferedReader reader) { Parser parser = new Parser(reader); - ScreenGenerateRDL screenGenerateRDL = new ScreenGenerateRDL(parser.getValue(), spec); ScreenTemplateGenerateRDL screenTemplateGenerateRDL = new ScreenTemplateGenerateRDL(spec); + ScreenGenerateRDL screenGenerateRDL = new ScreenGenerateRDL(parser.getValue(), spec); System.out.println(spec.toString()); spec.outputConstant(); } diff --git a/src/main/java/org/ntlab/rdlcanvas/generaterdl/ScreenTemplateGenerateRDL.java b/src/main/java/org/ntlab/rdlcanvas/generaterdl/ScreenTemplateGenerateRDL.java index d0ef94f..7819a54 100644 --- a/src/main/java/org/ntlab/rdlcanvas/generaterdl/ScreenTemplateGenerateRDL.java +++ b/src/main/java/org/ntlab/rdlcanvas/generaterdl/ScreenTemplateGenerateRDL.java @@ -7,7 +7,7 @@ import java.util.Map; -public class ScreenTemplateGenerateRDL { +public class ScreenTemplateGenerateRDL{ public ScreenTemplateGenerateRDL(RDLSpec spec){ createScreenTemplateResourceDeclaration(spec); @@ -41,28 +41,37 @@ private void createScreenTemplateFormula(RDLSpec spec){ - List dependedList = new ArrayList<>(); - List dependingList = new ArrayList<>(); - //ex screen:scId - dependedList.add(spec.getRDLSpecResourceDeclaration("scId").getResource()); - spec.addRDLSpecStatement(new RDLSpecDependencyFormula(new RDLSpecDependency(spec.getRDLSpecResourceDeclaration("screen").getResource(), dependedList))); - dependedList.clear(); + createElementPairDependencyFormula("scId", "screen", spec); + createElementPairDependencyFormula("wText", "widget", spec); + createElementPairDependencyFormula("wType", "widget", spec); + createElementPairDependencyFormula("wState", "widget", spec); + createElementPairDependencyFormula("wX", "widget", spec); + createElementPairDependencyFormula("wY", "widget", spec); + createElementPairDependencyFormula("wHeight", "widget", spec); + createElementPairDependencyFormula("wWidth", "widget", spec); + createElementPairDependencyFormula("wEnabled", "widget", spec); + createElementPairDependencyFormula("wVisible", "widget", spec); + createElementPairDependencyFormula("wColor", "widget", spec); - // ex wText:widget - dependedList.add(spec.getRDLSpecResourceDeclaration("widget").getResource()); - spec.addRDLSpecStatement(new RDLSpecDependencyFormula(new RDLSpecDependency(spec.getRDLSpecResourceDeclaration("wText").getResource(), dependedList))); - dependedList.clear(); - - //ex wState:widget - dependedList.add(spec.getRDLSpecResourceDeclaration("widget").getResource()); - spec.addRDLSpecStatement(new RDLSpecDependencyFormula(new RDLSpecDependency(spec.getRDLSpecResourceDeclaration("wText").getResource(), dependedList))); - dependedList.clear(); - + createNestedDependencyFormula("widget", "wId", "screen", spec); } - private void createElementPairDependencyFormula(String depending, String depended, List dependedList){ + private void createElementPairDependencyFormula(String depending, String depended, RDLSpec spec){ + + List dependedList = new ArrayList<>(); + dependedList.add(spec.getRDLSpecResourceDeclaration(depended).getResource()); + spec.addRDLSpecStatement(new RDLSpecDependencyFormula(new RDLSpecDependency(spec.getRDLSpecResourceDeclaration(depending).getResource(), dependedList))); + + } + + private void createNestedDependencyFormula(String depending, String depended, String outsideDepended ,RDLSpec spec){ + List dependedInsideList = new ArrayList<>(); + List dependedOutsideList = new ArrayList<>(); + dependedInsideList.add(spec.getRDLSpecResourceDeclaration(depended).getResource()); + dependedOutsideList.add(spec.getRDLSpecResourceDeclaration(outsideDepended).getResource()); + spec.addRDLSpecStatement(new RDLSpecDependencyFormula(new RDLSpecDependency(new RDLSpecDependency(spec.getRDLSpecResourceDeclaration(depending).getResource(), dependedInsideList) ,dependedOutsideList))); }