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.datasource.optionlist.Option;
37 import info.magnolia.ui.editor.ConfiguredFormDefinition;
38 import info.magnolia.ui.editor.CurrentItemProviderDefinition;
39 import info.magnolia.ui.editor.FormDefinition;
40 import info.magnolia.ui.field.ConfiguredSwitchableFieldDefinition;
41 import info.magnolia.ui.field.PrefixNameDecorator;
42 import info.magnolia.ui.field.RadioButtonGroupFieldDefinition;
43 import info.magnolia.ui.form.definition.DefinitionConverter;
44 import info.magnolia.ui.form.field.definition.FieldDefinition;
45 import info.magnolia.ui.form.field.definition.OptionGroupFieldDefinition;
46 import info.magnolia.ui.form.field.definition.SwitchableFieldDefinition;
47 import info.magnolia.ui.form.field.transformer.composite.DelegatingCompositeFieldTransformer;
48 import info.magnolia.ui.form.field.transformer.composite.SwitchableTransformer;
49
50 import java.util.ArrayList;
51 import java.util.Collections;
52 import java.util.List;
53
54
55
56
57 public class SwitchableFieldDefinitionConverter extends AbstractComplexFieldDefinitionConverter<Option, ConfiguredSwitchableFieldDefinition<Option>, SwitchableFieldDefinition> {
58
59 public ConfiguredSwitchableFieldDefinition<Option> convert(SwitchableFieldDefinition oldDefinition) {
60 ConfiguredSwitchableFieldDefinition<Option> newDefinition = super.convert(oldDefinition);
61
62 OptionGroupFieldDefinitionoupFieldDefinition.html#OptionGroupFieldDefinition">OptionGroupFieldDefinition oldOptionField = new OptionGroupFieldDefinition();
63 oldOptionField.setName(oldDefinition.getName());
64 oldOptionField.setOptions(oldDefinition.getOptions());
65
66 RadioButtonGroupFieldDefinition optionField = (RadioButtonGroupFieldDefinition) DefinitionConverter.FIELD.convert(oldOptionField);
67 newDefinition.setField(optionField);
68
69 List<FormDefinition<Option>> formList = new ArrayList<>();
70 ConfiguredFormDefinition form;
71 for (FieldDefinition fieldDefinition : oldDefinition.getFields()) {
72 form = new ConfiguredFormDefinition();
73 form.setName(fieldDefinition.getName());
74 form.setProperties(Collections.singletonList(DefinitionConverter.FIELD.convert(fieldDefinition)));
75 formList.add(form);
76 }
77 newDefinition.setForms(formList);
78 convertTransformerStrategy(oldDefinition, newDefinition);
79 return newDefinition;
80 }
81
82 @Override
83 ConfiguredSwitchableFieldDefinition<Option> createNewDefinition(SwitchableFieldDefinition oldDefinition) {
84 return new ConfiguredSwitchableFieldDefinition<>();
85 }
86
87 private void convertTransformerStrategy(info.magnolia.ui.form.field.definition.SwitchableFieldDefinition oldDefinition, ConfiguredSwitchableFieldDefinition newDefinition) {
88 if (oldDefinition.getTransformerClass().equals(SwitchableTransformer.class)) {
89 newDefinition.setItemProvider(new CurrentItemProviderDefinition());
90 newDefinition.setPropertyNameDecorator(PrefixNameDecorator.class);
91 }
92 if (oldDefinition.getTransformerClass().equals(DelegatingCompositeFieldTransformer.class)) {
93 newDefinition.setItemProvider(new CurrentItemProviderDefinition());
94 }
95 }
96
97 @Override
98 protected boolean supportsTransformerClass(Class transformerClass) {
99 return transformerClass.equals(SwitchableTransformer.class) ||
100 transformerClass.equals(DelegatingCompositeFieldTransformer.class) ||
101 transformerClass.getName().equals("info.magnolia.personalization.cookie.CookieFieldTransformer");
102 }
103 }