/* (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.util.List; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import java.io.BufferedWriter; import java.io.OutputStreamWriter; import java.nio.charset.Charset; import java.util.LinkedList; import java.util.logging.Logger; import org.opengis.feature.Feature; import org.geotools.feature.FeatureCollection; import org.geotools.feature.FeatureIterator; import org.geotools.util.logging.Logging; import org.geoserver.wfs.response.dxf.DXFWriter; import org.geoserver.wfs.response.dxf.DXFWriterFinder; /** * Outputs feature collections in DXF format * * @author Andrea Aime - OpenGeo, Peter Hopfgartner - R3 GIS * */ public class DXFPPIO extends CDataPPIO { private static final Logger LOGGER = Logging.getLogger(DXFPPIO.class); protected DXFPPIO() { super(FeatureCollection.class, FeatureCollection.class, "application/dxf"); } @Override public void encode(Object value, OutputStream os) throws IOException { Charset dxfcharset = Charset.forName("Cp1252"); BufferedWriter w = new BufferedWriter(new OutputStreamWriter(os, dxfcharset)); DXFWriter dxfWriter = DXFWriterFinder.getWriter("14", w); String[] names = {"wps_result"}; dxfWriter.setOption("layers", names); int[] colors = {1}; dxfWriter.setOption("colors", colors); dxfWriter.setOption("writeattributes", true); List<Object> lft = new LinkedList<Object>(); lft.add(value); dxfWriter.write(lft,"14"); w.flush(); } @Override public Object decode(InputStream input) throws UnsupportedOperationException { throw new UnsupportedOperationException("DXF files can not be used as input"); } @Override public Object decode(String input) throws UnsupportedOperationException { throw new UnsupportedOperationException("DXF files can not be used as input"); } @Override public String getFileExtension() { return "dxf"; } }