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.ConfiguredFieldDefinition;
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 oldOptionField.setI18n(oldDefinition.isI18n());
66
67 RadioButtonGroupFieldDefinition optionField = (RadioButtonGroupFieldDefinition) DefinitionConverter.FIELD.convert(oldOptionField);
68 newDefinition.setField(optionField);
69
70 List<FormDefinition<Option>> formList = new ArrayList<>();
71 ConfiguredFormDefinition form;
72 for (ConfiguredFieldDefinition fieldDefinition : oldDefinition.getFields()) {
73 fieldDefinition.setI18n(oldDefinition.isI18n());
74 form = new ConfiguredFormDefinition();
75 form.setName(fieldDefinition.getName());
76 form.setProperties(Collections.singletonList(DefinitionConverter.FIELD.convert(fieldDefinition)));
77 formList.add(form);
78 }
79 newDefinition.setForms(formList);
80 convertTransformerStrategy(oldDefinition, newDefinition);
81 return newDefinition;
82 }
83
84 @Override
85 ConfiguredSwitchableFieldDefinition<Option> createNewDefinition(SwitchableFieldDefinition oldDefinition) {
86 return new ConfiguredSwitchableFieldDefinition<>();
87 }
88
89 private void convertTransformerStrategy(info.magnolia.ui.form.field.definition.SwitchableFieldDefinition oldDefinition, ConfiguredSwitchableFieldDefinition newDefinition) {
90 if (oldDefinition.getTransformerClass().equals(SwitchableTransformer.class)) {
91 newDefinition.setItemProvider(new CurrentItemProviderDefinition());
92 newDefinition.setPropertyNameDecorator(PrefixNameDecorator.class);
93 }
94 if (oldDefinition.getTransformerClass().equals(DelegatingCompositeFieldTransformer.class)) {
95 newDefinition.setItemProvider(new CurrentItemProviderDefinition());
96 }
97 }
98
99 @Override
100 protected boolean supportsTransformerClass(Class transformerClass) {
101 return transformerClass.equals(SwitchableTransformer.class) ||
102 transformerClass.equals(DelegatingCompositeFieldTransformer.class) ||
103 transformerClass.getName().equals("info.magnolia.personalization.cookie.CookieFieldTransformer");
104 }
105 }