KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > ozoneDB > xml > dom4j > io > DocumentBuilderImpl


1 // You can redistribute this software and/or modify it under the terms of
2
// the Ozone Library License version 1 published by ozone-db.org.
3
//
4
// The original code and portions created by SMB are
5
// Copyright (C) 1997-@year@ by SMB GmbH. All rights reserved.
6
//
7
// $Id: DocumentBuilderImpl.java,v 1.4 2003/07/12 12:13:06 per_nyfelt Exp $
8
package org.ozoneDB.xml.dom4j.io;
9
10 import org.dom4j.Document;
11 import org.dom4j.DocumentException;
12 import org.dom4j.io.SAXReader;
13 import org.ozoneDB.OzoneInterface;
14 import org.ozoneDB.OzoneObject;
15 import org.ozoneDB.OzoneRemote;
16 import org.ozoneDB.core.Env;
17 import org.ozoneDB.util.LogWriter;
18 import org.ozoneDB.xml.dom4j.OzoneDocumentFactory;
19 import org.ozoneDB.xml.dom4j.o3impl.OzoneDocumentFactoryImpl;
20
21 import java.io.*;
22 import java.net.ServerSocket JavaDoc;
23 import java.net.Socket JavaDoc;
24 import java.net.SocketAddress JavaDoc;
25
26 /**
27  * $Id: DocumentBuilderImpl.java,v 1.4 2003/07/12 12:13:06 per_nyfelt Exp $
28  */

29 public class DocumentBuilderImpl extends OzoneObject implements DocumentBuilder {
30
31     final static long serialVersionUID = 1L;
32
33     protected OzoneDocumentFactory factory;
34     protected Document resultDoc;
35     StreamSocket serverSocket;
36
37     public static DocumentBuilder create(OzoneInterface db) {
38         return (DocumentBuilder) db.createObject(
39                 DocumentBuilderImpl.class,
40                 OzoneInterface.Public,
41                 OBJECT_NAME);
42     }
43
44     public DocumentBuilderImpl() {
45     }
46
47     public void onCreate() {
48         try {
49             factory = OzoneDocumentFactoryImpl.getInstance(database());
50         } catch (Exception JavaDoc e) {
51             e.printStackTrace();
52         }
53     }
54
55     public Document getResult() {
56         return resultDoc;
57     }
58
59     public Document parse(String JavaDoc text) throws DocumentException {
60         Env.currentEnv().logWriter.newEntry(this, "parsing String text ", LogWriter.DEBUG);
61         Document doc = parse(new StringReader(text));
62         Env.currentEnv().logWriter.newEntry(this, "parsing result = " + doc, LogWriter.DEBUG);
63         return doc;
64     }
65
66     public Document parse(String JavaDoc text, String JavaDoc objectName) throws DocumentException {
67         Document doc = parse(text);
68         try {
69             Env.currentEnv().logWriter.newEntry(this, "Naming object " + doc + " the name " + objectName, LogWriter.DEBUG);
70             database().nameObject((OzoneRemote) doc, objectName);
71         } catch (Exception JavaDoc e) {
72             throw new DocumentException("Failed to name object", e);
73         }
74         return doc;
75     }
76
77     public Document parse(Reader reader) throws DocumentException {
78         System.out.println("[DocumentBuilderImpl] Reading character stream, database = " + database() + ", factory = " + factory);
79         SAXReader saxReader = new O3SAXReader(database(), factory);
80         return saxReader.read(reader);
81     }
82
83     public Document parse(InputStream in) throws DocumentException {
84         return parse(new InputStreamReader(in));
85     }
86
87     public synchronized SocketAddress JavaDoc prepareStreamParsing() throws IOException {
88         serverSocket = new StreamSocket(3334);
89         new Thread JavaDoc(serverSocket).start();
90         return serverSocket.getLocalSocketAddress();
91     }
92
93     private class StreamSocket extends ServerSocket JavaDoc implements Runnable JavaDoc {
94
95         public StreamSocket(int port) throws IOException {
96             super(port);
97         }
98
99         public void run() {
100             try {
101                 Socket JavaDoc clientSocket = serverSocket.accept();
102                 System.out.println("Connected to " + clientSocket.getInetAddress() + ", parsing stream");
103                 InputStream in = clientSocket.getInputStream();
104                 resultDoc = parse(in);
105                 in.close();
106                 clientSocket.close();
107                 serverSocket.close();
108             } catch (Exception JavaDoc e) {
109                 e.printStackTrace();
110             }
111         }
112     }
113 }
114
Popular Tags