Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 8 additions & 0 deletions src/config/worldwind.xml
Original file line number Diff line number Diff line change
Expand Up @@ -100,4 +100,12 @@
jar:file:milstd2525-symbols.zip! (local zip archive) -->
<Property name="gov.nasa.worldwind.avkey.MilStd2525IconRetrieverPath"
value="http://worldwind.arc.nasa.gov/milstd2525c/rev1/"/>

<!-- WWXML Transformer output features can be specified by listing valid javax.xml.transform.OutputKeys -->
<!-- Uncomment the following to have all XML documents created through WWXML pretty printed -->
<!--<Property name="gov.nasa.worldwind.util.WWXML.outputkey.1" value="indent,yes"/>
<Property name="gov.nasa.worldwind.util.WWXML.outputkey.2" value="{http://xml.apache.org/xslt}indent-amount,4"/>-->

<!-- Uncomment the following to allow restorable XML strings to be embedded in other XML documednts -->
<!--<Property name="gov.nasa.worldwind.util.RestorableSupport.outputkey.1" value="omit-xml-declaration,yes"/>-->
</WorldWindConfiguration>
4 changes: 2 additions & 2 deletions src/gov/nasa/worldwind/formats/gpx/GpxWriter.java
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@
package gov.nasa.worldwind.formats.gpx;

import gov.nasa.worldwind.util.Logging;
import gov.nasa.worldwind.util.WWXML;
import gov.nasa.worldwind.tracks.Track;
import gov.nasa.worldwind.tracks.TrackSegment;
import gov.nasa.worldwind.tracks.TrackPoint;
Expand Down Expand Up @@ -153,8 +154,7 @@ private void doWriteTrackPoint(TrackPoint point, org.w3c.dom.Element elem)

private void doFlush() throws javax.xml.transform.TransformerException
{
javax.xml.transform.TransformerFactory factory = javax.xml.transform.TransformerFactory.newInstance();
javax.xml.transform.Transformer transformer = factory.newTransformer();
javax.xml.transform.Transformer transformer = WWXML.createTransformer();
javax.xml.transform.Source source = new javax.xml.transform.dom.DOMSource(this.doc);
transformer.transform(source, this.result);
}
Expand Down
21 changes: 17 additions & 4 deletions src/gov/nasa/worldwind/util/RestorableSupport.java
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@
*/
package gov.nasa.worldwind.util;

import gov.nasa.worldwind.Configuration;
import gov.nasa.worldwind.avlist.*;
import gov.nasa.worldwind.geom.*;
import gov.nasa.worldwind.render.OffsetsList;
Expand Down Expand Up @@ -44,7 +45,8 @@ public class RestorableSupport
{
protected static final String DEFAULT_DOCUMENT_ELEMENT_TAG_NAME = "restorableState";
protected static final String DEFAULT_STATE_OBJECT_TAG_NAME = "stateObject";

private static final String PROP_OUTPUTKEY = RestorableSupport.class.getName() + ".outputkey";

protected org.w3c.dom.Document doc;
protected javax.xml.xpath.XPath xpath;
protected String stateObjectTagName;
Expand Down Expand Up @@ -203,14 +205,25 @@ protected static void createDocumentElement(org.w3c.dom.Document doc, String tag
*/
public String getStateAsXml()
{
javax.xml.transform.TransformerFactory transformerFactory =
javax.xml.transform.TransformerFactory.newInstance();
//Check for any restorablestate ouputkeys for the transformer
Map<String, String> outputKeys = new HashMap<String,String>();
Integer i=1;
String outputKey = PROP_OUTPUTKEY + "." + i;
String value;
while((value = Configuration.getStringValue(outputKey)) != null)
{
String[] parts = value.split(",");
outputKeys.put(parts[0], parts[1]);
i++;
outputKey = PROP_OUTPUTKEY + "." + i;
}

try
{
// The StringWriter will receive the document xml.
java.io.StringWriter stringWriter = new java.io.StringWriter();
// Attempt to write the Document to the StringWriter.
javax.xml.transform.Transformer transformer = transformerFactory.newTransformer();
javax.xml.transform.Transformer transformer = WWXML.createTransformer(outputKeys);
transformer.transform(
new javax.xml.transform.dom.DOMSource(this.doc),
new javax.xml.transform.stream.StreamResult(stringWriter));
Expand Down
44 changes: 42 additions & 2 deletions src/gov/nasa/worldwind/util/WWXML.java
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,7 @@
import java.nio.ByteBuffer;
import java.text.*;
import java.util.*;
import java.util.Map.Entry;

/**
* A collection of static methods use for opening, reading and otherwise working with XML files.
Expand All @@ -38,7 +39,9 @@
public class WWXML
{
public static final String XLINK_URI = "http://www.w3.org/1999/xlink";

private static final String PROP_OUTPUTKEY = WWXML.class.getName() + ".outputkey";


/**
* Create a DOM builder.
*
Expand Down Expand Up @@ -88,12 +91,49 @@ public static DocumentBuilder createDocumentBuilder(boolean isNamespaceAware)
* @throws WWRuntimeException if an error occurs.
*/
public static Transformer createTransformer()
{
return createTransformer(null);
}

/**
* Create a XML transformer.
* @parameter outputKeys a map of {@link javax.xml.transform.OutputKeys} settings
* @return a {@link javax.xml.transform.Transformer}
*
* @throws WWRuntimeException if an error occurs.
*/
public static Transformer createTransformer(Map<String,String> outputKeys)
{
TransformerFactory transformerFactory = TransformerFactory.newInstance();

try
{
return transformerFactory.newTransformer();
Transformer transformer = transformerFactory.newTransformer();

//Check for any globally assigned ouputkeys for the transformer
Integer i=1;
String outputKey = PROP_OUTPUTKEY + "." + i;
String value;
while((value = Configuration.getStringValue(outputKey)) != null)
{
String[] parts = value.split(",");
transformer.setOutputProperty(parts[0], parts[1]);
i++;
outputKey = PROP_OUTPUTKEY + "." + i;
}

if(outputKeys != null)
{
//Now set any provided outputkeys
Iterator<Entry<String, String>> it = outputKeys.entrySet().iterator();
while (it.hasNext())
{
Map.Entry<String, String> pair = (Map.Entry<String, String>)it.next();
transformer.setOutputProperty(pair.getKey().toString(), pair.getValue());
}
}

return transformer;
}
catch (TransformerConfigurationException e)
{
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@
package gov.nasa.worldwindx.applications.sar;

import gov.nasa.worldwind.util.Logging;
import gov.nasa.worldwind.util.WWXML;

/**
* @author dcollins
Expand Down Expand Up @@ -138,8 +139,7 @@ private void doWriteAnnotation(SARAnnotation sarAnnotation, org.w3c.dom.Element

private void doFlush() throws javax.xml.transform.TransformerException
{
javax.xml.transform.TransformerFactory factory = javax.xml.transform.TransformerFactory.newInstance();
javax.xml.transform.Transformer transformer = factory.newTransformer();
javax.xml.transform.Transformer transformer = WWXML.createTransformer();
javax.xml.transform.Source source = new javax.xml.transform.dom.DOMSource(this.doc);
transformer.transform(source, this.result);
}
Expand Down
10 changes: 6 additions & 4 deletions src/gov/nasa/worldwindx/examples/kml/ExportKML.java
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@
import gov.nasa.worldwind.geom.*;
import gov.nasa.worldwind.render.*;
import gov.nasa.worldwind.util.Logging;
import gov.nasa.worldwind.util.WWXML;

import javax.xml.transform.*;
import javax.xml.transform.stream.*;
Expand Down Expand Up @@ -156,10 +157,11 @@ public static void main(String[] args)
String xmlString = stringWriter.toString();

// Set up a transformer to pretty-print the XML
Transformer transformer = TransformerFactory.newInstance().newTransformer();
transformer.setOutputProperty(OutputKeys.INDENT, "yes");
transformer.setOutputProperty("{http://xml.apache.org/xslt}indent-amount", "4");

Map<String,String> outputKeys = new HashMap<String,String>();
outputKeys.put(OutputKeys.INDENT, "yes");
outputKeys.put("{http://xml.apache.org/xslt}indent-amount", "4");
Transformer transformer = WWXML.createTransformer(outputKeys);

// Write the pretty-printed document to stdout
transformer.transform(new StreamSource(new StringReader(xmlString)), new StreamResult(System.out));
}
Expand Down