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.app.subapp.sitemapdetail.contentviews.formatter;
35
36 import info.magnolia.jcr.util.NodeTypes;
37 import info.magnolia.jcr.util.NodeUtil;
38 import info.magnolia.ui.vaadin.integration.jcr.JcrNodeAdapter;
39 import info.magnolia.ui.workbench.column.AbstractColumnFormatter;
40 import info.magnolia.ui.workbench.column.definition.PropertyColumnDefinition;
41 import info.magnolia.util.EscapeUtil;
42
43 import javax.inject.Inject;
44 import javax.jcr.Node;
45 import javax.jcr.RepositoryException;
46
47 import org.slf4j.Logger;
48 import org.slf4j.LoggerFactory;
49
50 import com.vaadin.data.Item;
51 import com.vaadin.ui.Table;
52
53
54
55
56
57 public class FolderNameColumnFormatter extends AbstractColumnFormatter<PropertyColumnDefinition> {
58
59 private Logger log = LoggerFactory.getLogger(getClass());
60
61 @Inject
62 public FolderNameColumnFormatter(PropertyColumnDefinition definition) {
63 super(definition);
64 }
65
66 @Override
67 public Object generateCell(Table source, Object itemId, Object columnId) {
68 Item item = source.getItem(itemId);
69 if (item instanceof JcrNodeAdapter) {
70 JcrNodeAdapter nodeAdapter = (JcrNodeAdapter)item;
71 Node node = nodeAdapter.getJcrItem();
72 try {
73 if (NodeUtil.isNodeType(node, NodeTypes.Folder.NAME)) {
74 return node.getName();
75 }
76 } catch (RepositoryException e) {
77 log.error("Failed to determine folder name: ", e);
78 return "";
79 }
80 }
81 if (item != null && item.getItemProperty(columnId) != null) {
82 String sitemapName = item.getItemProperty(columnId).getValue().toString();
83 return EscapeUtil.escapeXss(sitemapName);
84 }
85 return "";
86 }
87 }