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

📄 xmlformatter.java

📁 High performance DB query
💻 JAVA
字号:
/* * @(#)$Id: XMLFormatter.java,v 1.4 2004/07/02 23:59:21 huebsch Exp $ * * Copyright (c) 2001-2004 Regents of the University of California. * All rights reserved. * * This file is distributed under the terms in the attached BERKELEY-LICENSE * file. If you do not find these files, copies can be found by writing to: * Computer Science Division, Database Group, Universite of California, * 617 Soda Hall #1776, Berkeley, CA 94720-1776. Attention: Berkeley License * * Copyright (c) 2003-2004 Intel Corporation. All rights reserved. * * This file is distributed under the terms in the attached INTEL-LICENSE file. * If you do not find these files, copies can be found by writing to: * Intel Research Berkeley, 2150 Shattuck Avenue, Suite 1300, * Berkeley, CA, 94704.  Attention:  Intel License Inquiry. */package pier.helpers.formatters;import java.net.InetSocketAddress;import java.nio.ByteBuffer;import java.util.Iterator;import pier.data.Tuple;import pier.data.TupleCollection;import pier.query.QueryPlan;import pier.query.QueryTag;/** * Class XMLFormatter * * Need to: * - Create overall document header (and footer...) * - create tuple format * - error message schema (<error> string </error>) * - generic message schema  (<message> string </message>) * */public class XMLFormatter extends SimpleFormatter {    // xml tag    public final static String XML_STRING =        "<?xml version=\"1.0\" encoding=\"UTF-8\"?>";    // xml namespace stuff    public final static String XIP_NAMESPACE_STRING =        "xmlns:xip=\"urn:publicid:IDN+cde.berkeley.edu:schemas:XIP:200404\"";    public final static String XMLSCHEMA_NAMESPACE_STRING =        "xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"";    public final static String XIP_NAMESPACE_PREFIX = "xip";    // XIPResultResponse Tags    public final static String RESULT_RESPONSE_TAG = "XIPResultResponse";    public final static String NUM_TUPLES_TAG = "NumTuples";    public final static String TUPLE_COLLECTION_TAG = "Tuples";    public final static String TUPLE_TAG = "Tuple";    public final static String FIELD_TAG = "Field";    // XipQueryResponse Tags    public final static String QUERY_RESPONSE_TAG = "XIPQueryResponse";    public final static String QID_TAG = "QID";    public final static String REFNUM_TAG = "Refnum";    public final static String QUERY_TAG_TAG = "QueryTag";    public final static String QUERY_TAG = "Query";    public final static String QUERY_STRING_TAG = "QueryString";    // XipSchemaResponse Tags    public final static String SCHEMA_RESPONSE_TAG = "XIPQueryResponse";    // XIPMessage Tags    public final static String MESSAGE_TAG = "XIPMessage";    // XIPError Tags    public final static String ERROR_TAG = "XIPError";    /**     * Method convertStringToBuffer     *     * @param string     * @return     */    protected ByteBuffer convertStringToBuffer(String string) {        ByteBuffer buffer = ByteBuffer.wrap(string.getBytes());        buffer.position(0);        return buffer;    }    /**     * Method convertStringToBuffer     *     * @param stringBuffer     * @return     */    protected ByteBuffer convertStringToBuffer(StringBuffer stringBuffer) {        return convertStringToBuffer(stringBuffer.toString());    }    /**     * Method escapeString     * Escape XML characters     *     * @param string     * @return     */    protected String escapeString(String string) {        // Convert: & -> &amp;        string = string.replaceAll("&", "&amp;");        // Convert: < -> &lt;        string = string.replaceAll("<", "&lt;");        // Convert: > -> &gt;        string = string.replaceAll(">", "&gt;");        // Convert: ' -> &apos;        string = string.replaceAll("\'", "&apos;");        // Convert: " -> &quot;        string = string.replaceAll("\"", "&quot;");        return string;    }    /**     * Method convertTupleToElement     *     * @param tuple     * @return     */    public String convertTupleToElement(Tuple tuple) {        String string = new String();        string = string + "<" + TUPLE_TAG + ">";        for (int i = 0; i < tuple.numFields(); i++) {            string = string + "<" + FIELD_TAG + ">"                     + escapeString(tuple.getValue(i).toString()) + "</"                     + FIELD_TAG + ">";        }        string = string + "</" + TUPLE_TAG + ">";        return string;    }    /**     * Method formatTuple     *     * @param tuple     * @param refnum     * @param queryTag     * @param source     * @param time     * @return     */    public ByteBuffer formatTuple(Tuple tuple, int refnum, QueryTag queryTag,                                  InetSocketAddress source, long time) {        String tupleString = "<" + TUPLE_COLLECTION_TAG + ">";        tupleString = tupleString + convertTupleToElement(tuple);        tupleString = tupleString + "</" + TUPLE_COLLECTION_TAG + ">";        return convertStringToBuffer(tupleString);    }    /**     * Method formatTuples     *     * @param tuples     * @param refnum     * @param queryTag     * @param source     * @param time     * @return     */    public ByteBuffer formatTuples(TupleCollection tuples, int refnum,                                   QueryTag queryTag, InetSocketAddress source,                                   long time) {        StringBuffer buffer = new StringBuffer();        Iterator tupleIterator = tuples.iterator();        buffer.append("<" + TUPLE_COLLECTION_TAG + ">");        while (tupleIterator.hasNext()) {            Tuple theTuple = (Tuple) tupleIterator.next();            convertTupleToElement(theTuple);        }        buffer.append("</" + TUPLE_COLLECTION_TAG + ">");        return convertStringToBuffer(buffer);    }    /**     * Method formatQuery     *     * @param theQuery     * @param refnum     * @param source     * @param time     * @return     */    public ByteBuffer formatQuery(String theQuery, int refnum,                                  InetSocketAddress source, long time) {        StringBuffer buffer = new StringBuffer();        buffer.append("<" + QID_TAG + ">");        buffer.append("<" + REFNUM_TAG + ">");        buffer.append(refnum);        buffer.append("</" + REFNUM_TAG + ">");        buffer.append("</" + QID_TAG + ">");        buffer.append("<" + QUERY_TAG + ">");        buffer.append("<" + QUERY_STRING_TAG + ">");        buffer.append(escapeString(theQuery));        buffer.append("</" + QUERY_STRING_TAG + ">");        buffer.append("</" + QUERY_TAG + ">");        return convertStringToBuffer(buffer);    }    /**     * Method formatQuery     *     * @param thePlan     * @param refnum     * @param source     * @param time     * @return     */    public ByteBuffer formatQuery(QueryPlan thePlan, int refnum,                                  InetSocketAddress source, long time) {        return formatQuery(            thePlan.toString(), refnum, source,            time);    // dont distinguish between plan and query, for now    }    /**     * Method formatMessage     *     * @param message     * @param refnum     * @param queryTag     * @param source     * @param time     * @return     */    public ByteBuffer formatMessage(String message, int refnum,                                    QueryTag queryTag,                                    InetSocketAddress source, long time) {        StringBuffer buffer = new StringBuffer();        buffer.append("<" + MESSAGE_TAG + ">");        buffer.append(escapeString(message));        buffer.append("</" + MESSAGE_TAG + ">");        return convertStringToBuffer(buffer);    }    /**     * Method formatError     *     * @param errorMessage     * @param refnum     * @param queryTag     * @param source     * @param time     * @return     */    public ByteBuffer formatError(String errorMessage, int refnum,                                  QueryTag queryTag, InetSocketAddress source,                                  long time) {        StringBuffer buffer = new StringBuffer();        buffer.append("<" + ERROR_TAG + ">");        buffer.append(escapeString(errorMessage));        buffer.append("</" + ERROR_TAG + ">");        return convertStringToBuffer(buffer);    }    /**     * Method messagePreamble     *     *     * @param messageType     * @param time     * @return     */    public ByteBuffer messagePreamble(int messageType, long time) {        String str = XML_STRING;        switch (messageType) {        case MESSAGE_TYPE_QUERY_ECHO:            str += "<" + XIP_NAMESPACE_PREFIX + ":" + QUERY_RESPONSE_TAG + " "                   + XIP_NAMESPACE_STRING + " " + XMLSCHEMA_NAMESPACE_STRING                   + " " + "xsi:schemaLocation=\"" + XIP_NAMESPACE_STRING + " "                   + QUERY_RESPONSE_TAG + ".xsd\"" + ">";            break;        case MESSAGE_TYPE_ERROR:            str += "<" + XIP_NAMESPACE_PREFIX + ":" + ERROR_TAG + " "                   + XIP_NAMESPACE_STRING + " " + XMLSCHEMA_NAMESPACE_STRING                   + " " + "xsi:schemaLocation=\"" + XIP_NAMESPACE_STRING + " "                   + ERROR_TAG + ".xsd\"" + ">";            break;        case MESSAGE_TYPE_MESSAGE:            str += "<" + XIP_NAMESPACE_PREFIX + ":" + MESSAGE_TAG + " "                   + XIP_NAMESPACE_STRING + " " + XMLSCHEMA_NAMESPACE_STRING                   + " " + "xsi:schemaLocation=\"" + XIP_NAMESPACE_STRING + " "                   + MESSAGE_TAG + ".xsd\"" + ">";            break;        case MESSAGE_TYPE_SCHEMA:            str += "<" + XIP_NAMESPACE_PREFIX + ":" + SCHEMA_RESPONSE_TAG + " "                   + XIP_NAMESPACE_STRING + " " + XMLSCHEMA_NAMESPACE_STRING                   + " " + "xsi:schemaLocation=\"" + XIP_NAMESPACE_STRING + " "                   + SCHEMA_RESPONSE_TAG + ".xsd\"" + ">";            break;        case MESSAGE_TYPE_RESULT:            str += "<" + XIP_NAMESPACE_PREFIX + ":" + RESULT_RESPONSE_TAG + " "                   + XIP_NAMESPACE_STRING + " " + XMLSCHEMA_NAMESPACE_STRING                   + " " + "xsi:schemaLocation=\"" + XIP_NAMESPACE_STRING + " "                   + RESULT_RESPONSE_TAG + ".xsd\"" + ">";            break;        default:            str = "</>";        }        return convertStringToBuffer(str);    }    /**     * Method messagePostamble     *     *     * @param messageType     * @param time     * @return     */    public ByteBuffer messagePostamble(int messageType, long time) {        String str = "";        switch (messageType) {        case MESSAGE_TYPE_QUERY_ECHO:            str = "</" + XIP_NAMESPACE_PREFIX + ":" + QUERY_RESPONSE_TAG + ">";            break;        case MESSAGE_TYPE_ERROR:            str = "</" + XIP_NAMESPACE_PREFIX + ":" + ERROR_TAG + ">";            break;        case MESSAGE_TYPE_MESSAGE:            str = "</" + XIP_NAMESPACE_PREFIX + ":" + MESSAGE_TAG + ">";            break;        case MESSAGE_TYPE_SCHEMA:            str = "</" + XIP_NAMESPACE_PREFIX + ":" + SCHEMA_RESPONSE_TAG + ">";            break;        case MESSAGE_TYPE_RESULT:            str = "</" + XIP_NAMESPACE_PREFIX + ":" + RESULT_RESPONSE_TAG + ">";            break;        default:            str = "</>";        }        return convertStringToBuffer(str);    }}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -