Newer
Older
RDLCanvas / src / main / java / org / ntlab / rdlcanvas / generaterdl / ScreenTemplateGenerateRDL.java
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){

    }


}