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.external.app.contentview.column;
35
36 import info.magnolia.cms.util.PathUtil;
37 import info.magnolia.dam.api.Asset;
38 import info.magnolia.dam.api.Item;
39 import info.magnolia.ui.vaadin.integration.contentconnector.ContentConnector;
40 import info.magnolia.ui.workbench.column.AbstractColumnFormatter;
41
42 import javax.inject.Inject;
43
44 import org.apache.commons.lang3.StringUtils;
45 import org.slf4j.Logger;
46 import org.slf4j.LoggerFactory;
47
48 import com.google.common.net.MediaType;
49 import com.vaadin.data.util.BeanItem;
50 import com.vaadin.ui.Table;
51
52
53
54
55 public class AssetTypeColumnFormatter extends AbstractColumnFormatter<AssetTypeColumnDefinition> {
56
57 private static final Logger log = LoggerFactory.getLogger(AssetTypeColumnFormatter.class);
58 private final ContentConnector contentConnector;
59
60 @Inject
61 public AssetTypeColumnFormatter(AssetTypeColumnDefinition definition, ContentConnector contentConnector) {
62 super(definition);
63 this.contentConnector = contentConnector;
64 }
65
66 @Override
67 public Object generateCell(Table source, Object itemId, Object columnId) {
68 com.vaadin.data.Item uiItem = contentConnector.getItem(itemId);
69 if (uiItem instanceof BeanItem) {
70 Item item = ((BeanItem<Item>) uiItem).getBean();
71 if (item != null && item.isAsset()) {
72 String value = "?";
73 try {
74 MediaType mediaType = MediaType.parse(((Asset) item).getMimeType());
75 value = mediaType.type();
76 } catch (Exception e) {
77 log.warn("Not able to define a Mediatype based on the following mimeType '{}'", ((Asset) item).getMimeType());
78 }
79 if (definition.addFileExtension()) {
80 value = value + " - " + PathUtil.getExtension(((Asset) item).getFileName());
81 }
82 return value;
83 }
84 }
85 return StringUtils.EMPTY;
86 }
87 }