Mercurial > dive4elements > river
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 : |