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.form.field.definition.migration;
35
36 import info.magnolia.ui.editor.ItemProviderDefinition;
37 import info.magnolia.ui.editor.JcrChildNodeProviderDefinition;
38 import info.magnolia.ui.field.ConfiguredComplexPropertyDefinition;
39
40 import org.slf4j.Logger;
41 import org.slf4j.LoggerFactory;
42
43
44
45
46
47
48
49
50 abstract public class AbstractComplexFieldDefinitionConverter<T, NEW extends ConfiguredComplexPropertyDefinition<T>, OLD extends info.magnolia.ui.form.field.definition.FieldDefinition> implements FieldDefinitionConverter<T, NEW, OLD> {
51
52 private final Logger log = LoggerFactory.getLogger(AbstractComplexFieldDefinitionConverter.class);
53
54 @Override
55 public NEW convert(OLD oldDefinition) {
56 NEW newDefinition = createNewDefinition(oldDefinition);
57 newDefinition.setDescription(oldDefinition.getDescription());
58 newDefinition.setI18n(oldDefinition.isI18n());
59 newDefinition.setItemProvider((ItemProviderDefinition<T, T>) new JcrChildNodeProviderDefinition());
60 newDefinition.setLabel(oldDefinition.getLabel());
61 newDefinition.setName(oldDefinition.getName());
62 newDefinition.setStyleName(oldDefinition.getStyleName());
63 return newDefinition;
64 }
65
66 abstract NEW createNewDefinition(OLD oldDefinition);
67
68 @Override
69 public boolean supports(OLD oldDefinition) {
70 if (oldDefinition.getTransformerClass() != null && !supportsTransformerClass(oldDefinition.getTransformerClass())) {
71 log.error("Unsupported transformer class for field definition: " + oldDefinition.getName() + ": " + oldDefinition.getTransformerClass().getName());
72 return false;
73 }
74 if (oldDefinition.getConverterClass() != null) {
75 log.error("Unsupported converter class for field definition: " + oldDefinition.getName() + ": " + oldDefinition.getConverterClass().getName());
76 return false;
77 }
78 return true;
79 }
80
81 protected boolean supportsTransformerClass(Class transformerClass) {
82 return false;
83 }
84
85 }