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.setup.for5_0;
35
36 import info.magnolia.importexport.postprocessors.MetaDataAsMixinConversionHelper;
37 import info.magnolia.jcr.util.NodeTypes;
38 import info.magnolia.module.InstallContext;
39 import info.magnolia.module.delta.AbstractRepositoryTask;
40 import info.magnolia.module.delta.TaskExecutionException;
41 import info.magnolia.objectfactory.Components;
42 import info.magnolia.repository.RepositoryManager;
43
44 import java.util.Collection;
45
46 import javax.jcr.Node;
47 import javax.jcr.NodeIterator;
48 import javax.jcr.RepositoryException;
49 import javax.jcr.Session;
50
51 import org.slf4j.Logger;
52 import org.slf4j.LoggerFactory;
53
54
55
56
57
58
59 public class ConvertMetaDataUpdateTask extends AbstractRepositoryTask {
60
61 private final Logger log = LoggerFactory.getLogger(ConvertMetaDataUpdateTask.class);
62
63 public ConvertMetaDataUpdateTask(String taskName, String taskDescription) {
64 super(taskName, taskDescription);
65 }
66
67 @Override
68 protected void doExecute(InstallContext installContext) throws RepositoryException, TaskExecutionException {
69
70 RepositoryManager repositoryManager = Components.getComponent(RepositoryManager.class);
71
72 Collection<String> workspaceNames = repositoryManager.getWorkspaceNames();
73 for (String workspaceName : workspaceNames) {
74 Session session = installContext.getJCRSession(workspaceName);
75
76 MetaDataAsMixinConversionHelper conversionHelper = new MetaDataAsMixinConversionHelper();
77 conversionHelper.setDeleteMetaDataIfEmptied(true);
78 conversionHelper.setPeriodicSaves(true);
79
80 NodeIterator childRootNodes = session.getRootNode().getNodes();
81 while (childRootNodes.hasNext()) {
82 Node child = childRootNodes.nextNode();
83 if (!child.getName().startsWith(NodeTypes.JCR_PREFIX) && !child.getName().startsWith(NodeTypes.REP_PREFIX)) {
84 conversionHelper.convertNodeAndChildren(child);
85 } else {
86 log.debug("Node '{}' are not handled by this task", child.getName());
87 }
88 }
89 log.debug("Converted MetaData in workspace [{0}]", workspaceName);
90 }
91 }
92 }