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.rendering.template.i18n;
35
36 import info.magnolia.i18nsystem.AbstractI18nKeyGenerator;
37 import info.magnolia.rendering.template.AreaDefinition;
38 import info.magnolia.rendering.template.RenderableDefinition;
39
40 import java.lang.reflect.AnnotatedElement;
41 import java.util.Arrays;
42 import java.util.List;
43
44
45
46
47 public class RenderableDefinitionKeyGenerator extends AbstractI18nKeyGenerator<RenderableDefinition> {
48
49 private static final String TEMPLATES = "templates";
50 private static final String AREAS = "areas";
51 private static final String COMPONENTS = "components";
52
53 @Override
54 protected void keysFor(List<String> keys, RenderableDefinition definition, AnnotatedElement el) {
55 final String suffix = fieldOrGetterName(el);
56 if (definition.getId() == null) {
57 addKey(keys, TEMPLATES, getType(definition), definition.getName(), suffix);
58 } else {
59 addKey(keys, getModuleName(definition.getId()), TEMPLATES, getIdWithoutModuleName(definition.getId()), suffix);
60 addKey(keys, TEMPLATES, getIdWithoutModuleName(definition.getId()), suffix);
61 }
62 }
63
64
65
66
67 @Override
68 protected void addKey(List<String> keys, String... parts) {
69 if ("title".equals(parts[parts.length - 1])) {
70 super.addKey(keys, Arrays.copyOf(parts, parts.length - 1));
71 } else {
72 super.addKey(keys, parts);
73 }
74 }
75
76 protected String getType(RenderableDefinition definition) {
77 return definition instanceof AreaDefinition ? AREAS : COMPONENTS;
78 }
79 }