annotate gwt-client/src/main/java/org/dive4elements/river/client/server/CSVExportServiceImpl.java @ 8870:c26fb37899ca

Introduced groups for modules. Modules marked with the same group-id, will be put together in the ui. Also using now the localization info from the server instead of localizing the modules again on the client side.
author gernotbelger
date Wed, 07 Feb 2018 11:59:13 +0100
parents 238fc722f87a
children 13a0c4be17ea 0a5239a1e46e
rev   line source
5861
172338b1407f GWT client: Added copyright header.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5838
diff changeset
1 /* Copyright (C) 2011, 2012, 2013 by Bundesanstalt für Gewässerkunde
172338b1407f GWT client: Added copyright header.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5838
diff changeset
2 * Software engineering by Intevation GmbH
172338b1407f GWT client: Added copyright header.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5838
diff changeset
3 *
5993
ea9eef426962 Removed trailing whitespace.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5861
diff changeset
4 * This file is Free Software under the GNU AGPL (>=v3)
5861
172338b1407f GWT client: Added copyright header.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5838
diff changeset
5 * and comes with ABSOLUTELY NO WARRANTY! Check out the
5993
ea9eef426962 Removed trailing whitespace.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5861
diff changeset
6 * documentation coming with Dive4Elements River for details.
5861
172338b1407f GWT client: Added copyright header.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5838
diff changeset
7 */
172338b1407f GWT client: Added copyright header.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5838
diff changeset
8
5835
821a02bbfb4e Fixed internal java dependencies
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5834
diff changeset
9 package org.dive4elements.river.client.server;
256
5e1c1b7d6516 Added table and service for calculation output to UI.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
10
1477
6e694603cde1 Improved the CSVExportService to ignore lines that begin with a '#' character.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1425
diff changeset
11 import java.util.ArrayList;
256
5e1c1b7d6516 Added table and service for calculation output to UI.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
12 import java.util.List;
5e1c1b7d6516 Added table and service for calculation output to UI.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
13
5e1c1b7d6516 Added table and service for calculation output to UI.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
14 import java.io.Reader;
5e1c1b7d6516 Added table and service for calculation output to UI.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
15 import java.io.InputStream;
5e1c1b7d6516 Added table and service for calculation output to UI.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
16 import java.io.InputStreamReader;
5e1c1b7d6516 Added table and service for calculation output to UI.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
17 import java.io.IOException;
5e1c1b7d6516 Added table and service for calculation output to UI.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
18
5e1c1b7d6516 Added table and service for calculation output to UI.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
19 import org.w3c.dom.Document;
5e1c1b7d6516 Added table and service for calculation output to UI.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
20 import org.w3c.dom.Element;
5e1c1b7d6516 Added table and service for calculation output to UI.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
21
1367
ab8eb2f544f2 Replaced stdout and stderr logging with log4j loggers in server classes.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 550
diff changeset
22 import org.apache.log4j.Logger;
ab8eb2f544f2 Replaced stdout and stderr logging with log4j loggers in server classes.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 550
diff changeset
23
256
5e1c1b7d6516 Added table and service for calculation output to UI.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
24 import com.google.gwt.user.server.rpc.RemoteServiceServlet;
5e1c1b7d6516 Added table and service for calculation output to UI.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
25
5e1c1b7d6516 Added table and service for calculation output to UI.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
26 import au.com.bytecode.opencsv.CSVReader;
5e1c1b7d6516 Added table and service for calculation output to UI.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
27
5835
821a02bbfb4e Fixed internal java dependencies
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5834
diff changeset
28 import org.dive4elements.artifacts.common.ArtifactNamespaceContext;
821a02bbfb4e Fixed internal java dependencies
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5834
diff changeset
29 import org.dive4elements.artifacts.common.utils.XMLUtils;
256
5e1c1b7d6516 Added table and service for calculation output to UI.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
30
5835
821a02bbfb4e Fixed internal java dependencies
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5834
diff changeset
31 import org.dive4elements.artifacts.httpclient.http.HttpClient;
821a02bbfb4e Fixed internal java dependencies
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5834
diff changeset
32 import org.dive4elements.artifacts.httpclient.http.HttpClientImpl;
256
5e1c1b7d6516 Added table and service for calculation output to UI.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
33
5835
821a02bbfb4e Fixed internal java dependencies
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5834
diff changeset
34 import org.dive4elements.river.client.shared.exceptions.ServerException;
821a02bbfb4e Fixed internal java dependencies
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5834
diff changeset
35 import org.dive4elements.river.client.client.services.CSVExportService;
256
5e1c1b7d6516 Added table and service for calculation output to UI.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
36
5e1c1b7d6516 Added table and service for calculation output to UI.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
37
5e1c1b7d6516 Added table and service for calculation output to UI.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
38 /**
263
f56523bf4c55 Changed the empty table message for helper and data tables.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 259
diff changeset
39 * @author <a href="mailto:raimund.renkert@intevation.de">Raimund Renkert</a>
256
5e1c1b7d6516 Added table and service for calculation output to UI.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
40 */
5e1c1b7d6516 Added table and service for calculation output to UI.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
41 public class CSVExportServiceImpl
5e1c1b7d6516 Added table and service for calculation output to UI.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
42 extends RemoteServiceServlet
5e1c1b7d6516 Added table and service for calculation output to UI.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
43 implements CSVExportService
5e1c1b7d6516 Added table and service for calculation output to UI.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
44 {
8203
238fc722f87a sed 's/logger/log/g' src/**/*.java
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7036
diff changeset
45 private static final Logger log =
1367
ab8eb2f544f2 Replaced stdout and stderr logging with log4j loggers in server classes.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 550
diff changeset
46 Logger.getLogger(CSVExportServiceImpl.class);
ab8eb2f544f2 Replaced stdout and stderr logging with log4j loggers in server classes.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 550
diff changeset
47
ab8eb2f544f2 Replaced stdout and stderr logging with log4j loggers in server classes.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 550
diff changeset
48
256
5e1c1b7d6516 Added table and service for calculation output to UI.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
49 public static final String ERROR_NO_EXPORT_FOUND =
5e1c1b7d6516 Added table and service for calculation output to UI.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
50 "error_no_export_found";
5e1c1b7d6516 Added table and service for calculation output to UI.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
51
550
605debcbb6a0 Adjusted the return values of the CSVExportService, so that GWT can handle those values better.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 263
diff changeset
52 public List<String[]> getCSV(
256
5e1c1b7d6516 Added table and service for calculation output to UI.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
53 String locale,
5e1c1b7d6516 Added table and service for calculation output to UI.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
54 String uuid,
5e1c1b7d6516 Added table and service for calculation output to UI.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
55 String name)
5e1c1b7d6516 Added table and service for calculation output to UI.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
56 throws ServerException
5e1c1b7d6516 Added table and service for calculation output to UI.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
57 {
8203
238fc722f87a sed 's/logger/log/g' src/**/*.java
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7036
diff changeset
58 log.info("CSVExportServiceImpl.getCSV");
256
5e1c1b7d6516 Added table and service for calculation output to UI.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
59
1425
bc06a671ef60 Removed the URL parameter from service calls. The service
Raimund Renkert <raimund.renkert@intevation.de>
parents: 1367
diff changeset
60 String url = getServletContext().getInitParameter("server-url");
bc06a671ef60 Removed the URL parameter from service calls. The service
Raimund Renkert <raimund.renkert@intevation.de>
parents: 1367
diff changeset
61
256
5e1c1b7d6516 Added table and service for calculation output to UI.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
62 Document requestDoc = XMLUtils.newDocument();
5e1c1b7d6516 Added table and service for calculation output to UI.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
63
5e1c1b7d6516 Added table and service for calculation output to UI.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
64 XMLUtils.ElementCreator ec = new XMLUtils.ElementCreator(
5e1c1b7d6516 Added table and service for calculation output to UI.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
65 requestDoc,
5e1c1b7d6516 Added table and service for calculation output to UI.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
66 ArtifactNamespaceContext.NAMESPACE_URI,
5e1c1b7d6516 Added table and service for calculation output to UI.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
67 ArtifactNamespaceContext.NAMESPACE_PREFIX);
5e1c1b7d6516 Added table and service for calculation output to UI.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
68
258
5091675676d6 Fixed attributes/namespaces in the XML document that is used to fetch the CSV export of WINFO computations.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 256
diff changeset
69 Element action = ec.create("action");
5091675676d6 Fixed attributes/namespaces in the XML document that is used to fetch the CSV export of WINFO computations.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 256
diff changeset
70 ec.addAttr(action, "type", "csv", true);
5091675676d6 Fixed attributes/namespaces in the XML document that is used to fetch the CSV export of WINFO computations.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 256
diff changeset
71 ec.addAttr(action, "name", name, true);
256
5e1c1b7d6516 Added table and service for calculation output to UI.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
72
5e1c1b7d6516 Added table and service for calculation output to UI.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
73 requestDoc.appendChild(action);
5e1c1b7d6516 Added table and service for calculation output to UI.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
74
5e1c1b7d6516 Added table and service for calculation output to UI.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
75 HttpClient client = new HttpClientImpl(url, locale);
1477
6e694603cde1 Improved the CSVExportService to ignore lines that begin with a '#' character.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1425
diff changeset
76
256
5e1c1b7d6516 Added table and service for calculation output to UI.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
77 try {
5e1c1b7d6516 Added table and service for calculation output to UI.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
78 InputStream in = client.collectionOut(requestDoc, uuid, "export");
258
5091675676d6 Fixed attributes/namespaces in the XML document that is used to fetch the CSV export of WINFO computations.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 256
diff changeset
79 Reader reader = new InputStreamReader (in, "UTF-8");
7036
e25ef8376c14 issue971: Change CSV column separator to ";".
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 5993
diff changeset
80 CSVReader csvReader = new CSVReader (reader, ';');
258
5091675676d6 Fixed attributes/namespaces in the XML document that is used to fetch the CSV export of WINFO computations.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 256
diff changeset
81
1477
6e694603cde1 Improved the CSVExportService to ignore lines that begin with a '#' character.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1425
diff changeset
82 List<String[]> lines = new ArrayList<String[]>();
6e694603cde1 Improved the CSVExportService to ignore lines that begin with a '#' character.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1425
diff changeset
83 String[] line = null;
6e694603cde1 Improved the CSVExportService to ignore lines that begin with a '#' character.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1425
diff changeset
84
6e694603cde1 Improved the CSVExportService to ignore lines that begin with a '#' character.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1425
diff changeset
85 while ((line = csvReader.readNext()) != null) {
1480
1f2f08211a5f Skip empty lines in CSV service.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1477
diff changeset
86 if (line != null) {
1f2f08211a5f Skip empty lines in CSV service.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1477
diff changeset
87 if (!line[0].startsWith("#") && line.length > 0) {
1f2f08211a5f Skip empty lines in CSV service.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1477
diff changeset
88 if (line[0].replace("'", "").length() > 0) {
1f2f08211a5f Skip empty lines in CSV service.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1477
diff changeset
89 lines.add(line);
1f2f08211a5f Skip empty lines in CSV service.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1477
diff changeset
90 }
1477
6e694603cde1 Improved the CSVExportService to ignore lines that begin with a '#' character.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1425
diff changeset
91 }
6e694603cde1 Improved the CSVExportService to ignore lines that begin with a '#' character.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1425
diff changeset
92 }
6e694603cde1 Improved the CSVExportService to ignore lines that begin with a '#' character.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1425
diff changeset
93 }
6e694603cde1 Improved the CSVExportService to ignore lines that begin with a '#' character.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1425
diff changeset
94
6e694603cde1 Improved the CSVExportService to ignore lines that begin with a '#' character.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1425
diff changeset
95 return lines;
256
5e1c1b7d6516 Added table and service for calculation output to UI.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
96 }
5e1c1b7d6516 Added table and service for calculation output to UI.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
97 catch (IOException ce) {
8203
238fc722f87a sed 's/logger/log/g' src/**/*.java
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7036
diff changeset
98 log.error(ce.getLocalizedMessage());
256
5e1c1b7d6516 Added table and service for calculation output to UI.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
99 }
5e1c1b7d6516 Added table and service for calculation output to UI.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
100
5e1c1b7d6516 Added table and service for calculation output to UI.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
101 throw new ServerException(ERROR_NO_EXPORT_FOUND);
5e1c1b7d6516 Added table and service for calculation output to UI.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
102 }
5e1c1b7d6516 Added table and service for calculation output to UI.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
103 }
5e1c1b7d6516 Added table and service for calculation output to UI.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
104 // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :

http://dive4elements.wald.intevation.org