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.CurrentItemProviderDefinition;
37 import info.magnolia.ui.field.CompositeFieldDefinition;
38 import info.magnolia.ui.field.PrefixNameDecorator;
39 import info.magnolia.ui.form.definition.DefinitionConverter;
40 import info.magnolia.ui.form.field.transformer.composite.CompositeTransformer;
41 import info.magnolia.ui.form.field.transformer.composite.DelegatingCompositeFieldTransformer;
42
43 import java.util.stream.Collectors;
44
45
46
47
48 public class CompositeFieldDefinitionConverter extends AbstractComplexFieldDefinitionConverter<Object, CompositeFieldDefinition<Object>, info.magnolia.ui.form.field.definition.CompositeFieldDefinition> {
49
50 public CompositeFieldDefinition<Object> convert(info.magnolia.ui.form.field.definition.CompositeFieldDefinition oldDefinition) {
51 CompositeFieldDefinition<Object> newDefinition = super.convert(oldDefinition);
52
53 newDefinition.setProperties(oldDefinition.getFields().stream()
54 .map(fieldDefinition -> DefinitionConverter.FIELD.convert(fieldDefinition))
55 .collect(Collectors.toList()));
56 convertTransformerStrategy(oldDefinition, newDefinition);
57 return newDefinition;
58 }
59
60 @Override
61 CompositeFieldDefinition<Object> createNewDefinition(info.magnolia.ui.form.field.definition.CompositeFieldDefinition oldDefinition) {
62 return new CompositeFieldDefinition<>();
63 }
64
65 private void convertTransformerStrategy(info.magnolia.ui.form.field.definition.CompositeFieldDefinition oldDefinition, CompositeFieldDefinition newDefinition) {
66 if (oldDefinition.getTransformerClass().equals(CompositeTransformer.class)) {
67 newDefinition.setItemProvider(new CurrentItemProviderDefinition());
68 newDefinition.setPropertyNameDecorator(PrefixNameDecorator.class);
69 } else if (oldDefinition.getTransformerClass().equals(DelegatingCompositeFieldTransformer.class)) {
70 newDefinition.setItemProvider(new CurrentItemProviderDefinition());
71 }
72 }
73
74 @Override
75 protected boolean supportsTransformerClass(Class transformerClass) {
76 if (transformerClass.equals(CompositeTransformer.class) ||
77 transformerClass.equals(DelegatingCompositeFieldTransformer.class)) {
78 return true;
79 }
80 return false;
81 }
82 }