package open.dolphin.stampbox; import java.io.IOException; import java.util.ArrayList; import java.util.Enumeration; import javax.swing.tree.DefaultMutableTreeNode; /** * Director to build StampTree XML data. * * @author Kazushi Minagawa, Digital Globe, Inc. */ public class StampTreeXmlDirector { private final DefaultStampTreeXmlBuilder builder; /** * Creates new StampTreeXmlDirector * @param builder */ public StampTreeXmlDirector(DefaultStampTreeXmlBuilder builder) { super(); this.builder = builder; } /** * スタンプツリー全体をXMLにエンコードする。 * @param allTrees StampTreeのリスト * @return XML */ public String build(ArrayList<StampTree> allTrees) { try { builder.buildStart(); for (StampTree tree : allTrees) { lbuild(tree); } builder.buildEnd(); return builder.getProduct(); } catch (Exception e) { e.printStackTrace(System.err); } return null; } /** * 一つのツリーをXMLにエンコードする * @param tree StampTree * @throws IOException */ private void lbuild(StampTree tree) throws IOException { // ルートノードを取得しチャイルドのEnumerationを得る DefaultMutableTreeNode rootNode = (DefaultMutableTreeNode) tree.getModel().getRoot(); Enumeration e = rootNode.preorderEnumeration(); StampTreeNode node = (StampTreeNode) e.nextElement(); // ルートノードを書き出す builder.buildRoot(node); // 子を書き出す while (e.hasMoreElements()) { builder.buildNode((StampTreeNode) e.nextElement()); } builder.buildRootEnd(); } }