Mercurial > dive4elements > gnv-client
view gnv-artifacts/src/main/java/de/intevation/gnv/exports/DefaultExport.java @ 230:f68ffbe974a0
Implemented an exporter for odv and csv exports.
gnv-artifacts/trunk@298 c6561f87-3c4e-4783-a992-168aeb5c3f6f
author | Ingo Weinzierl <ingo.weinzierl@intevation.de> |
---|---|
date | Fri, 06 Nov 2009 10:56:18 +0000 |
parents | |
children | 2ceb4bf51cba |
line wrap: on
line source
package de.intevation.gnv.exports; import org.apache.log4j.Logger; import au.com.bytecode.opencsv.CSVWriter; import java.util.List; import java.util.Iterator; import java.util.Collection; import java.io.UnsupportedEncodingException; import java.io.IOException; import java.io.OutputStreamWriter; import java.io.OutputStream; import de.intevation.gnv.exports.Export.Profile; import de.intevation.gnv.geobackend.base.Result; import de.intevation.gnv.geobackend.base.ResultDescriptor; import de.intevation.gnv.transition.exception.TransitionException; /** * @author Sascha L. Teichmann (sascha.teichmann@intevation.de) * @author Ingo Weinzierl (ingo.weinzierl@intevation.de) */ public class DefaultExport implements Export { private static Logger log = Logger.getLogger(DefaultExport.class); protected void writeData( Profile profile, Collection result, CSVWriter writer ) { log.debug("create content for export."); Iterator<Result> it = result.iterator(); ResultDescriptor rd = null; int [] indices = null; String[] entries = new String[profile.numberColumns()]; while (it.hasNext()) { Result res = it.next(); if (rd == null) { rd = res.getResultDescriptor(); String [] names = new String[entries.length]; for (int i = 0; i < names.length; ++i) { names[i] = profile.getHeader(i); } indices = rd.getColumnIndices(names); } for (int i = 0; i < entries.length; ++i) { entries[i] = profile.toString( i, res.getString(indices[i])); } writer.writeNext(entries); } } public void create( Profile profile, OutputStream outputStream, Collection result ) throws IOException, UnsupportedEncodingException, TransitionException { if (result == null) { String msg = "No data given for generation of " + profile.getType() + " file."; log.error(msg); throw new TransitionException(msg); } CSVWriter writer = new CSVWriter( new OutputStreamWriter( outputStream, profile.getEncoding()), profile.getSeparator(), profile.getQuoteCharacter(), profile.getEscapeCharacter()); writeData(profile, result, writer); writer.close(); } }