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.templatingkit.imaging.generation;
35
36 import java.net.URI;
37 import java.net.URISyntaxException;
38
39 import info.magnolia.cms.beans.runtime.FileProperties;
40 import info.magnolia.cms.core.NodeData;
41 import info.magnolia.context.MgnlContext;
42 import info.magnolia.imaging.ParameterProvider;
43 import info.magnolia.imaging.operations.ImageOperation;
44 import info.magnolia.jcr.util.PropertyUtil;
45 import info.magnolia.module.templatingkit.imaging.VariationImpl;
46 import info.magnolia.module.templatingkit.sites.Site;
47
48 import javax.inject.Inject;
49 import javax.inject.Provider;
50 import javax.jcr.Property;
51 import javax.jcr.RepositoryException;
52
53 import org.apache.commons.lang.StringUtils;
54 import org.slf4j.Logger;
55 import org.slf4j.LoggerFactory;
56
57
58
59
60
61
62
63 public class ImageOperationProvidingVariation extends VariationImpl {
64
65 private static Logger log = LoggerFactory.getLogger(ImageOperationProvidingVariation.class);
66 protected ImageOperation<ParameterProvider<NodeData>> imageOperation;
67 private Provider<Site> siteProvider;
68
69 @Inject
70 public ImageOperationProvidingVariation(Provider<Site> siteProvider) {
71
72 setGeneratorName("stk");
73 this.siteProvider = siteProvider;
74 }
75
76 public ImageOperation<ParameterProvider<NodeData>> getImageOperation() {
77 return this.imageOperation;
78 }
79
80 public void setImageOperation(ImageOperation<ParameterProvider<NodeData>> imageOperation) {
81 this.imageOperation = imageOperation;
82 }
83
84 @Override
85 public String createLink(Property binaryNodeData) {
86 String workspaceName = null;
87 String path = null;
88 String fileName = null;
89 String extension = null;
90 String themeName = null;
91 try {
92 workspaceName = binaryNodeData.getSession().getWorkspace().getName();
93 path = binaryNodeData.getParent().getPath();
94 fileName = PropertyUtil.getString(binaryNodeData.getParent(),FileProperties.PROPERTY_FILENAME);
95 extension = PropertyUtil.getString(binaryNodeData.getParent(),FileProperties.EXTENSION);
96 themeName = siteProvider.get().getTheme().getName();
97 } catch (RepositoryException e) {
98 String propertyPath = null;
99 try {
100 propertyPath = binaryNodeData.getPath()+binaryNodeData.getName();
101 } catch (Exception ee) {}
102 log.warn("could not create Link for property :"+propertyPath, e);
103 return null;
104 }
105 if(StringUtils.isNotEmpty(extension)){
106 fileName += "." + extension;
107 }
108 try {
109 fileName = new URI(null, null, fileName, null).toASCIIString();
110 } catch (URISyntaxException e) {
111 log.warn("could not create link for image due to illegal property file name " + fileName, e);
112 return null;
113 }
114 return MgnlContext.getContextPath() + "/.imaging/" + getGeneratorName() + "/" + themeName + "/" + getName() + "/" + workspaceName + path + "/" + fileName;
115 }
116
117 }