package org.kefirsf.bb;
import org.kefirsf.bb.conf.Constant;
import org.kefirsf.bb.conf.If;
import org.kefirsf.bb.conf.NamedValue;
import org.kefirsf.bb.conf.TemplateElement;
import org.kefirsf.bb.proc.IfExpression;
import org.kefirsf.bb.proc.ProcNamedValue;
import org.kefirsf.bb.proc.ProcTemplateElement;
import org.kefirsf.bb.proc.TemplateConstant;
import java.util.ArrayList;
import java.util.List;
class TemplateElementFactory {
public TemplateElementFactory() {
}
List<ProcTemplateElement> createTemplateList(List<? extends TemplateElement> templateElements) {
List<ProcTemplateElement> elements = new ArrayList<ProcTemplateElement>();
for (TemplateElement element : templateElements) {
elements.add(create(element));
}
return elements;
}
private ProcTemplateElement create(TemplateElement element) {
if (element instanceof Constant) {
return new TemplateConstant(((Constant) element).getValue());
} else if (element instanceof NamedValue) {
NamedValue el = (NamedValue) element;
return new ProcNamedValue(el.getName(), el.getFunction());
} else if (element instanceof If) {
return createIf((If) element);
} else {
throw new TextProcessorFactoryException("Unknown template element " + element.getClass().getName() + ".");
}
}
private ProcTemplateElement createIf(If element) {
return new IfExpression(element.getName(), createTemplateList(element.getElements()));
}
}