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.observation.setup;
35
36 import info.magnolia.module.DefaultModuleVersionHandler;
37 import info.magnolia.module.InstallContext;
38 import info.magnolia.module.delta.ArrayDelegateTask;
39 import info.magnolia.module.delta.BootstrapConditionally;
40 import info.magnolia.module.delta.BootstrapSingleResource;
41 import info.magnolia.module.delta.CheckAndModifyPropertyValueTask;
42 import info.magnolia.module.delta.CreateNodePathTask;
43 import info.magnolia.module.delta.DeltaBuilder;
44 import info.magnolia.module.delta.NewPropertyTask;
45 import info.magnolia.module.delta.NodeExistsDelegateTask;
46 import info.magnolia.module.delta.PartialBootstrapTask;
47 import info.magnolia.module.delta.RemovePropertyTask;
48 import info.magnolia.module.delta.Task;
49 import info.magnolia.repository.RepositoryConstants;
50
51 import java.util.ArrayList;
52 import java.util.List;
53
54
55
56
57 public class ObservationModuleVersionHandler extends DefaultModuleVersionHandler {
58
59 public ObservationModuleVersionHandler() {
60 register(DeltaBuilder.update("2.0", "")
61 .addTask(new CheckAndModifyPropertyValueTask("Replace activation command", "Replaces old activation command with the new one provided by the activation module.", RepositoryConstants.CONFIG,
62 "/modules/observation/config/listenerConfigurations/activateAddedPages/listener/command", "class", "info.magnolia.module.admininterface.commands.ActivationCommand", "info.magnolia.module.activation.commands.ActivationCommand"))
63 .addTask(new CheckAndModifyPropertyValueTask("Replace node type", "Replaces the node type to be used for added pages activation from mgnl:content to mgnl:page.", RepositoryConstants.CONFIG,
64 "/modules/observation/config/listenerConfigurations/activateAddedPages/listener", "nodeType", "mgnl:content", "mgnl:page")));
65
66 register(DeltaBuilder.update("2.0.1", "")
67 .addTask(new ArrayDelegateTask("Move repository property", "Moves repository property for activateAddedPages configuration to command params.",
68 new RemovePropertyTask("", "", RepositoryConstants.CONFIG, "/modules/observation/config/listenerConfigurations/activateAddedPages/listener/command", "repository"),
69 new NodeExistsDelegateTask("", "", RepositoryConstants.CONFIG, "/modules/observation/config/listenerConfigurations/activateAddedPages/listener/params", null,
70 new CreateNodePathTask("", "", RepositoryConstants.CONFIG, "/modules/observation/config/listenerConfigurations/activateAddedPages/listener/params")),
71 new NewPropertyTask("", "", RepositoryConstants.CONFIG, "/modules/observation/config/listenerConfigurations/activateAddedPages/listener/params", "repository", "website"))));
72 register(DeltaBuilder.update("2.0.2", "")
73 .addTask(new BootstrapSingleResource("foo", "bar", "/mgnl-bootstrap/observation/setup/mail/config.modules.mail.config.templatesConfiguration.pageChangeNotification.xml"))
74 .addTask(new UpdateSendMailOnPagesNotificationTask()));
75 }
76
77 @Override
78 protected List<Task> getExtraInstallTasks(InstallContext installContext) {
79 final List<Task> tasks = new ArrayList<Task>();
80 tasks.add(new BootstrapConditionally("Observation listeners", "Installs observation listeners by keeping already existing ones, possibly provided by other modules.", "/mgnl-bootstrap/listenerConfigs/config.modules.observation.config.xml",
81 new ArrayDelegateTask("",
82 new PartialBootstrapTask("", "", "/mgnl-bootstrap/listenerConfigs/config.modules.observation.config.xml", "/config/listenerConfigurations/sendMailOnPageChanges"),
83 new PartialBootstrapTask("", "", "/mgnl-bootstrap/listenerConfigs/config.modules.observation.config.xml", "/config/listenerConfigurations/activateAddedPages"))));
84 return tasks;
85 }
86 }