Mercurial > dive4elements > river
annotate flys-client/src/main/java/de/intevation/flys/client/server/ThemeListingServiceImpl.java @ 4284:7a94d5e7fc3d
Write the "hidden" attribute of a style into the collection's attribute when using the theme editor.
Otherwise, the next time using the theme editor, the hidden attributes that should not be changed
by the user are visible.
author | Ingo Weinzierl <ingo.weinzierl@intevation.de> |
---|---|
date | Mon, 29 Oct 2012 07:18:42 +0100 |
parents | 37dce0f2f63b |
children |
rev | line source |
---|---|
2540
e75b15818435
Added a style chooser to the style editor to provide predefined styles and
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
1 package de.intevation.flys.client.server; |
e75b15818435
Added a style chooser to the style editor to provide predefined styles and
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
2 |
e75b15818435
Added a style chooser to the style editor to provide predefined styles and
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
3 import com.google.gwt.user.server.rpc.RemoteServiceServlet; |
e75b15818435
Added a style chooser to the style editor to provide predefined styles and
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
4 |
e75b15818435
Added a style chooser to the style editor to provide predefined styles and
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
5 import de.intevation.artifacts.common.utils.XMLUtils; |
e75b15818435
Added a style chooser to the style editor to provide predefined styles and
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
6 |
e75b15818435
Added a style chooser to the style editor to provide predefined styles and
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
7 import de.intevation.artifacts.httpclient.exceptions.ConnectionException; |
2911
37dce0f2f63b
Removed superfluous import.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
2908
diff
changeset
|
8 |
2540
e75b15818435
Added a style chooser to the style editor to provide predefined styles and
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
9 import de.intevation.artifacts.httpclient.http.HttpClient; |
e75b15818435
Added a style chooser to the style editor to provide predefined styles and
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
10 import de.intevation.artifacts.httpclient.http.HttpClientImpl; |
e75b15818435
Added a style chooser to the style editor to provide predefined styles and
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
11 |
e75b15818435
Added a style chooser to the style editor to provide predefined styles and
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
12 import de.intevation.flys.client.client.services.ThemeListingService; |
e75b15818435
Added a style chooser to the style editor to provide predefined styles and
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
13 |
2911
37dce0f2f63b
Removed superfluous import.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
2908
diff
changeset
|
14 import de.intevation.flys.client.shared.exceptions.ServerException; |
37dce0f2f63b
Removed superfluous import.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
2908
diff
changeset
|
15 |
37dce0f2f63b
Removed superfluous import.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
2908
diff
changeset
|
16 import de.intevation.flys.client.shared.model.Style; |
37dce0f2f63b
Removed superfluous import.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
2908
diff
changeset
|
17 |
37dce0f2f63b
Removed superfluous import.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
2908
diff
changeset
|
18 import java.util.HashMap; |
37dce0f2f63b
Removed superfluous import.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
2908
diff
changeset
|
19 import java.util.Map; |
37dce0f2f63b
Removed superfluous import.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
2908
diff
changeset
|
20 |
37dce0f2f63b
Removed superfluous import.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
2908
diff
changeset
|
21 import javax.xml.xpath.XPathConstants; |
37dce0f2f63b
Removed superfluous import.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
2908
diff
changeset
|
22 |
37dce0f2f63b
Removed superfluous import.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
2908
diff
changeset
|
23 import org.apache.log4j.Logger; |
37dce0f2f63b
Removed superfluous import.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
2908
diff
changeset
|
24 |
37dce0f2f63b
Removed superfluous import.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
2908
diff
changeset
|
25 import org.w3c.dom.Document; |
37dce0f2f63b
Removed superfluous import.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
2908
diff
changeset
|
26 import org.w3c.dom.Element; |
37dce0f2f63b
Removed superfluous import.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
2908
diff
changeset
|
27 import org.w3c.dom.NodeList; |
2540
e75b15818435
Added a style chooser to the style editor to provide predefined styles and
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
28 |
e75b15818435
Added a style chooser to the style editor to provide predefined styles and
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
29 /** |
e75b15818435
Added a style chooser to the style editor to provide predefined styles and
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
30 * This interface provides a method to list themes filtered by name. |
e75b15818435
Added a style chooser to the style editor to provide predefined styles and
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
31 * |
e75b15818435
Added a style chooser to the style editor to provide predefined styles and
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
32 * @author <a href="mailto:raimund.renkert@intevation.de">Raimund Renkert</a> |
e75b15818435
Added a style chooser to the style editor to provide predefined styles and
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
33 */ |
e75b15818435
Added a style chooser to the style editor to provide predefined styles and
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
34 public class ThemeListingServiceImpl |
e75b15818435
Added a style chooser to the style editor to provide predefined styles and
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
35 extends RemoteServiceServlet |
e75b15818435
Added a style chooser to the style editor to provide predefined styles and
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
36 implements ThemeListingService |
e75b15818435
Added a style chooser to the style editor to provide predefined styles and
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
37 { |
e75b15818435
Added a style chooser to the style editor to provide predefined styles and
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
38 private static final Logger logger = |
e75b15818435
Added a style chooser to the style editor to provide predefined styles and
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
39 Logger.getLogger(ThemeListingServiceImpl.class); |
e75b15818435
Added a style chooser to the style editor to provide predefined styles and
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
40 |
e75b15818435
Added a style chooser to the style editor to provide predefined styles and
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
41 |
e75b15818435
Added a style chooser to the style editor to provide predefined styles and
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
42 private static final String XPATH_THEME_GROUPS = "/themes/themegroup"; |
e75b15818435
Added a style chooser to the style editor to provide predefined styles and
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
43 /** The error message key that is thrown if an error occured while reading |
e75b15818435
Added a style chooser to the style editor to provide predefined styles and
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
44 * the supported rivers from server.*/ |
e75b15818435
Added a style chooser to the style editor to provide predefined styles and
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
45 public static final String ERROR_NO_GROUPS_FOUND = "error_no_groups_found"; |
e75b15818435
Added a style chooser to the style editor to provide predefined styles and
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
46 |
e75b15818435
Added a style chooser to the style editor to provide predefined styles and
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
47 |
e75b15818435
Added a style chooser to the style editor to provide predefined styles and
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
48 public Map<String, Style> list(String locale, String name) |
e75b15818435
Added a style chooser to the style editor to provide predefined styles and
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
49 throws ServerException |
e75b15818435
Added a style chooser to the style editor to provide predefined styles and
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
50 { |
e75b15818435
Added a style chooser to the style editor to provide predefined styles and
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
51 String url = getServletContext().getInitParameter("server-url"); |
e75b15818435
Added a style chooser to the style editor to provide predefined styles and
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
52 |
e75b15818435
Added a style chooser to the style editor to provide predefined styles and
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
53 Document doc = XMLUtils.newDocument(); |
e75b15818435
Added a style chooser to the style editor to provide predefined styles and
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
54 |
e75b15818435
Added a style chooser to the style editor to provide predefined styles and
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
55 XMLUtils.ElementCreator ec = new XMLUtils.ElementCreator( |
e75b15818435
Added a style chooser to the style editor to provide predefined styles and
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
56 doc, |
e75b15818435
Added a style chooser to the style editor to provide predefined styles and
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
57 null, |
e75b15818435
Added a style chooser to the style editor to provide predefined styles and
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
58 null); |
e75b15818435
Added a style chooser to the style editor to provide predefined styles and
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
59 |
e75b15818435
Added a style chooser to the style editor to provide predefined styles and
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
60 Element e = ec.create("theme"); |
e75b15818435
Added a style chooser to the style editor to provide predefined styles and
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
61 ec.addAttr(e, "name", name); |
e75b15818435
Added a style chooser to the style editor to provide predefined styles and
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
62 doc.appendChild(e); |
e75b15818435
Added a style chooser to the style editor to provide predefined styles and
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
63 HttpClient client = new HttpClientImpl(url, locale); |
e75b15818435
Added a style chooser to the style editor to provide predefined styles and
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
64 |
e75b15818435
Added a style chooser to the style editor to provide predefined styles and
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
65 try { |
e75b15818435
Added a style chooser to the style editor to provide predefined styles and
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
66 Document res = client.callService(url, "themelisting", doc); |
e75b15818435
Added a style chooser to the style editor to provide predefined styles and
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
67 |
e75b15818435
Added a style chooser to the style editor to provide predefined styles and
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
68 NodeList themeGroups = (NodeList) XMLUtils.xpath( |
e75b15818435
Added a style chooser to the style editor to provide predefined styles and
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
69 res, |
e75b15818435
Added a style chooser to the style editor to provide predefined styles and
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
70 XPATH_THEME_GROUPS, |
e75b15818435
Added a style chooser to the style editor to provide predefined styles and
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
71 XPathConstants.NODESET, |
e75b15818435
Added a style chooser to the style editor to provide predefined styles and
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
72 null); |
e75b15818435
Added a style chooser to the style editor to provide predefined styles and
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
73 |
e75b15818435
Added a style chooser to the style editor to provide predefined styles and
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
74 if (themeGroups == null || themeGroups.getLength() == 0) { |
e75b15818435
Added a style chooser to the style editor to provide predefined styles and
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
75 throw new ServerException(ERROR_NO_GROUPS_FOUND); |
e75b15818435
Added a style chooser to the style editor to provide predefined styles and
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
76 } |
e75b15818435
Added a style chooser to the style editor to provide predefined styles and
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
77 |
e75b15818435
Added a style chooser to the style editor to provide predefined styles and
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
78 int count = themeGroups.getLength(); |
e75b15818435
Added a style chooser to the style editor to provide predefined styles and
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
79 |
e75b15818435
Added a style chooser to the style editor to provide predefined styles and
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
80 Map<String, Style> theStyles = new HashMap<String, Style>(count); |
e75b15818435
Added a style chooser to the style editor to provide predefined styles and
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
81 |
e75b15818435
Added a style chooser to the style editor to provide predefined styles and
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
82 for (int i = 0; i < count; i++) { |
e75b15818435
Added a style chooser to the style editor to provide predefined styles and
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
83 Element tmp = (Element)themeGroups.item(i); |
e75b15818435
Added a style chooser to the style editor to provide predefined styles and
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
84 |
e75b15818435
Added a style chooser to the style editor to provide predefined styles and
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
85 String groupName = tmp.getAttribute("name"); |
e75b15818435
Added a style chooser to the style editor to provide predefined styles and
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
86 NodeList theTheme = (NodeList) XMLUtils.xpath( |
e75b15818435
Added a style chooser to the style editor to provide predefined styles and
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
87 tmp, |
e75b15818435
Added a style chooser to the style editor to provide predefined styles and
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
88 "theme", |
e75b15818435
Added a style chooser to the style editor to provide predefined styles and
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
89 XPathConstants.NODESET, |
e75b15818435
Added a style chooser to the style editor to provide predefined styles and
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
90 null); |
e75b15818435
Added a style chooser to the style editor to provide predefined styles and
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
91 |
e75b15818435
Added a style chooser to the style editor to provide predefined styles and
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
92 for (int j = 0; j < theTheme.getLength(); j++) { |
e75b15818435
Added a style chooser to the style editor to provide predefined styles and
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
93 Element elem = (Element) theTheme.item(j); |
2908
cd068ff7966d
Show only style attributes in StyleEditorWindow that are not 'hidden'.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
2540
diff
changeset
|
94 theStyles.put(groupName, StyleHelper.getStyle(elem)); |
2540
e75b15818435
Added a style chooser to the style editor to provide predefined styles and
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
95 } |
e75b15818435
Added a style chooser to the style editor to provide predefined styles and
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
96 } |
e75b15818435
Added a style chooser to the style editor to provide predefined styles and
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
97 |
e75b15818435
Added a style chooser to the style editor to provide predefined styles and
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
98 return theStyles; |
e75b15818435
Added a style chooser to the style editor to provide predefined styles and
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
99 } |
e75b15818435
Added a style chooser to the style editor to provide predefined styles and
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
100 catch (ConnectionException ce) { |
e75b15818435
Added a style chooser to the style editor to provide predefined styles and
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
101 logger.error(ce, ce); |
e75b15818435
Added a style chooser to the style editor to provide predefined styles and
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
102 } |
e75b15818435
Added a style chooser to the style editor to provide predefined styles and
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
103 |
e75b15818435
Added a style chooser to the style editor to provide predefined styles and
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
104 throw new ServerException(ERROR_NO_GROUPS_FOUND); |
e75b15818435
Added a style chooser to the style editor to provide predefined styles and
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
105 } |
e75b15818435
Added a style chooser to the style editor to provide predefined styles and
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
106 } |
e75b15818435
Added a style chooser to the style editor to provide predefined styles and
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
107 // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 : |