/* Copyright (c) 2001 - 2011 TOPP - www.openplans.org. All rights reserved.
* This code is licensed under the GPL 2.0 license, availible at the root
* application directory.
*/
package org.geoserver.geosearch.rest;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import javax.xml.transform.TransformerException;
import org.geoserver.rest.format.MediaTypes;
import org.geoserver.rest.format.StreamDataFormat;
import org.geoserver.wms.map.XMLTransformerMap;
import org.geotools.xml.transform.TransformerBase;
import org.restlet.data.MediaType;
import org.springframework.util.Assert;
public class LayerKMLDocumentFormat extends StreamDataFormat {
private static final MediaType MEDIA_TYPE = new MediaType(
"application/vnd.google-earth.kml+xml", "Keyhole Markup Language");
static {
MediaTypes.registerExtension("kml", MEDIA_TYPE);
}
public LayerKMLDocumentFormat() {
super(MEDIA_TYPE);
}
/**
* Unsupported.
*
* @see org.geoserver.rest.format.StreamDataFormat#read(java.io.InputStream)
*/
@Override
protected Object read(InputStream in) throws IOException {
throw new UnsupportedOperationException();
}
/**
* Writes out the sitemap to the given output stream.
*
* @see org.geoserver.rest.format.StreamDataFormat#write(java.lang.Object, java.io.OutputStream)
*/
@Override
protected void write(final Object object, OutputStream out) throws IOException {
// Assert.isTrue((object instanceof LayerInfo) || (object instanceof LayerGroupInfo));
Assert.isInstanceOf(XMLTransformerMap.class, object);
XMLTransformerMap map = (XMLTransformerMap) object;
TransformerBase transformer = map.getTransformer();
Object transformerSubject = map.getTransformerSubject();
try {
transformer.transform(transformerSubject, out);
} catch (TransformerException e) {
throw (IOException) new IOException("Error creating KML document: " + e.getMessage())
.initCause(e.getCause() == null ? e : e.getCause());
}
// final WMSMapContext context = (WMSMapContext) object;
// final WMS wms = GeoServerExtensions.bean(WMS.class);
// KMLMetadataDocumentTransformer transformer;
// transformer = new KMLMetadataDocumentTransformer(wms);
//
// try {
// transformer.transform(context, out);
// } catch (TransformerException e) {
// throw new IOException(e.getCause());
// }
// // final XMLStreamWriter writer;
// // try {
// // XMLOutputFactory factory;
// // try {
// // factory = XMLOutputFactory.newInstance();
// // } catch (FactoryConfigurationError e) {
// // throw new IOException(e);
// // }
// // writer = factory.createXMLStreamWriter(out, "UTF-8");
// // encode(writer, layerName, title, description, keywords, latLonBoundingBox);
// // } catch (XMLStreamException e) {
// // throw new IOException(e);
// // }
}
}