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