⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 documentbuilderimpl.java

📁 Java的面向对象数据库系统的源代码
💻 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 + -