/*
* GeoTools - The Open Source Java GIS Toolkit
* http://geotools.org
*
* (C) 2004-2008, Open Source Geospatial Foundation (OSGeo)
*
* This library 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;
* version 2.1 of the License.
*
* This library 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.
*/
package org.geotools.validation.xml;
import java.io.Writer;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import org.geotools.validation.dto.ArgumentDTO;
import org.geotools.validation.dto.PlugInDTO;
import org.geotools.validation.dto.TestDTO;
import org.geotools.validation.dto.TestSuiteDTO;
/**
* XMLWriter purpose.
*
* <p>
* Description of XMLWriter ...
* </p>
*
* <p>
* Capabilities:
* </p>
*
* <ul>
* <li>
* Feature: description
* </li>
* </ul>
*
* <p>
* Example Use:
* </p>
* <pre><code>
* XMLWriter x = new XMLWriter(...);
* </code></pre>
*
* @author dzwiers, Refractions Research, Inc.
* @author $Author: dmzwiers $ (last modification)
* @source $URL$
* @version $Id$
*/
public class XMLWriter {
public static void writePlugIn(PlugInDTO dto, Writer w) {
WriterUtils cw = new WriterUtils(w);
Map m = new HashMap();
m.put("xmlns", "pluginSchema");
m.put("xmlns:gml", "http://www.opengis.net/gml");
m.put("xmlns:ogc", "http://www.opengis.net/ogc");
m.put("xmlns:xsi", "http://www.w3.org/2001/XMLSchema-instance");
m.put("xsi:schemaLocation",
"pluginSchema /data/capabilities/validate/pluginSchema.xsd");
try {
cw.openTag("plugin", m);
try {
cw.textTag("name", dto.getName());
cw.textTag("description", dto.getDescription());
cw.textTag("class", dto.getClassName());
Iterator i = dto.getArgs().keySet().iterator();
while (i.hasNext()) {
writeArgument((ArgumentDTO) dto.getArgs().get(i.next()), w);
}
} catch (Exception e) {
e.printStackTrace();
// error log it;
}
cw.closeTag("plugin");
} catch (Exception e) {
e.printStackTrace();
// error log it;
}
}
public static void writeTest(TestDTO dto, Writer w) {
WriterUtils cw = new WriterUtils(w);
try {
cw.openTag("test");
try {
cw.textTag("name", dto.getName());
cw.textTag("description", dto.getDescription());
cw.textTag("plugin", dto.getPlugIn().getName());
Iterator i = dto.getArgs().keySet().iterator();
while (i.hasNext()) {
writeArgument((ArgumentDTO) dto.getArgs().get(i.next()), w);
}
} catch (Exception e) {
e.printStackTrace();
// error log it;
}
cw.closeTag("test");
} catch (Exception e) {
e.printStackTrace();
// error log it;
}
}
public static void writeTestSuite(TestSuiteDTO dto, Writer w) {
WriterUtils cw = new WriterUtils(w);
Map m = new HashMap();
m.put("xmlns", "testSuiteSchema");
m.put("xmlns:gml", "http://www.opengis.net/gml");
m.put("xmlns:ogc", "http://www.opengis.net/ogc");
m.put("xmlns:xsi", "http://www.w3.org/2001/XMLSchema-instance");
m.put("xsi:schemaLocation",
"testSuiteSchema /data/capabilities/validate/testSuiteSchema.xsd");
try {
cw.openTag("suite", m);
try {
cw.textTag("name", dto.getName());
cw.textTag("description", dto.getDescription());
Iterator i = dto.getTests().keySet().iterator();
while (i.hasNext()) {
writeTest((TestDTO) dto.getTests().get(i.next()), w);
}
} catch (Exception e) {
e.printStackTrace();
// error log it;
}
cw.closeTag("suite");
} catch (Exception e) {
e.printStackTrace();
// error log it;
}
}
public static void writeArgument(ArgumentDTO dto, Writer w) {
WriterUtils cw = new WriterUtils(w);
Map m = new HashMap();
if (dto.isFinal()) {
m.put("final", new Boolean(true));
}
try {
cw.openTag("argument", m);
try {
cw.textTag("name", dto.getName());
cw.writeln(ArgHelper.getArgumentEncoding(dto.getValue()));
} catch (Exception e) {
// do nothing, just don't write it out
e.printStackTrace();
// error log it;
}
cw.closeTag("argument");
} catch (Exception e) {
e.printStackTrace();
// error log it;
}
}
}