001 /* 002 @license.text@ 003 */ 004 package biz.hammurapi.xml.dom; 005 006 import org.w3c.dom.Node; 007 import org.w3c.dom.NodeList; 008 009 import biz.hammurapi.util.PoliteVisitor; 010 import biz.hammurapi.util.Visitable; 011 import biz.hammurapi.util.Visitor; 012 013 /** 014 * Navigates Visitor through DOM tree. 015 * @author Pavel Vlasov 016 * @version $Revision: 1.2 $ 017 */ 018 public class DomVisitable implements Visitable { 019 private Node node; 020 021 public boolean accept(Visitor visitor) { 022 return accept(node, visitor); 023 } 024 025 /** 026 * @param node 027 * @param visitor 028 * @return 029 */ 030 private boolean accept(Node node, Visitor visitor) { 031 if (visitor.visit(node)) { 032 NodeList list = node.getChildNodes(); 033 for (int i=0, j=list.getLength(); i<j; i++) { 034 accept(list.item(i), visitor); 035 } 036 if (visitor instanceof PoliteVisitor) { 037 ((PoliteVisitor) visitor).leave(node); 038 } 039 return true; 040 } 041 return false; 042 } 043 044 /** 045 * @param node 046 */ 047 public DomVisitable(Node node) { 048 super(); 049 this.node = node; 050 } 051 }