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.dam;
35
36 import info.magnolia.cms.core.Content;
37 import info.magnolia.cms.util.NodeDataUtil;
38 import info.magnolia.objectfactory.Components;
39
40 import java.util.LinkedHashMap;
41 import java.util.Map;
42
43 import org.apache.commons.lang.StringUtils;
44 import org.slf4j.Logger;
45 import org.slf4j.LoggerFactory;
46
47
48
49
50
51
52 public class DAMSupport {
53
54 public static String VARIATION_ORIGINAL = "original";
55
56 private Map<String, DAMHandler> handlers = new LinkedHashMap<String, DAMHandler>();
57
58 private static Logger log = LoggerFactory.getLogger(DAMSupport.class);
59
60 public static DAMSupport getInstance() {
61 try {
62 return Components.getComponent(DAMSupport.class);
63 } catch (Exception e) {
64
65 log.info("Class DAMSupport not defined");
66 return null;
67 }
68 }
69
70
71
72
73
74
75
76
77
78 public Asset getAsset(Content node, String nodeDataPrefix) throws DAMException {
79 String handlerName = NodeDataUtil.getString(node, nodeDataPrefix);
80 final String path = node.getHandle() + "/" + nodeDataPrefix;
81 if(StringUtils.isEmpty(handlerName)){
82 throw new AssetNotFoundException("No handler defined for " + path);
83 }
84 final DAMHandler handler = handlers.get(handlerName);
85 if(handler == null){
86 throw new DAMException("No handler found with name [" + handlerName + "] for [" + path + "]");
87 }
88 return handler.getAsset(node, nodeDataPrefix);
89 }
90
91
92
93
94 public Map<String, DAMHandler> getHandlers() {
95 return handlers;
96 }
97
98 public void setHandlers(Map<String, DAMHandler> handlers) {
99 this.handlers = handlers;
100 }
101
102 public void addHandler(String name, DAMHandler damHandler) {
103 if(damHandler.isEnabled()) {
104 this.handlers.put(name, damHandler);
105 }
106 }
107
108 public DAMHandler getHandler(String name) {
109 return handlers.get(name);
110 }
111
112 }
113