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.framework.setup;
35
36 import info.magnolia.jcr.util.NodeUtil;
37 import info.magnolia.module.InstallContext;
38 import info.magnolia.module.delta.QueryTask;
39 import info.magnolia.ui.form.field.transformer.multi.MultiValueJSONTransformer;
40 import info.magnolia.ui.form.field.transformer.multi.MultiValueSubChildrenNodeTransformer;
41
42 import javax.jcr.Node;
43 import javax.jcr.RepositoryException;
44
45 import org.apache.commons.lang3.StringUtils;
46 import org.slf4j.Logger;
47 import org.slf4j.LoggerFactory;
48
49
50
51
52
53 public class ReplaceSaveModeTypeFieldDefinitionTask extends QueryTask {
54
55 private static final Logger log = LoggerFactory.getLogger(ReplaceSaveModeTypeFieldDefinitionTask.class);
56
57 public ReplaceSaveModeTypeFieldDefinitionTask(String name, String description, String repositoryName, String query) {
58 super(name, description, repositoryName, query);
59 }
60
61 @Override
62 protected void operateOnNode(InstallContext installContext, Node node) {
63 String nodePath = NodeUtil.getPathIfPossible(node);
64 try {
65 if (StringUtils.contains(nodePath, "fields")) {
66 if (node.hasProperty("multiValueHandlerClass")) {
67 String multiValueHandlerClass = node.getProperty("multiValueHandlerClass").getString();
68 if (StringUtils.equals("info.magnolia.ui.form.field.property.MultiValuesHandler", multiValueHandlerClass)) {
69
70 node.remove();
71 log.debug("The following node will be removed {}. The field definition already contain the definition of the default transformerClass", nodePath);
72 } else if (StringUtils.equals("info.magnolia.ui.form.field.property.SubNodesValueHandler", multiValueHandlerClass)) {
73 Node parent = node.getParent();
74 parent.setProperty("transformerClass", MultiValueSubChildrenNodeTransformer.class.getName());
75 node.remove();
76
77 } else if (StringUtils.equals("info.magnolia.ui.form.field.property.CommaSeparatedValueHandler", multiValueHandlerClass)) {
78 Node parent = node.getParent();
79 parent.setProperty("transformerClass", MultiValueJSONTransformer.class.getName());
80 node.remove();
81 } else {
82 log.warn("Unknown value for property 'multiValueHandlerClass' : {}. This node {} will not be handled", multiValueHandlerClass, nodePath);
83 }
84 }
85 } else {
86 log.debug("The following node {} is not a field configuration. The child 'saveModeType' will not be handled. ", nodePath);
87 }
88 } catch (RepositoryException re) {
89 log.warn("Could not Migrate 'saveModeType' child node of the following node {}.", nodePath);
90 }
91 }
92
93 }