1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34 package info.magnolia.module.googlesitemap.model;
35
36 import info.magnolia.context.MgnlContext;
37 import info.magnolia.module.googlesitemap.bean.SiteMapEntry;
38 import info.magnolia.module.googlesitemap.service.SiteMapService;
39 import info.magnolia.module.googlesitemap.service.SiteMapXMLUtil;
40 import info.magnolia.rendering.model.RenderingModel;
41 import info.magnolia.rendering.model.RenderingModelImpl;
42 import info.magnolia.rendering.template.RenderableDefinition;
43
44 import java.util.Collections;
45 import java.util.Iterator;
46
47 import javax.inject.Inject;
48 import javax.jcr.Node;
49 import javax.jcr.RepositoryException;
50 import javax.xml.bind.JAXBException;
51
52 import org.slf4j.Logger;
53 import org.slf4j.LoggerFactory;
54
55
56
57
58
59
60
61 public class SiteMapModel<RD extends RenderableDefinition> extends RenderingModelImpl<RD> {
62
63
64 private static final Logger log = LoggerFactory.getLogger(SiteMapModel.class);
65
66
67 protected SiteMapService siteMapService;
68
69 private SiteMapXMLUtil xmlUtil;
70
71
72
73
74 @Inject
75 public SiteMapModel(Node content, RD definition, RenderingModel<?> parent, SiteMapService siteMapService, SiteMapXMLUtil xmlUtil) {
76 super(content, definition, parent);
77 this.siteMapService = siteMapService;
78 this.xmlUtil = xmlUtil;
79 }
80
81 @Override
82 public String execute() {
83
84
85 if (this.definition.getParameters() != null && this.definition.getParameters().containsKey("xmlDisplay")) {
86 MgnlContext.getWebContext().getResponse().setContentType("text/xml");
87 }
88
89 return null;
90 }
91
92 public Iterator<SiteMapEntry> getSiteMapBeans() {
93 try {
94 return siteMapService.getSiteMapBeans(this.content);
95 } catch (RepositoryException e) {
96 log.error("Could not initialize SiteMapBeans", e);
97 return Collections.<SiteMapEntry>emptySet().iterator();
98 }
99 }
100
101 public String getXML() {
102 try {
103 return xmlUtil.generateSiteMapXML(this.content);
104 } catch (RepositoryException e) {
105 log.error("Repository operation problem occurred while generating XML:", e);
106 } catch (JAXBException e) {
107 log.error("JAXB operation problem occurred while generating XML:", e);
108 }
109 return "";
110 }
111 }