comparison flys-artifacts/src/main/java/de/intevation/flys/artifacts/services/ThemeListingService.java @ 2737:83b22ccf48da

Introduced theme groups and added new service to get themes filtered by name. flys-artifacts/trunk@4470 c6561f87-3c4e-4783-a992-168aeb5c3f6f
author Raimund Renkert <raimund.renkert@intevation.de>
date Wed, 23 May 2012 08:46:45 +0000
parents
children 2f7fed1eb4bf
comparison
equal deleted inserted replaced
2736:8839086c4b7b 2737:83b22ccf48da
1 package de.intevation.flys.artifacts.services;
2
3 import java.util.List;
4
5 import org.apache.log4j.Logger;
6
7 import org.w3c.dom.Document;
8 import org.w3c.dom.Element;
9 import org.w3c.dom.Node;
10
11 import de.intevation.artifacts.CallMeta;
12 import de.intevation.artifacts.GlobalContext;
13
14 import de.intevation.artifacts.common.ArtifactNamespaceContext;
15 import de.intevation.artifacts.common.utils.XMLUtils;
16
17 import de.intevation.flys.themes.Theme;
18 import de.intevation.flys.themes.ThemeGroup;
19
20 import de.intevation.flys.themes.ThemeFactory;
21 import de.intevation.flys.artifacts.context.FLYSContext;
22
23 /**
24 * This service provides a list of themes filtered by the theme name.
25 *
26 * @author <a href="mailto:raimund.renkert@intevation.de">Raimund Renkert</a>
27 */
28 public class ThemeListingService extends FLYSService {
29
30 /** The logger used in this service.*/
31 private static Logger logger = Logger.getLogger(ThemeListingService.class);
32
33 private static final String XPATH_THEME_NAME = "/theme/@name";
34
35 protected Document doProcess(
36 Document data,
37 GlobalContext context,
38 CallMeta callMeta
39 ) {
40 logger.debug("ThemeListingService.process");
41 String name = XMLUtils.xpathString(data, XPATH_THEME_NAME, null);
42
43 if (name == null) {
44 logger.warn("No theme name provided.");
45 }
46 Document result = XMLUtils.newDocument();
47
48 XMLUtils.ElementCreator ec = new XMLUtils.ElementCreator(
49 result,
50 null,
51 null);
52
53 List<ThemeGroup> tgs =
54 ThemeFactory.getThemeGroups((FLYSContext) context);
55
56 Element te = ec.create("themes");
57
58 for (ThemeGroup tg: tgs) {
59 Element elem = ec.create("themegroup");
60 if (tg.getName().equals("virtual")) {
61 continue;
62 }
63 ec.addAttr(elem, "name", tg.getName());
64 Theme theme = tg.getThemeByName(name);
65 Document d = theme.toXML();
66 Node imported = result.importNode(d.getDocumentElement(), true);
67 elem.appendChild(imported);
68 te.appendChild(elem);
69 }
70
71 result.appendChild(te);
72 return result;
73 }
74 }
75 // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :

http://dive4elements.wald.intevation.org