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