Skip to content

Commit

Permalink
Added IO option to disable generator of XML declaration statements in…
Browse files Browse the repository at this point in the history
… the output CML.

Signed-off-by: Rajarshi  Guha <rajarshi.guha@gmail.com>
  • Loading branch information
egonw authored and rajarshi committed Jun 12, 2009
1 parent d6337cd commit 74451b8
Show file tree
Hide file tree
Showing 2 changed files with 89 additions and 2 deletions.
74 changes: 74 additions & 0 deletions src/main/nu/xom/CustomSerializer.java
@@ -0,0 +1,74 @@
/* $Revision$ $Author$ $Date$
*
* Copyright (C) 2009 Egon Willighagen <egonw@users.sf.net>
*
* Contact: cdk-devel@lists.sourceforge.net
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public License
* as published by the Free Software Foundation; either version 2.1
* of the License, or (at your option) any later version.
* All we ask is that proper credit is given for our work, which includes
* - but is not limited to - adding the above copyright notice to the beginning
* of your source code files, and to any copyright notice that you may distribute
* with programs based on this work.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
*/
package nu.xom;

import java.io.IOException;
import java.io.OutputStream;
import java.io.UnsupportedEncodingException;

/**
* Custom {@link Serializer} with the sole purpose and functionality to not
* output the XML declaration. Needs to be in the <code>nu.xom</code> package
* to allow overwriting of the writeXMLDeclaration method.
*
* @author egonw
* @cdk.module libiocml
*/
public class CustomSerializer extends Serializer {

/**
* Instantiates a new {@link CustomSerializer} using the matching
* {@link Serializer#Serializer(OutputStream)}.
*
* @param out the output stream to write the document on
*/
public CustomSerializer(OutputStream out) {
super(out);
}

/**
* Instantiates a new {@link CustomSerializer} using the matching
* {@link Serializer#Serializer(OutputStream, String)}.
*
* @param out the output stream to write the document on
* @param encoding the character encoding for the serialization
*/
public CustomSerializer(OutputStream out, String encoding)
throws UnsupportedEncodingException {
super(out, encoding);
}

/**
* Overwrite the {@link Serializer#writeXMLDeclaration()} method, and have
* it not output the XML declaration.
*/
protected void writeXMLDeclaration() throws IOException {
// do nothing
}

}



17 changes: 15 additions & 2 deletions src/main/org/openscience/cdk/io/CMLWriter.java
Expand Up @@ -36,6 +36,7 @@
import java.util.List;

import nu.xom.Attribute;
import nu.xom.CustomSerializer;
import nu.xom.Document;
import nu.xom.Element;
import nu.xom.Serializer;
Expand Down Expand Up @@ -119,6 +120,7 @@ public class CMLWriter extends DefaultChemObjectWriter {
private BooleanIOSetting schemaInstanceOutput;
private StringIOSetting instanceLocation;
private BooleanIOSetting indent;
private BooleanIOSetting xmlDeclaration;

private LoggingTool logger;

Expand Down Expand Up @@ -268,7 +270,12 @@ public void write(IChemObject object) throws CDKException {

Document doc = new Document(root);
try {
Serializer serializer = new Serializer(output, "ISO-8859-1");
Serializer serializer = null;
if (xmlDeclaration.isSet()) {
serializer = new Serializer(output, "ISO-8859-1");
} else {
serializer = new CustomSerializer(output, "ISO-8859-1");
}
if (indent.isSet()) {
logger.info("Indenting XML output");
serializer.setIndent(2);
Expand Down Expand Up @@ -313,6 +320,10 @@ private void initIOSettings() {
indent = new BooleanIOSetting("Indenting", IOSetting.LOW,
"Should the output be indented?",
"true");

xmlDeclaration = new BooleanIOSetting("XMLDeclaration", IOSetting.LOW,
"Should the output contain an XML declaration?",
"true");
}

private void customizeJob() {
Expand All @@ -326,16 +337,18 @@ private void customizeJob() {
fireIOSettingQuestion(instanceLocation);
}
fireIOSettingQuestion(indent);
fireIOSettingQuestion(xmlDeclaration);
}

public IOSetting[] getIOSettings() {
IOSetting[] settings = new IOSetting[6];
IOSetting[] settings = new IOSetting[7];
settings[0] = cmlIds;
settings[1] = namespacedOutput;
settings[2] = namespacePrefix;
settings[3] = schemaInstanceOutput;
settings[4] = instanceLocation;
settings[5] = indent;
settings[6] = xmlDeclaration;
return settings;
}

Expand Down

0 comments on commit 74451b8

Please sign in to comment.