comparison flys-artifacts/src/main/java/org/dive4elements/river/artifacts/services/ThemeListingService.java @ 5831:bd047b71ab37

Repaired internal references
author Sascha L. Teichmann <teichmann@intevation.de>
date Thu, 25 Apr 2013 12:06:39 +0200
parents flys-artifacts/src/main/java/de/intevation/flys/artifacts/services/ThemeListingService.java@2f7fed1eb4bf
children
comparison
equal deleted inserted replaced
5830:160f53ee0870 5831:bd047b71ab37
1 package org.dive4elements.river.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 org.dive4elements.artifacts.CallMeta;
12 import org.dive4elements.artifacts.GlobalContext;
13
14 import org.dive4elements.artifacts.common.utils.XMLUtils;
15
16 import org.dive4elements.river.themes.Theme;
17 import org.dive4elements.river.themes.ThemeGroup;
18
19 import org.dive4elements.river.themes.ThemeFactory;
20 import org.dive4elements.river.artifacts.context.FLYSContext;
21
22 /**
23 * This service provides a list of themes filtered by the theme name.
24 *
25 * @author <a href="mailto:raimund.renkert@intevation.de">Raimund Renkert</a>
26 */
27 public class ThemeListingService extends FLYSService {
28
29 /** The logger used in this service.*/
30 private static Logger logger = Logger.getLogger(ThemeListingService.class);
31
32 private static final String XPATH_THEME_NAME = "/theme/@name";
33
34 protected Document doProcess(
35 Document data,
36 GlobalContext context,
37 CallMeta callMeta
38 ) {
39 logger.debug("ThemeListingService.process");
40 String name = XMLUtils.xpathString(data, XPATH_THEME_NAME, null);
41
42 if (name == null) {
43 logger.warn("No theme name provided.");
44 }
45 Document result = XMLUtils.newDocument();
46
47 XMLUtils.ElementCreator ec = new XMLUtils.ElementCreator(
48 result,
49 null,
50 null);
51
52 List<ThemeGroup> tgs =
53 ThemeFactory.getThemeGroups((FLYSContext) context);
54
55 Element te = ec.create("themes");
56
57 for (ThemeGroup tg: tgs) {
58 Element elem = ec.create("themegroup");
59 if (tg.getName().equals("virtual")) {
60 continue;
61 }
62 ec.addAttr(elem, "name", tg.getName());
63 Theme theme = tg.getThemeByName(name);
64 Document d = theme.toXML();
65 Node imported = result.importNode(d.getDocumentElement(), true);
66 elem.appendChild(imported);
67 te.appendChild(elem);
68 }
69
70 result.appendChild(te);
71 return result;
72 }
73 }
74 // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :

http://dive4elements.wald.intevation.org