annotate flys-client/src/main/java/de/intevation/flys/client/server/CollectionItemAttributeServiceImpl.java @ 5818:a4ff4167be1e

Request feature info on all layers and show it as html if the server does not return valid gml. Non queryable layers produce an error message when the request fails. This is good enough
author Andre Heinecke <aheinecke@intevation.de>
date Wed, 24 Apr 2013 17:33:27 +0200
parents b296d435fc69
children
rev   line source
1285
0f3b19df1880 Added new service and model for collection item attributes.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
1 package de.intevation.flys.client.server;
0f3b19df1880 Added new service and model for collection item attributes.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
2
0f3b19df1880 Added new service and model for collection item attributes.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
3 import org.w3c.dom.Document;
0f3b19df1880 Added new service and model for collection item attributes.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
4 import org.w3c.dom.Element;
0f3b19df1880 Added new service and model for collection item attributes.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
5 import org.w3c.dom.NodeList;
0f3b19df1880 Added new service and model for collection item attributes.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
6
1367
ab8eb2f544f2 Replaced stdout and stderr logging with log4j loggers in server classes.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1329
diff changeset
7 import org.apache.log4j.Logger;
ab8eb2f544f2 Replaced stdout and stderr logging with log4j loggers in server classes.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1329
diff changeset
8
1285
0f3b19df1880 Added new service and model for collection item attributes.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
9 import com.google.gwt.user.server.rpc.RemoteServiceServlet;
0f3b19df1880 Added new service and model for collection item attributes.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
10
0f3b19df1880 Added new service and model for collection item attributes.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
11 import de.intevation.artifacts.httpclient.exceptions.ConnectionException;
0f3b19df1880 Added new service and model for collection item attributes.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
12 import de.intevation.artifacts.httpclient.http.HttpClient;
0f3b19df1880 Added new service and model for collection item attributes.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
13 import de.intevation.artifacts.httpclient.http.HttpClientImpl;
0f3b19df1880 Added new service and model for collection item attributes.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
14 import de.intevation.artifacts.httpclient.http.response.DocumentResponseHandler;
0f3b19df1880 Added new service and model for collection item attributes.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
15
0f3b19df1880 Added new service and model for collection item attributes.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
16 import de.intevation.artifacts.common.ArtifactNamespaceContext;
0f3b19df1880 Added new service and model for collection item attributes.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
17 import de.intevation.artifacts.common.utils.XMLUtils;
0f3b19df1880 Added new service and model for collection item attributes.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
18
0f3b19df1880 Added new service and model for collection item attributes.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
19 import de.intevation.flys.client.shared.exceptions.ServerException;
0f3b19df1880 Added new service and model for collection item attributes.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
20 import de.intevation.flys.client.client.services.CollectionItemAttributeService;
0f3b19df1880 Added new service and model for collection item attributes.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
21
0f3b19df1880 Added new service and model for collection item attributes.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
22 import de.intevation.flys.client.shared.model.Collection;
0f3b19df1880 Added new service and model for collection item attributes.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
23 import de.intevation.flys.client.shared.model.CollectionItemAttribute;
0f3b19df1880 Added new service and model for collection item attributes.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
24 import de.intevation.flys.client.shared.model.Style;
0f3b19df1880 Added new service and model for collection item attributes.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
25 import de.intevation.flys.client.shared.model.StyleSetting;
0f3b19df1880 Added new service and model for collection item attributes.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
26
0f3b19df1880 Added new service and model for collection item attributes.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
27
0f3b19df1880 Added new service and model for collection item attributes.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
28 /**
0f3b19df1880 Added new service and model for collection item attributes.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
29 * @author <a href="mailto:raimund.renkert@intevation.de">Raimund Renkert</a>
0f3b19df1880 Added new service and model for collection item attributes.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
30 */
0f3b19df1880 Added new service and model for collection item attributes.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
31 public class CollectionItemAttributeServiceImpl
0f3b19df1880 Added new service and model for collection item attributes.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
32 extends RemoteServiceServlet
0f3b19df1880 Added new service and model for collection item attributes.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
33 implements CollectionItemAttributeService
0f3b19df1880 Added new service and model for collection item attributes.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
34 {
1367
ab8eb2f544f2 Replaced stdout and stderr logging with log4j loggers in server classes.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1329
diff changeset
35 private static final Logger logger =
ab8eb2f544f2 Replaced stdout and stderr logging with log4j loggers in server classes.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1329
diff changeset
36 Logger.getLogger(CollectionItemAttributeServiceImpl.class);
ab8eb2f544f2 Replaced stdout and stderr logging with log4j loggers in server classes.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1329
diff changeset
37
ab8eb2f544f2 Replaced stdout and stderr logging with log4j loggers in server classes.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1329
diff changeset
38
1285
0f3b19df1880 Added new service and model for collection item attributes.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
39 public static final String XPATH_RESULT = "/art:result/text()";
0f3b19df1880 Added new service and model for collection item attributes.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
40
0f3b19df1880 Added new service and model for collection item attributes.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
41 public static final String OPERATION_FAILURE = "FAILED";
0f3b19df1880 Added new service and model for collection item attributes.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
42
1310
c4c957a9c092 Improved exception handling while fetching theme styles.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1295
diff changeset
43 public static final String ERROR_NO_STYLES_FOUND =
c4c957a9c092 Improved exception handling while fetching theme styles.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1295
diff changeset
44 "error_no_theme_styles_found";
c4c957a9c092 Improved exception handling while fetching theme styles.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1295
diff changeset
45
1285
0f3b19df1880 Added new service and model for collection item attributes.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
46
0f3b19df1880 Added new service and model for collection item attributes.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
47 public CollectionItemAttribute getCollectionItemAttribute(
0f3b19df1880 Added new service and model for collection item attributes.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
48 Collection collection,
0f3b19df1880 Added new service and model for collection item attributes.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
49 String artifact,
0f3b19df1880 Added new service and model for collection item attributes.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
50 String locale)
0f3b19df1880 Added new service and model for collection item attributes.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
51 throws ServerException
0f3b19df1880 Added new service and model for collection item attributes.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
52 {
1367
ab8eb2f544f2 Replaced stdout and stderr logging with log4j loggers in server classes.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1329
diff changeset
53 logger.info(
1292
bdc270ea6195 Edited item attributes are saved and send to the server on accept.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 1285
diff changeset
54 "CollectionItemAttributeServiceImpl.getCollectionItemAttribute");
1285
0f3b19df1880 Added new service and model for collection item attributes.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
55
1425
bc06a671ef60 Removed the URL parameter from service calls. The service
Raimund Renkert <raimund.renkert@intevation.de>
parents: 1367
diff changeset
56 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
57
1285
0f3b19df1880 Added new service and model for collection item attributes.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
58 Document requestDoc = XMLUtils.newDocument();
0f3b19df1880 Added new service and model for collection item attributes.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
59
0f3b19df1880 Added new service and model for collection item attributes.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
60 XMLUtils.ElementCreator ec = new XMLUtils.ElementCreator(
1442
4a6814be92ba Cosmetics, doc.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1425
diff changeset
61 requestDoc,
4a6814be92ba Cosmetics, doc.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1425
diff changeset
62 ArtifactNamespaceContext.NAMESPACE_URI,
4a6814be92ba Cosmetics, doc.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1425
diff changeset
63 ArtifactNamespaceContext.NAMESPACE_PREFIX);
1285
0f3b19df1880 Added new service and model for collection item attributes.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
64
0f3b19df1880 Added new service and model for collection item attributes.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
65 Element action = ec.create("action");
0f3b19df1880 Added new service and model for collection item attributes.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
66
0f3b19df1880 Added new service and model for collection item attributes.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
67 Element type = ec.create("type");
0f3b19df1880 Added new service and model for collection item attributes.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
68 ec.addAttr(type, "name", "getitemattribute", false);
0f3b19df1880 Added new service and model for collection item attributes.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
69
0f3b19df1880 Added new service and model for collection item attributes.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
70 Element art = ec.create("artifact");
0f3b19df1880 Added new service and model for collection item attributes.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
71 ec.addAttr(art, "uuid", artifact, false);
0f3b19df1880 Added new service and model for collection item attributes.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
72
0f3b19df1880 Added new service and model for collection item attributes.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
73 type.appendChild(art);
0f3b19df1880 Added new service and model for collection item attributes.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
74 action.appendChild(type);
0f3b19df1880 Added new service and model for collection item attributes.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
75 requestDoc.appendChild (action);
0f3b19df1880 Added new service and model for collection item attributes.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
76
0f3b19df1880 Added new service and model for collection item attributes.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
77 try {
0f3b19df1880 Added new service and model for collection item attributes.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
78 HttpClient client = new HttpClientImpl(url, locale);
0f3b19df1880 Added new service and model for collection item attributes.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
79 Document res = (Document) client.doCollectionAction(
0f3b19df1880 Added new service and model for collection item attributes.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
80 requestDoc,
0f3b19df1880 Added new service and model for collection item attributes.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
81 collection.identifier(),
0f3b19df1880 Added new service and model for collection item attributes.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
82 new DocumentResponseHandler());
1292
bdc270ea6195 Edited item attributes are saved and send to the server on accept.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 1285
diff changeset
83 return readXML (res, artifact);
1285
0f3b19df1880 Added new service and model for collection item attributes.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
84 }
0f3b19df1880 Added new service and model for collection item attributes.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
85 catch (ConnectionException ce) {
1367
ab8eb2f544f2 Replaced stdout and stderr logging with log4j loggers in server classes.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1329
diff changeset
86 logger.error(ce, ce);
1285
0f3b19df1880 Added new service and model for collection item attributes.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
87 }
1310
c4c957a9c092 Improved exception handling while fetching theme styles.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1295
diff changeset
88
c4c957a9c092 Improved exception handling while fetching theme styles.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1295
diff changeset
89 throw new ServerException(ERROR_NO_STYLES_FOUND);
1285
0f3b19df1880 Added new service and model for collection item attributes.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
90 }
0f3b19df1880 Added new service and model for collection item attributes.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
91
1292
bdc270ea6195 Edited item attributes are saved and send to the server on accept.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 1285
diff changeset
92
bdc270ea6195 Edited item attributes are saved and send to the server on accept.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 1285
diff changeset
93 public void setCollectionItemAttribute(
bdc270ea6195 Edited item attributes are saved and send to the server on accept.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 1285
diff changeset
94 Collection collection,
bdc270ea6195 Edited item attributes are saved and send to the server on accept.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 1285
diff changeset
95 String artifact,
bdc270ea6195 Edited item attributes are saved and send to the server on accept.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 1285
diff changeset
96 String locale,
bdc270ea6195 Edited item attributes are saved and send to the server on accept.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 1285
diff changeset
97 CollectionItemAttribute attributes)
bdc270ea6195 Edited item attributes are saved and send to the server on accept.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 1285
diff changeset
98 throws ServerException
bdc270ea6195 Edited item attributes are saved and send to the server on accept.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 1285
diff changeset
99 {
1367
ab8eb2f544f2 Replaced stdout and stderr logging with log4j loggers in server classes.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1329
diff changeset
100 logger.info(
1292
bdc270ea6195 Edited item attributes are saved and send to the server on accept.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 1285
diff changeset
101 "CollectionItemAttributeServiceImpl.setCollectionItemAttribute");
bdc270ea6195 Edited item attributes are saved and send to the server on accept.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 1285
diff changeset
102
1425
bc06a671ef60 Removed the URL parameter from service calls. The service
Raimund Renkert <raimund.renkert@intevation.de>
parents: 1367
diff changeset
103 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
104
1292
bdc270ea6195 Edited item attributes are saved and send to the server on accept.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 1285
diff changeset
105 Document doc = writeXML(attributes, artifact);
bdc270ea6195 Edited item attributes are saved and send to the server on accept.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 1285
diff changeset
106
bdc270ea6195 Edited item attributes are saved and send to the server on accept.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 1285
diff changeset
107 try {
bdc270ea6195 Edited item attributes are saved and send to the server on accept.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 1285
diff changeset
108 HttpClient client = new HttpClientImpl(url, locale);
bdc270ea6195 Edited item attributes are saved and send to the server on accept.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 1285
diff changeset
109 Document res = (Document) client.doCollectionAction(
bdc270ea6195 Edited item attributes are saved and send to the server on accept.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 1285
diff changeset
110 doc,
bdc270ea6195 Edited item attributes are saved and send to the server on accept.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 1285
diff changeset
111 collection.identifier(),
bdc270ea6195 Edited item attributes are saved and send to the server on accept.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 1285
diff changeset
112 new DocumentResponseHandler());
bdc270ea6195 Edited item attributes are saved and send to the server on accept.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 1285
diff changeset
113
bdc270ea6195 Edited item attributes are saved and send to the server on accept.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 1285
diff changeset
114 return;
bdc270ea6195 Edited item attributes are saved and send to the server on accept.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 1285
diff changeset
115 }
bdc270ea6195 Edited item attributes are saved and send to the server on accept.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 1285
diff changeset
116 catch (ConnectionException ce) {
1367
ab8eb2f544f2 Replaced stdout and stderr logging with log4j loggers in server classes.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1329
diff changeset
117 logger.error(ce, ce);
ab8eb2f544f2 Replaced stdout and stderr logging with log4j loggers in server classes.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1329
diff changeset
118 throw new ServerException(ce.getLocalizedMessage());
1292
bdc270ea6195 Edited item attributes are saved and send to the server on accept.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 1285
diff changeset
119 }
bdc270ea6195 Edited item attributes are saved and send to the server on accept.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 1285
diff changeset
120 }
bdc270ea6195 Edited item attributes are saved and send to the server on accept.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 1285
diff changeset
121
1310
c4c957a9c092 Improved exception handling while fetching theme styles.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1295
diff changeset
122 protected CollectionItemAttribute readXML(Document doc, String artifact)
c4c957a9c092 Improved exception handling while fetching theme styles.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1295
diff changeset
123 throws ServerException
c4c957a9c092 Improved exception handling while fetching theme styles.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1295
diff changeset
124 {
1285
0f3b19df1880 Added new service and model for collection item attributes.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
125 CollectionItemAttribute cia = new CollectionItemAttribute();
1292
bdc270ea6195 Edited item attributes are saved and send to the server on accept.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 1285
diff changeset
126 cia.setArtifact(artifact);
1285
0f3b19df1880 Added new service and model for collection item attributes.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
127
0f3b19df1880 Added new service and model for collection item attributes.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
128 Element root = doc.getDocumentElement();
0f3b19df1880 Added new service and model for collection item attributes.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
129 NodeList themes = root.getElementsByTagName("art:themes");
0f3b19df1880 Added new service and model for collection item attributes.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
130
1310
c4c957a9c092 Improved exception handling while fetching theme styles.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1295
diff changeset
131 if (themes == null || themes.getLength() == 0) {
c4c957a9c092 Improved exception handling while fetching theme styles.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1295
diff changeset
132 throw new ServerException(ERROR_NO_STYLES_FOUND);
1285
0f3b19df1880 Added new service and model for collection item attributes.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
133 }
0f3b19df1880 Added new service and model for collection item attributes.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
134
0f3b19df1880 Added new service and model for collection item attributes.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
135 Element e = (Element) themes.item(0);
0f3b19df1880 Added new service and model for collection item attributes.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
136 NodeList items = e.getElementsByTagName("theme");
0f3b19df1880 Added new service and model for collection item attributes.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
137
0f3b19df1880 Added new service and model for collection item attributes.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
138 for (int i = 0; i < items.getLength(); i++) {
2908
cd068ff7966d Show only style attributes in StyleEditorWindow that are not 'hidden'.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1442
diff changeset
139 Style s = StyleHelper.getStyle ((Element) items.item(i));
1326
974c6b3700de Use the theme index to identify the correct style.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 1310
diff changeset
140 if(s == null) {
974c6b3700de Use the theme index to identify the correct style.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 1310
diff changeset
141 throw new ServerException(ERROR_NO_STYLES_FOUND);
974c6b3700de Use the theme index to identify the correct style.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 1310
diff changeset
142 }
974c6b3700de Use the theme index to identify the correct style.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 1310
diff changeset
143 else {
974c6b3700de Use the theme index to identify the correct style.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 1310
diff changeset
144 cia.appendStyle(s);
974c6b3700de Use the theme index to identify the correct style.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 1310
diff changeset
145 }
1285
0f3b19df1880 Added new service and model for collection item attributes.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
146 }
0f3b19df1880 Added new service and model for collection item attributes.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
147
0f3b19df1880 Added new service and model for collection item attributes.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
148 return cia;
0f3b19df1880 Added new service and model for collection item attributes.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
149 }
0f3b19df1880 Added new service and model for collection item attributes.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
150
0f3b19df1880 Added new service and model for collection item attributes.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
151
1292
bdc270ea6195 Edited item attributes are saved and send to the server on accept.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 1285
diff changeset
152 protected Document writeXML (
bdc270ea6195 Edited item attributes are saved and send to the server on accept.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 1285
diff changeset
153 CollectionItemAttribute attributes,
bdc270ea6195 Edited item attributes are saved and send to the server on accept.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 1285
diff changeset
154 String artifact)
bdc270ea6195 Edited item attributes are saved and send to the server on accept.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 1285
diff changeset
155 {
bdc270ea6195 Edited item attributes are saved and send to the server on accept.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 1285
diff changeset
156 Document styles = XMLUtils.newDocument();
bdc270ea6195 Edited item attributes are saved and send to the server on accept.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 1285
diff changeset
157
bdc270ea6195 Edited item attributes are saved and send to the server on accept.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 1285
diff changeset
158 XMLUtils.ElementCreator ec = new XMLUtils.ElementCreator(
bdc270ea6195 Edited item attributes are saved and send to the server on accept.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 1285
diff changeset
159 styles,
bdc270ea6195 Edited item attributes are saved and send to the server on accept.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 1285
diff changeset
160 ArtifactNamespaceContext.NAMESPACE_URI,
bdc270ea6195 Edited item attributes are saved and send to the server on accept.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 1285
diff changeset
161 ArtifactNamespaceContext.NAMESPACE_PREFIX);
bdc270ea6195 Edited item attributes are saved and send to the server on accept.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 1285
diff changeset
162 Element action = ec.create("action");
bdc270ea6195 Edited item attributes are saved and send to the server on accept.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 1285
diff changeset
163 Element type = ec.create("type");
bdc270ea6195 Edited item attributes are saved and send to the server on accept.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 1285
diff changeset
164 type.setAttribute("name", "setitemattribute");
bdc270ea6195 Edited item attributes are saved and send to the server on accept.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 1285
diff changeset
165 Element art = ec.create("artifact");
bdc270ea6195 Edited item attributes are saved and send to the server on accept.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 1285
diff changeset
166 art.setAttribute("uuid", artifact);
bdc270ea6195 Edited item attributes are saved and send to the server on accept.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 1285
diff changeset
167 Element attr = ec.create("attribute");
bdc270ea6195 Edited item attributes are saved and send to the server on accept.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 1285
diff changeset
168 Element themes = ec.create("themes");
bdc270ea6195 Edited item attributes are saved and send to the server on accept.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 1285
diff changeset
169 action.appendChild(type);
bdc270ea6195 Edited item attributes are saved and send to the server on accept.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 1285
diff changeset
170 type.appendChild(art);
bdc270ea6195 Edited item attributes are saved and send to the server on accept.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 1285
diff changeset
171 art.appendChild(attr);
bdc270ea6195 Edited item attributes are saved and send to the server on accept.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 1285
diff changeset
172 attr.appendChild(themes);
bdc270ea6195 Edited item attributes are saved and send to the server on accept.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 1285
diff changeset
173
bdc270ea6195 Edited item attributes are saved and send to the server on accept.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 1285
diff changeset
174 XMLUtils.ElementCreator creator = new XMLUtils.ElementCreator(
bdc270ea6195 Edited item attributes are saved and send to the server on accept.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 1285
diff changeset
175 styles,
bdc270ea6195 Edited item attributes are saved and send to the server on accept.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 1285
diff changeset
176 "",
bdc270ea6195 Edited item attributes are saved and send to the server on accept.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 1285
diff changeset
177 "");
bdc270ea6195 Edited item attributes are saved and send to the server on accept.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 1285
diff changeset
178
bdc270ea6195 Edited item attributes are saved and send to the server on accept.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 1285
diff changeset
179 for (int i = 0; i < attributes.getNumStyles(); i++) {
bdc270ea6195 Edited item attributes are saved and send to the server on accept.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 1285
diff changeset
180 Style s = attributes.getStyle(i);
bdc270ea6195 Edited item attributes are saved and send to the server on accept.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 1285
diff changeset
181 Element theme = creator.create("theme");
bdc270ea6195 Edited item attributes are saved and send to the server on accept.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 1285
diff changeset
182 theme.setAttribute("name", s.getName());
bdc270ea6195 Edited item attributes are saved and send to the server on accept.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 1285
diff changeset
183 theme.setAttribute("facet", s.getFacet());
1329
b18b32269a3f Set the correct index when saving changed attributes.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 1326
diff changeset
184 theme.setAttribute("index", String.valueOf(s.getIndex()));
1292
bdc270ea6195 Edited item attributes are saved and send to the server on accept.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 1285
diff changeset
185 for (int j = 0; j < s.getNumSettings(); j++) {
bdc270ea6195 Edited item attributes are saved and send to the server on accept.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 1285
diff changeset
186 StyleSetting set = s.getSetting(j);
bdc270ea6195 Edited item attributes are saved and send to the server on accept.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 1285
diff changeset
187 Element field = creator.create("field");
bdc270ea6195 Edited item attributes are saved and send to the server on accept.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 1285
diff changeset
188 field.setAttribute("name", set.getName());
bdc270ea6195 Edited item attributes are saved and send to the server on accept.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 1285
diff changeset
189 field.setAttribute("display", set.getDisplayName());
bdc270ea6195 Edited item attributes are saved and send to the server on accept.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 1285
diff changeset
190 field.setAttribute("default", set.getDefaultValue());
bdc270ea6195 Edited item attributes are saved and send to the server on accept.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 1285
diff changeset
191 field.setAttribute("hints", set.getHints());
bdc270ea6195 Edited item attributes are saved and send to the server on accept.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 1285
diff changeset
192 field.setAttribute("type", set.getType());
4284
7a94d5e7fc3d Write the "hidden" attribute of a style into the collection's attribute when using the theme editor.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2908
diff changeset
193 field.setAttribute("hidden", String.valueOf(set.isHidden()));
1292
bdc270ea6195 Edited item attributes are saved and send to the server on accept.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 1285
diff changeset
194 theme.appendChild(field);
bdc270ea6195 Edited item attributes are saved and send to the server on accept.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 1285
diff changeset
195 }
bdc270ea6195 Edited item attributes are saved and send to the server on accept.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 1285
diff changeset
196 themes.appendChild(theme);
bdc270ea6195 Edited item attributes are saved and send to the server on accept.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 1285
diff changeset
197 }
bdc270ea6195 Edited item attributes are saved and send to the server on accept.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 1285
diff changeset
198 styles.appendChild(action);
bdc270ea6195 Edited item attributes are saved and send to the server on accept.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 1285
diff changeset
199 return styles;
bdc270ea6195 Edited item attributes are saved and send to the server on accept.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 1285
diff changeset
200 }
1285
0f3b19df1880 Added new service and model for collection item attributes.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
201 }
0f3b19df1880 Added new service and model for collection item attributes.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
202 // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :

http://dive4elements.wald.intevation.org