1 5 package test.dom4j; 6 7 import junit.framework.Test; 8 import junit.framework.TestSuite; 9 import junit.textui.TestRunner; 10 import org.dom4j.Element; 11 import org.dom4j.ElementHandler; 12 import org.dom4j.ElementPath; 13 import org.dom4j.io.SAXReader; 14 import org.ozoneDB.xml.dom4j.io.O3SAXReader; 15 16 import java.io.File ; 17 18 27 public class TestEmbeddedHandler extends AbstractTestCase { 28 29 protected String [] testDocuments = { "xml/test/FranzBeilMain.xml", }; 30 final int MAIN_READER = 0; 31 final int ON_END_READER = 1; 32 private StringBuffer [] _results = 33 { new StringBuffer (), new StringBuffer ()}; 34 protected int _test; 35 36 public static void main(String [] args) { 37 TestRunner.run(suite()); 38 } 39 40 public static Test suite() { 41 return new TestSuite(TestEmbeddedHandler.class); 42 } 43 44 48 public TestEmbeddedHandler(String name) { 49 super(name); 50 } 51 52 56 class MainHandler implements ElementHandler { 57 58 SAXReader _mainReader; 59 String _mainDir; 60 61 public MainHandler(String dir) { 62 _mainReader = new SAXReader(); 63 _mainDir = dir; 64 _mainReader.addHandler("/import/stuff", new EmbeddedHandler()); 65 } 66 67 public void onStart(ElementPath path) {} 68 69 public void onEnd(ElementPath path) { 70 String href = path.getCurrent().attribute("href").getValue(); 71 Element importRef = path.getCurrent(); 72 Element parentElement = importRef.getParent(); 73 SAXReader onEndReader = new SAXReader(); 74 onEndReader.addHandler("/import/stuff", new EmbeddedHandler()); 75 76 File file = new File (_mainDir + File.separator + href); 77 Element importElement = null; 78 try { 79 if (_test == MAIN_READER) 80 importElement = _mainReader.read(file).getRootElement(); 81 else if (_test == ON_END_READER) 82 importElement = onEndReader.read(file).getRootElement(); 83 } catch (Exception e) { 84 e.printStackTrace(); 86 } 87 88 importRef.detach(); 90 parentElement.add(importElement); 91 } 92 } 93 94 public class EmbeddedHandler implements ElementHandler { 95 public void onStart(ElementPath path) { 96 _results[_test].append( 97 path.getCurrent().attribute("name").getValue() + "\n"); 98 } 99 public void onEnd(ElementPath path) {} 100 } 101 102 106 public void testMainReader() throws Exception { 107 _test = MAIN_READER; 108 readDocuments(); 109 } 111 112 public void testOnEndReader() throws Exception { 113 _test = ON_END_READER; 114 readDocuments(); 115 } 117 118 137 138 142 private void readDocuments() throws Exception { 143 for (int i = 0; i < testDocuments.length; i++) { 144 String mainDir = new File (testDocuments[i]).getParent(); 145 SAXReader reader = new O3SAXReader(db()); 146 ElementHandler mainHandler = new MainHandler(mainDir); 147 reader.addHandler("/main/import", mainHandler); 148 reader.read(testDocuments[i]); 149 } 150 } 151 152 } 153 | Popular Tags |