/* (c) 2014 Open Source Geospatial Foundation - all rights reserved
* (c) 2001 - 2013 OpenPlans
* This code is licensed under the GPL 2.0 license, available at the root
* application directory.
*/
package org.geoserver.wps.ppio;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.OutputStreamWriter;
import java.io.StringReader;
import java.io.Writer;
import com.vividsolutions.jts.geom.Geometry;
import com.vividsolutions.jts.geom.LinearRing;
import com.vividsolutions.jts.io.WKTReader;
import com.vividsolutions.jts.io.WKTWriter;
/**
* Used to represent geometries in WKT format
*
* @author Andrea Aime - OpenGeo
*/
public class WKTPPIO extends CDataPPIO {
protected WKTPPIO() {
super(Geometry.class, Geometry.class, "application/wkt");
}
@Override
public Object decode(InputStream input) throws Exception {
return new WKTReader().read(new InputStreamReader(input));
}
@Override
public Object decode(String input) throws Exception {
return new WKTReader().read(new StringReader(input));
}
@Override
public void encode(Object value, OutputStream os) throws IOException {
Writer w = new OutputStreamWriter(os);
try {
Geometry g = (Geometry) value;
if (g instanceof LinearRing) {
g = g.getFactory().createLineString(((LinearRing)g).getCoordinateSequence());
}
new WKTWriter().write(g, w);
} finally {
w.flush();
}
}
@Override
public String getFileExtension() {
return "wkt";
}
}