Mercurial > dive4elements > river
diff gwt-client/src/main/java/org/dive4elements/river/client/server/CSVExportServiceImpl.java @ 9189:13a0c4be17ea
bom for csv export added
author | gernotbelger |
---|---|
date | Thu, 28 Jun 2018 14:11:12 +0200 |
parents | 238fc722f87a |
children |
line wrap: on
line diff
--- a/gwt-client/src/main/java/org/dive4elements/river/client/server/CSVExportServiceImpl.java Thu Jun 28 13:14:44 2018 +0200 +++ b/gwt-client/src/main/java/org/dive4elements/river/client/server/CSVExportServiceImpl.java Thu Jun 28 14:11:12 2018 +0200 @@ -8,83 +8,68 @@ package org.dive4elements.river.client.server; +import java.io.IOException; +import java.io.InputStream; +import java.io.InputStreamReader; +import java.io.Reader; import java.util.ArrayList; import java.util.List; -import java.io.Reader; -import java.io.InputStream; -import java.io.InputStreamReader; -import java.io.IOException; - +import org.apache.log4j.Logger; +import org.dive4elements.artifacts.common.ArtifactNamespaceContext; +import org.dive4elements.artifacts.common.utils.XMLUtils; +import org.dive4elements.artifacts.httpclient.http.HttpClient; +import org.dive4elements.artifacts.httpclient.http.HttpClientImpl; +import org.dive4elements.river.client.client.services.CSVExportService; +import org.dive4elements.river.client.shared.exceptions.ServerException; import org.w3c.dom.Document; import org.w3c.dom.Element; -import org.apache.log4j.Logger; - import com.google.gwt.user.server.rpc.RemoteServiceServlet; import au.com.bytecode.opencsv.CSVReader; -import org.dive4elements.artifacts.common.ArtifactNamespaceContext; -import org.dive4elements.artifacts.common.utils.XMLUtils; - -import org.dive4elements.artifacts.httpclient.http.HttpClient; -import org.dive4elements.artifacts.httpclient.http.HttpClientImpl; - -import org.dive4elements.river.client.shared.exceptions.ServerException; -import org.dive4elements.river.client.client.services.CSVExportService; - - /** * @author <a href="mailto:raimund.renkert@intevation.de">Raimund Renkert</a> */ -public class CSVExportServiceImpl -extends RemoteServiceServlet -implements CSVExportService -{ - private static final Logger log = - Logger.getLogger(CSVExportServiceImpl.class); - +public class CSVExportServiceImpl extends RemoteServiceServlet implements CSVExportService { + private static final Logger log = Logger.getLogger(CSVExportServiceImpl.class); - public static final String ERROR_NO_EXPORT_FOUND = - "error_no_export_found"; + public static final String ERROR_NO_EXPORT_FOUND = "error_no_export_found"; - public List<String[]> getCSV( - String locale, - String uuid, - String name) - throws ServerException - { + @Override + public List<String[]> getCSV(final String locale, final String uuid, final String name) throws ServerException { log.info("CSVExportServiceImpl.getCSV"); - String url = getServletContext().getInitParameter("server-url"); - - Document requestDoc = XMLUtils.newDocument(); + final String url = getServletContext().getInitParameter("server-url"); - XMLUtils.ElementCreator ec = new XMLUtils.ElementCreator( - requestDoc, - ArtifactNamespaceContext.NAMESPACE_URI, - ArtifactNamespaceContext.NAMESPACE_PREFIX); + final Document requestDoc = XMLUtils.newDocument(); - Element action = ec.create("action"); + final XMLUtils.ElementCreator ec = new XMLUtils.ElementCreator(requestDoc, ArtifactNamespaceContext.NAMESPACE_URI, + ArtifactNamespaceContext.NAMESPACE_PREFIX); + + final Element action = ec.create("action"); ec.addAttr(action, "type", "csv", true); ec.addAttr(action, "name", name, true); requestDoc.appendChild(action); - HttpClient client = new HttpClientImpl(url, locale); + final HttpClient client = new HttpClientImpl(url, locale); try { - InputStream in = client.collectionOut(requestDoc, uuid, "export"); - Reader reader = new InputStreamReader (in, "UTF-8"); - CSVReader csvReader = new CSVReader (reader, ';'); + final InputStream in = client.collectionOut(requestDoc, uuid, "export"); + final Reader reader = new InputStreamReader(in, "UTF-8"); + final CSVReader csvReader = new CSVReader(reader, ';'); - List<String[]> lines = new ArrayList<String[]>(); - String[] line = null; + final byte[] BOM = new byte[] { (byte) 0xEF, (byte) 0xBB, (byte) 0xBF }; + final char bomChar = new String(BOM, "UTF-8").charAt(0); + final StringBuilder bomCharCheckBuilder = new StringBuilder().append(bomChar).append("#"); + final List<String[]> lines = new ArrayList<String[]>(); + String[] line = null; while ((line = csvReader.readNext()) != null) { if (line != null) { - if (!line[0].startsWith("#") && line.length > 0) { + if (line.length > 0 && !line[0].startsWith("#") && !line[0].startsWith(bomCharCheckBuilder.toString())) { if (line[0].replace("'", "").length() > 0) { lines.add(line); } @@ -94,7 +79,7 @@ return lines; } - catch (IOException ce) { + catch (final IOException ce) { log.error(ce.getLocalizedMessage()); }