package org.ntlab.rdlcanvas.generaterdl;
import org.ntlab.rdlcanvas.models.*;
import org.ntlab.rdlcanvas.parser.Value;
import java.util.ArrayList;
public class BaseGenerateRDL {
public ValueType checkValueType(Value value) {
if (value.getClass().getSimpleName().equals("StringValue")) {
return RDLSpecLang.typeString;
} else if (value.getClass().getSimpleName().equals("IntegerValue")) {
return RDLSpecLang.typeInt;
} else if (value.getClass().getSimpleName().equals("BooleanValue")) {
return RDLSpecLang.typeBoolean;
}
return RDLSpecLang.typeDouble;
}
// [depending: insideDependedId -> insideArguments] : outsideDependedId -> outsideArguments]
public RDLSpecDependencyTerm createNestedDependencyTerm(RDLSpec spec, String depending, String insideDependedId, boolean insideDependedIdPrime, String insideArgument, String outsideDependedId, boolean outsideDependedIdPrime, String outsideArgument){
ArrayList<RDLSpecEvaluatableTerm> insideDependedResourceList = new ArrayList<>();
ArrayList<RDLSpecEvaluatableTerm> insideArgumentsList = new ArrayList<>();
ArrayList<RDLSpecEvaluatableTerm> outsideDependedResourceList = new ArrayList<>();
ArrayList<RDLSpecEvaluatableTerm> outsideArgumentsList = new ArrayList<>();
insideArgumentsList.add(spec.getConstant(insideArgument, spec.getRDLSpecResourceDeclaration(insideDependedId).getResource().getValueType()));
outsideArgumentsList.add(spec.getConstant(outsideArgument, spec.getRDLSpecResourceDeclaration(outsideDependedId).getResource().getValueType()));
if(insideDependedIdPrime){
insideDependedResourceList.add(spec.getRDLSpecResourceDeclaration(insideDependedId).getPrimedResource());
}else{
insideDependedResourceList.add(spec.getRDLSpecResourceDeclaration(insideDependedId).getResource());
}
if(outsideDependedIdPrime){
outsideDependedResourceList.add(spec.getRDLSpecResourceDeclaration(outsideDependedId).getPrimedResource());
}else {
outsideDependedResourceList.add(spec.getRDLSpecResourceDeclaration(outsideDependedId).getResource());
}
RDLSpecDependencyTerm insideDependencyTerm = new RDLSpecDependencyTerm(spec.getRDLSpecResourceDeclaration(depending).getResource(), insideDependedResourceList, insideArgumentsList);
RDLSpecDependencyTerm outsideDependencyTerm = new RDLSpecDependencyTerm(insideDependencyTerm, outsideDependedResourceList, outsideArgumentsList);
return outsideDependencyTerm;
}
}