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.module.templating.setup.for4_0;
35
36 import info.magnolia.cms.core.Content;
37 import info.magnolia.cms.core.HierarchyManager;
38 import info.magnolia.cms.util.ContentUtil;
39 import info.magnolia.module.InstallContext;
40 import info.magnolia.module.delta.AllModulesNodeOperation;
41 import info.magnolia.module.delta.TaskExecutionException;
42
43 import javax.jcr.RepositoryException;
44 import javax.jcr.Value;
45
46
47
48
49
50 public class RenamePropertyAllModulesNodeTask extends AllModulesNodeOperation {
51 private final String srcPropertyName;
52 private final String destPropertyName;
53 private final String baseNodeName;
54
55 public RenamePropertyAllModulesNodeTask(String name, String description, String baseNodeName, String srcPropertyName, String destPropertyName) {
56 super(name, description);
57 this.baseNodeName = baseNodeName;
58 this.srcPropertyName = srcPropertyName;
59 this.destPropertyName = destPropertyName;
60 }
61
62 protected void operateOnModuleNode(Content node, HierarchyManager hm, InstallContext ctx) throws RepositoryException, TaskExecutionException {
63 try {
64 if (node.hasContent(baseNodeName)) {
65 ContentUtil.visit(node.getContent(baseNodeName), new ContentUtil.Visitor() {
66 public void visit(Content subNode) throws Exception {
67 if (subNode.hasNodeData(srcPropertyName)) {
68 final Value value = subNode.getNodeData(srcPropertyName).getValue();
69 subNode.deleteNodeData(srcPropertyName);
70 subNode.setNodeData(destPropertyName, value);
71 }
72 }
73 });
74 }
75 } catch (RepositoryException e) {
76 throw e;
77 } catch (Exception e) {
78
79 throw new TaskExecutionException(e.getMessage(), e);
80 }
81 }
82 }
83