package org.ntlab.rdlcanvas.generaterdl;
import org.ntlab.rdlcanvas.models.*;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
public class ScreenTemplateGenerateRDL {
RDLSpec spec = new RDLSpec();
public ScreenTemplateGenerateRDL(){
createScreenTemplateResourceDeclaration();
createScreenTemplateFormula();
System.out.println(spec.toString());
}
private void createScreenTemplateResourceDeclaration(){
//ex screen(1) :: struct
spec.addRDLSpecResourceDeclaration("screen", 1, StructuralType.structure, null);
spec.addRDLSpecResourceDeclaration("scId", 1, StructuralType.id, RDLSpecLang.typeString);
spec.addRDLSpecResourceDeclaration("widget", 2, StructuralType.structure, null);
spec.addRDLSpecResourceDeclaration("wId", 2, StructuralType.id, RDLSpecLang.typeString);
spec.addRDLSpecResourceDeclaration("wText", 2, RDLSpecLang.typeString);
spec.addRDLSpecResourceDeclaration("wType", 2, RDLSpecLang.typeString);
spec.addRDLSpecResourceDeclaration("wState", 2, RDLSpecLang.typeString);
spec.addRDLSpecResourceDeclaration("wX", 2, RDLSpecLang.typeInt);
spec.addRDLSpecResourceDeclaration("wY", 2, RDLSpecLang.typeInt);
spec.addRDLSpecResourceDeclaration("wWidth", 2, RDLSpecLang.typeInt);
spec.addRDLSpecResourceDeclaration("wHeight", 2, RDLSpecLang.typeInt);
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(){
List<RDLSpecEvaluatableTerm> dependedList = new ArrayList<>();
List<RDLSpecEvaluatableTerm> 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();
// 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();
}
private void createElementPairDependencyFormula(String depending, String depended, List<RDLSpecEvaluatableTerm> dependedList){
}
}