📄 documentbuilderimpl.java
字号:
// You can redistribute this software and/or modify it under the terms of// the Ozone Library License version 1 published by ozone-db.org.//// The original code and portions created by SMB are// Copyright (C) 1997-@year@ by SMB GmbH. All rights reserved.//// $Id: DocumentBuilderImpl.java,v 1.4 2003/07/12 12:13:06 per_nyfelt Exp $package org.ozoneDB.xml.dom4j.io;import org.dom4j.Document;import org.dom4j.DocumentException;import org.dom4j.io.SAXReader;import org.ozoneDB.OzoneInterface;import org.ozoneDB.OzoneObject;import org.ozoneDB.OzoneRemote;import org.ozoneDB.core.Env;import org.ozoneDB.util.LogWriter;import org.ozoneDB.xml.dom4j.OzoneDocumentFactory;import org.ozoneDB.xml.dom4j.o3impl.OzoneDocumentFactoryImpl;import java.io.*;import java.net.ServerSocket;import java.net.Socket;import java.net.SocketAddress;/** * $Id: DocumentBuilderImpl.java,v 1.4 2003/07/12 12:13:06 per_nyfelt Exp $ */public class DocumentBuilderImpl extends OzoneObject implements DocumentBuilder { final static long serialVersionUID = 1L; protected OzoneDocumentFactory factory; protected Document resultDoc; StreamSocket serverSocket; public static DocumentBuilder create(OzoneInterface db) { return (DocumentBuilder) db.createObject( DocumentBuilderImpl.class, OzoneInterface.Public, OBJECT_NAME); } public DocumentBuilderImpl() { } public void onCreate() { try { factory = OzoneDocumentFactoryImpl.getInstance(database()); } catch (Exception e) { e.printStackTrace(); } } public Document getResult() { return resultDoc; } public Document parse(String text) throws DocumentException { Env.currentEnv().logWriter.newEntry(this, "parsing String text ", LogWriter.DEBUG); Document doc = parse(new StringReader(text)); Env.currentEnv().logWriter.newEntry(this, "parsing result = " + doc, LogWriter.DEBUG); return doc; } public Document parse(String text, String objectName) throws DocumentException { Document doc = parse(text); try { Env.currentEnv().logWriter.newEntry(this, "Naming object " + doc + " the name " + objectName, LogWriter.DEBUG); database().nameObject((OzoneRemote) doc, objectName); } catch (Exception e) { throw new DocumentException("Failed to name object", e); } return doc; } public Document parse(Reader reader) throws DocumentException { System.out.println("[DocumentBuilderImpl] Reading character stream, database = " + database() + ", factory = " + factory); SAXReader saxReader = new O3SAXReader(database(), factory); return saxReader.read(reader); } public Document parse(InputStream in) throws DocumentException { return parse(new InputStreamReader(in)); } public synchronized SocketAddress prepareStreamParsing() throws IOException { serverSocket = new StreamSocket(3334); new Thread(serverSocket).start(); return serverSocket.getLocalSocketAddress(); } private class StreamSocket extends ServerSocket implements Runnable { public StreamSocket(int port) throws IOException { super(port); } public void run() { try { Socket clientSocket = serverSocket.accept(); System.out.println("Connected to " + clientSocket.getInetAddress() + ", parsing stream"); InputStream in = clientSocket.getInputStream(); resultDoc = parse(in); in.close(); clientSocket.close(); serverSocket.close(); } catch (Exception e) { e.printStackTrace(); } } }}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -