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.delta;
35
36 import info.magnolia.jcr.predicate.NodeTypePredicate;
37 import info.magnolia.jcr.util.NodeUtil;
38 import info.magnolia.module.InstallContext;
39
40 import java.util.Iterator;
41
42 import javax.jcr.Node;
43 import javax.jcr.RepositoryException;
44 import javax.jcr.Session;
45
46
47
48
49
50
51 public class RenameNodesTask extends AbstractRepositoryTask {
52 private final String workspace;
53 private final String path;
54 private final String oldName;
55 private final String newName;
56 private final String nodeType;
57
58 public RenameNodesTask(String name, String description, String workspace, String path, String oldName,
59 String newName, String nodeType) {
60 super(name, description);
61 this.workspace = workspace;
62 this.path = path;
63 this.oldName = oldName;
64 this.newName = newName;
65 this.nodeType = nodeType;
66 }
67
68 @Override
69 protected void doExecute(InstallContext installContext) throws RepositoryException, TaskExecutionException {
70 final Session session = installContext.getJCRSession(workspace);
71 final Node rootOfOperation = session.getNode(path);
72 Iterator<Node> iterator = NodeUtil.collectAllChildren(rootOfOperation, new NodeTypePredicate(nodeType)).iterator();
73 while (iterator.hasNext()) {
74 Node childNode = iterator.next();
75 if (oldName.equals(childNode.getName())) {
76 NodeUtil.renameNode(childNode, newName);
77 }
78 }
79 }
80 }