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.blossom.template;
35
36 import java.lang.annotation.Annotation;
37 import java.util.ArrayList;
38 import java.util.HashMap;
39 import java.util.List;
40 import java.util.Map;
41
42 import org.springframework.util.LinkedMultiValueMap;
43 import org.springframework.util.MultiValueMap;
44
45
46
47
48
49
50
51
52 public class DetectedHandlersMetaData {
53
54 private List<HandlerMetaData> templates = new ArrayList<HandlerMetaData>();
55 private Map<Class<?>, List<HandlerMetaData>> areasByEnclosingClass = new HashMap<Class<?>, List<HandlerMetaData>>();
56 private MultiValueMap<Class<? extends Annotation>, String> categoryUsages = new LinkedMultiValueMap<Class<? extends Annotation>, String>();
57
58 public void addTemplate(HandlerMetaData handlerMetaData) {
59 this.templates.add(handlerMetaData);
60 }
61
62 public List<HandlerMetaData> getTemplates() {
63 return templates;
64 }
65
66 public void addArea(HandlerMetaData handler) {
67 Class<?> enclosingClass = handler.getHandlerClass().getEnclosingClass();
68 List<HandlerMetaData> list = areasByEnclosingClass.get(enclosingClass);
69 if (list == null) {
70 list = new ArrayList<HandlerMetaData>();
71 areasByEnclosingClass.put(enclosingClass, list);
72 }
73 list.add(handler);
74 }
75
76 public List<HandlerMetaData> getAreasByEnclosingClass(Class<?> enclosingClass) {
77 return areasByEnclosingClass.get(enclosingClass);
78 }
79
80 public void addCategories(String templateId, List<Class<? extends Annotation>> categories) {
81 for (Class<? extends Annotation> category : categories) {
82 categoryUsages.add(category, templateId);
83 }
84 }
85
86 public List<String> getTemplatesInCategory(Class<? extends Annotation> category) {
87 List<String> templatesInCategory = categoryUsages.get(category);
88 if (templatesInCategory == null)
89 return new ArrayList<String>();
90 return templatesInCategory;
91 }
92 }