package ca.uhn.fhir.narrative.template.nodes; import java.util.ArrayList; import java.util.Arrays; import java.util.List; import java.util.Map; import ca.uhn.fhir.narrative.template.tags.Tag; public class BlockNode implements LNode { private List<LNode> children; public BlockNode() { children = new ArrayList<LNode>(); } public void add(LNode node) { children.add(node); } public List<LNode> getChildren() { return new ArrayList<LNode>(children); } @Override public Object render(Map<String, Object> context) { StringBuilder builder = new StringBuilder(); for (LNode node : children) { Object value = node.render(context); if(value == null) { continue; } if(value == Tag.Statement.BREAK || value == Tag.Statement.CONTINUE) { return value; } else if (value.getClass().isArray()) { Object[] array = (Object[]) value; for (Object obj : array) { builder.append(String.valueOf(obj)); } } else { builder.append(String.valueOf(value)); } } return builder.toString(); } }