All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.biojava.bio.program.sax.BaseXMLWriterTestHelper Maven / Gradle / Ivy

There is a newer version: 1.9.7
Show newest version
/*
 *                    BioJava development code
 *
 * This code may be freely distributed and modified under the
 * terms of the GNU Lesser General Public Licence.  This should
 * be distributed with the code.  If you do not have a copy,
 * see:
 *
 *      http://www.gnu.org/copyleft/lesser.html
 *
 * Copyright for this code is held jointly by the individual
 * authors.  These should be listed in @author doc comments.
 *
 * For more information on the BioJava project and its aims,
 * or to join the biojava-l mailing list, visit the home page
 * at:
 *
 *      http://www.biojava.org/
 *
 */
package org.biojava.bio.program.sax;

import java.util.Stack;

import org.xml.sax.Attributes;

/**
 *
 * Base XMLWriter class for writing XML representations of Java Value
 * Objects with bespoke architectures.
 *
 * Currently reporting QNames for all attribute values as a fix
 * for needing to defining namespaces by attributes with QNames.
 * This may not be ideal.
 *
 * 

* Copyright © 2000 Cambridge Antibody Technology. * *

* Primary author -

    *
  • Simon Brocklehurst (CAT) *
* Other authors -
    *
  • Tim Dilks (CAT) *
  • Colin Hardman (CAT) *
  • Stuart Johnston (CAT) *
* * @author Cambridge Antibody Technology (CAT) * @author Greg Cox * @version 1.01 * */ class BaseXMLWriterTestHelper { private Stack oElementStack; private StringBuffer oStr; private StringBuffer oIndent; private String oLineSeparator; private StringBuffer oSpaceStore; private boolean tLastWritePCData; private String oAttName; private String oAttValue; static final String oHeader = ""; public BaseXMLWriterTestHelper() { oElementStack = new Stack(); oStr = new StringBuffer(); oIndent = new StringBuffer(); oSpaceStore = new StringBuffer(); oLineSeparator = System.getProperty("line.separator"); oIndent.setLength(0); tLastWritePCData = false; } private void decreaseIndent() { oIndent.setLength(oIndent.length() - 2); } public String endElement() { decreaseIndent(); oStr.setLength(0); if (!tLastWritePCData) { oStr.append(nl()); oStr.append(indent()); } oStr.append(""); tLastWritePCData = false; return oStr.substring(0); } private void increaseIndent() { oIndent.append(" "); } public String indent() { return oIndent.substring(0); } public String nl() { return oLineSeparator; } public String startElement(String string) { oElementStack.push(string); oStr.setLength(0); if (!tLastWritePCData) oStr.append(nl()); oStr.append(indent()); oStr.append("<"); oStr.append(string); oStr.append(">"); increaseIndent(); tLastWritePCData = false; return oStr.substring(0); } public String startElement(String string, Attributes attributes) { oElementStack.push(string); oStr.setLength(0); if (!tLastWritePCData) oStr.append(nl()); oStr.append(indent()); oStr.append("<"); oStr.append(string); int i = 0; oSpaceStore.setLength(0); oSpaceStore.append(indent()); for (i = 0; i <= string.length(); i++) oSpaceStore.append(" "); for (i = 0; i < attributes.getLength() - 1; i++) { //oAttName = attributes.getLocalName(i); oAttName = attributes.getQName(i); oAttValue = attributes.getValue(i); oStr.append(" "); if (i > 0) oStr.append(oSpaceStore.substring(0)); oStr.append(oAttName); oStr.append("=\""); oStr.append(oAttValue); oStr.append("\""); oStr.append(nl()); } //oAttName = attributes.getLocalName(i); oAttName = attributes.getQName(i); oAttValue = attributes.getValue(i); oStr.append(" "); if (attributes.getLength() > 1) oStr.append(oSpaceStore.substring(0)); oStr.append(oAttName); oStr.append("=\""); oStr.append(oAttValue); oStr.append("\""); oStr.append(">"); increaseIndent(); tLastWritePCData = false; return oStr.substring(0); } public String writeEmptyElement(String string) { oStr.setLength(0); if (!tLastWritePCData) oStr.append(nl()); oStr.append(indent()); oStr.append("<"); oStr.append(string); oStr.append("/>"); tLastWritePCData = false; return oStr.substring(0); } public String writeEmptyElement(String string, Attributes attributes) { oStr.setLength(0); if (!tLastWritePCData) oStr.append(nl()); oStr.append(indent()); oStr.append("<"); oStr.append(string); for (int i = 0; i < attributes.getLength(); i++) { //oAttName = attributes.getLocalName(i); oAttName = attributes.getQName(i); oAttValue = attributes.getValue(i); oStr.append(" "); oStr.append(oAttName); oStr.append("=\""); oStr.append(oAttValue); oStr.append("\""); } oStr.append("/>"); tLastWritePCData = false; return oStr.substring(0); } public String writeHeader() { oStr.setLength(0); oStr.append(""); tLastWritePCData = false; return oStr.substring(0); } public String writePCData(String poPCData) { oStr.setLength(0); oStr.append(poPCData); tLastWritePCData = true; return oStr.substring(0); } }




© 2015 - 2024 Weber Informatics LLC | Privacy Policy