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.ui.actionbar.definition;
35
36 import info.magnolia.ui.api.app.AppDescriptor;
37 import info.magnolia.ui.api.app.SubAppDescriptor;
38 import info.magnolia.ui.api.i18n.AbstractAppKeyGenerator;
39
40 import java.lang.reflect.AnnotatedElement;
41 import java.util.List;
42
43 import org.apache.commons.lang3.StringUtils;
44
45
46
47
48 public class ActionbarSectionDefinitionKeyGenerator extends AbstractAppKeyGenerator<ActionbarSectionDefinition> {
49
50 private static final String ACTION_BAR = "actionbar";
51 private static final String SECTIONS = "sections";
52
53
54
55
56 @Override
57 protected void keysFor(List<String> keys, ActionbarSectionDefinition sectionDefinition, AnnotatedElement el) {
58 Object root = getRoot(sectionDefinition);
59 final String fieldOrGetterName = fieldOrGetterName(el);
60 final String sectionName = sectionDefinition.getName();
61
62 if (root instanceof AppDescriptor) {
63
64 AppDescriptor appDescriptor = (AppDescriptor) root;
65 SubAppDescriptor subAppDescriptor = null;
66 List<?> ancestors = getAncestors(sectionDefinition);
67 for (Object ancestor : ancestors) {
68 if (ancestor instanceof SubAppDescriptor) {
69 subAppDescriptor = (SubAppDescriptor) ancestor;
70 break;
71 }
72 }
73 final String appName = appDescriptor.getName();
74 final String subappName = subAppDescriptor != null ? subAppDescriptor.getName() : "";
75 addKey(keys, appName, subappName, ACTION_BAR, SECTIONS, sectionName, fieldOrGetterName);
76 addKey(keys, appName, subappName, ACTION_BAR, sectionName, fieldOrGetterName);
77 addKey(keys, appName, ACTION_BAR, SECTIONS, sectionName, fieldOrGetterName);
78 addKey(keys, appName, ACTION_BAR, sectionName, fieldOrGetterName);
79
80 } else {
81
82 String rawIdOrName = getIdOrNameForUnknownRoot(sectionDefinition, false);
83 String idOrName = keyify(rawIdOrName);
84 String noModuleName = getIdWithoutModuleName(rawIdOrName);
85
86 addKey(keys, idOrName, ACTION_BAR, SECTIONS, sectionDefinition.getName(), fieldOrGetterName);
87 addKey(keys, idOrName, ACTION_BAR, sectionDefinition.getName(), fieldOrGetterName);
88 if (StringUtils.isNotEmpty(noModuleName)) {
89 addKey(keys, noModuleName, ACTION_BAR, SECTIONS, sectionDefinition.getName(), fieldOrGetterName);
90 addKey(keys, noModuleName, ACTION_BAR, sectionDefinition.getName(), fieldOrGetterName);
91 }
92 }
93 addKey(keys, ACTION_BAR, SECTIONS, sectionDefinition.getName(), fieldOrGetterName);
94 }
95 }