package net.ion.craken.script; import java.util.Iterator; import java.util.List; import net.ion.craken.node.ReadNode; import net.ion.framework.parse.gson.JsonArray; import net.ion.framework.parse.gson.JsonElement; import net.ion.framework.util.ListUtil; /** * Author: Ryunhee Han * Date: 2014. 1. 14. */ public class ListBuilder extends AbstractBuilder { private List<BasicBuilder> list = ListUtil.newList(); private BasicBuilder parent ; private BasicBuilder current ; protected ListBuilder(BasicBuilder parent) { this.parent = parent ; } public BasicBuilder parent() { return parent; } public ListBuilder next(){ BasicBuilder created = new BasicBuilder(this) ; list.add(created) ; current = created ; return this ; } public ListBuilder property(String name, Object value){ current.property(name, value) ; return this ; } public ListBuilder property(ReadNode node, String values) { return (ListBuilder) super.property(node, values); } public AbstractBuilder property(Iterable<ReadNode> nodes, String values) { Iterator<ReadNode> iter = nodes.iterator() ; while(iter.hasNext()){ ReadNode node = iter.next() ; property(node, values) ; if (iter.hasNext()) next() ; } return this; } @Override public JsonElement makeJson() { JsonArray array = new JsonArray(); for(BasicBuilder b : list){ array.add(b.makeJson()); } return array; } }