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.resources.app.imageprovider;
35
36 import info.magnolia.context.MgnlContext;
37 import info.magnolia.resourceloader.ResourceOrigin;
38 import info.magnolia.ui.imageprovider.AbstractImageProvider;
39 import info.magnolia.ui.vaadin.integration.contentconnector.ContentConnector;
40
41 import javax.inject.Inject;
42
43 import org.apache.commons.lang3.StringUtils;
44
45 import com.vaadin.data.Item;
46 import com.vaadin.data.Property;
47 import com.vaadin.server.ExternalResource;
48
49
50
51
52 public class ResourcesImageProvider extends AbstractImageProvider {
53
54 private final ResourceOrigin origin;
55
56 @Inject
57 public ResourcesImageProvider(ContentConnector contentConnector, ResourceOrigin origin) {
58 super(contentConnector);
59 this.origin = origin;
60 }
61
62 @Override
63 protected String resolveImagePath(Item resourceItem, String generator) {
64 String itemPath = getImagePath(resourceItem);
65 if (StringUtils.isNotBlank(itemPath) && origin.hasPath(itemPath)) {
66 return buildImageLink(itemPath);
67 }
68 return null;
69 }
70
71 @Override
72 protected Object resolveImageResource(Item resourceItem, String generator) {
73 String itemPath = getImagePath(resourceItem);
74 if (StringUtils.isNotBlank(itemPath) && origin.hasPath(itemPath)) {
75 String mimeType = getMimeType(resourceItem);
76 if (isImage(mimeType)) {
77 String path = buildImageLink(itemPath);
78 return new ExternalResource(path, mimeType);
79 }
80 }
81 return null;
82 }
83
84 private String getImagePath(Item item) {
85 if (item != null) {
86 Property path = item.getItemProperty("path");
87 if (path != null) {
88 return (String) path.getValue();
89 }
90 }
91 return null;
92 }
93
94 private String getMimeType(Item item) {
95 Property format = item.getItemProperty("format");
96 if (format != null) {
97 return (String) format.getValue();
98 }
99 return null;
100 }
101
102 private String buildImageLink(String itemPath) {
103 return MgnlContext.getContextPath() + "/.resources" + itemPath;
104 }
105 }