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.dam.app.assets.column;
35
36 import info.magnolia.cms.beans.config.MIMEMapping;
37 import info.magnolia.dam.jcr.AssetNodeTypes;
38 import info.magnolia.jcr.util.PropertyUtil;
39 import info.magnolia.ui.workbench.column.AbstractColumnFormatter;
40
41 import javax.jcr.Item;
42 import javax.jcr.Node;
43 import javax.jcr.RepositoryException;
44
45 import org.apache.commons.lang.StringUtils;
46 import org.slf4j.Logger;
47 import org.slf4j.LoggerFactory;
48
49 import com.vaadin.ui.Table;
50
51
52
53
54
55
56 public class AssetNameColumnFormatter extends AbstractColumnFormatter<AssetNameColumnDefinition> {
57
58 private static final Logger log = LoggerFactory.getLogger(AssetNameColumnFormatter.class);
59 private static final String ICON_TAG = "<span class=\"%s v-table-icon-element\"></span>";
60
61 public AssetNameColumnFormatter(AssetNameColumnDefinition definition) {
62 super(definition);
63 }
64
65 @Override
66 public Object generateCell(Table source, Object itemId, Object columnId) {
67 final Item jcrItem = getJcrItem(source, itemId);
68 if (jcrItem != null && jcrItem.isNode()) {
69 Node node = (Node) jcrItem;
70 try {
71 String icon = getIcon((Node) jcrItem);
72 if (node.hasProperty(AssetNodeTypes.Asset.ASSET_NAME) && StringUtils.isNotBlank(node.getProperty(AssetNodeTypes.Asset.ASSET_NAME).getString())) {
73 return icon + node.getProperty(AssetNodeTypes.Asset.ASSET_NAME).getString();
74 }
75 return icon + node.getName();
76 } catch (RepositoryException e) {
77 log.warn("Unable to get the displayed value for the name column ", e);
78 }
79 }
80 return StringUtils.EMPTY;
81 }
82 private String getIcon(Node node) throws RepositoryException {
83 if (node.getPrimaryNodeType().getName().equals(AssetNodeTypes.Asset.NAME) && node.hasNode(AssetNodeTypes.AssetResource.RESOURCE_NAME)) {
84 String mimeType = PropertyUtil.getString(node.getNode(AssetNodeTypes.AssetResource.RESOURCE_NAME), AssetNodeTypes.AssetResource.MIMETYPE, "");
85 String extension = PropertyUtil.getString(node.getNode(AssetNodeTypes.AssetResource.RESOURCE_NAME), AssetNodeTypes.AssetResource.EXTENSION, "");
86 if (StringUtils.isBlank(mimeType)) {
87 mimeType = MIMEMapping.getMIMEType(extension);
88 }
89 if (StringUtils.isBlank(mimeType)) {
90 return String.format(ICON_TAG, MIMEMapping.DEFAULT_ICON_STYLE);
91 }
92 String icon = MIMEMapping.getMIMETypeIconStyle(mimeType);
93 return String.format(ICON_TAG, icon);
94 }
95 return StringUtils.EMPTY;
96 }
97 }