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.ui.contentapp;
35
36 import info.magnolia.objectfactory.ComponentProvider;
37 import info.magnolia.ui.contentapp.browser.ThumbnailPresenter;
38 import info.magnolia.ui.contentapp.observation.JcrDataSourceObservation;
39 import info.magnolia.ui.filter.DataFilter;
40
41 import javax.inject.Inject;
42 import javax.jcr.Node;
43 import javax.jcr.RepositoryException;
44
45 import org.slf4j.Logger;
46 import org.slf4j.LoggerFactory;
47
48 import com.vaadin.data.provider.DataProvider;
49
50
51
52
53 public class JcrThumbnailPresenter implements ThumbnailPresenter<Node> {
54
55 private static final Logger log = LoggerFactory.getLogger(JcrThumbnailPresenter.class);
56
57 private JcrDataProvider dataProvider;
58
59 @Inject
60 public JcrThumbnailPresenter(ComponentProvider componentProvider, JcrDataSourceObservation jcrDataSourceObservation) {
61 this.dataProvider = componentProvider.newInstance(JcrDataProvider.class);
62 jcrDataSourceObservation.register(dataProvider::refreshAll);
63 }
64
65 @Override
66 public DataProvider<Node, DataFilter> dataProvider() {
67 return dataProvider;
68 }
69
70 @Override
71 public String getCaption(Node node) {
72 try {
73 Node thumbnailNode = node.getNode("thumbnail");
74 String fileName = thumbnailNode.getProperty("fileName").getString();
75 String extension = thumbnailNode.getProperty("extension").getString();
76 return String.format("%s.%s", fileName, extension);
77 } catch (RepositoryException e) {
78 log.debug("The caption for the thumbnail '{}' couldn't be built, returning the raw node name instead.", node, e);
79 }
80
81 try {
82 return node.getName();
83 } catch (RepositoryException e) {
84 log.debug("The node name for '{}' couldn't be fetched either, returning an empty string.", node, e);
85 }
86
87 return "";
88 }
89 }