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.util.PropertyUtil;
37 import info.magnolia.jcr.util.SessionUtil;
38 import info.magnolia.module.InstallContext;
39
40 import java.io.InputStream;
41 import java.math.BigDecimal;
42 import java.util.Calendar;
43
44 import javax.jcr.Binary;
45 import javax.jcr.Node;
46 import javax.jcr.Session;
47 import javax.jcr.Value;
48
49
50
51
52
53
54
55 public class SetPropertyTask extends PropertyValuesTask {
56
57 private final String workspaceName;
58
59 private final String nodePath;
60
61 private final String propertyName;
62
63 private final Object newValue;
64
65 public SetPropertyTask(String workspaceName, String nodePath, String propertyName, String newValue) {
66 this("Set " + nodePath + "/" + propertyName, workspaceName, nodePath, propertyName, newValue);
67 }
68
69 public SetPropertyTask(String taskName, String workspaceName, String nodePath, String propertyName, String newValue) {
70 this(taskName, workspaceName, nodePath, propertyName, (Object) newValue);
71 }
72
73 public SetPropertyTask(String taskName, String workspaceName, String nodePath, String propertyName, Value newValue) {
74 this(taskName, workspaceName, nodePath, propertyName, (Object) newValue);
75 }
76
77 public SetPropertyTask(String taskName, String workspaceName, String nodePath, String propertyName, Node newValue) {
78 this(taskName, workspaceName, nodePath, propertyName, (Object) newValue);
79 }
80
81 public SetPropertyTask(String taskName, String workspaceName, String nodePath, String propertyName, Binary newValue) {
82 this(taskName, workspaceName, nodePath, propertyName, (Object) newValue);
83 }
84
85 public SetPropertyTask(String taskName, String workspaceName, String nodePath, String propertyName, Calendar newValue) {
86 this(taskName, workspaceName, nodePath, propertyName, (Object) newValue);
87 }
88
89 public SetPropertyTask(String taskName, String workspaceName, String nodePath, String propertyName, BigDecimal newValue) {
90 this(taskName, workspaceName, nodePath, propertyName, (Object) newValue);
91 }
92
93 public SetPropertyTask(String taskName, String workspaceName, String nodePath, String propertyName, Long newValue) {
94 this(taskName, workspaceName, nodePath, propertyName, (Object) newValue);
95 }
96
97 public SetPropertyTask(String taskName, String workspaceName, String nodePath, String propertyName, Double newValue) {
98 this(taskName, workspaceName, nodePath, propertyName, (Object) newValue);
99 }
100
101 public SetPropertyTask(String taskName, String workspaceName, String nodePath, String propertyName, Boolean newValue) {
102 this(taskName, workspaceName, nodePath, propertyName, (Object) newValue);
103 }
104
105 public SetPropertyTask(String taskName, String workspaceName, String nodePath, String propertyName, InputStream newValue) {
106 this(taskName, workspaceName, nodePath, propertyName, (Object) newValue);
107 }
108
109 private SetPropertyTask(String taskName, String workspaceName, String nodePath, String propertyName, Object newValue) {
110 super(taskName, "Sets " + nodePath + "/" + propertyName + " to " + newValue + ".");
111 this.workspaceName = workspaceName;
112 this.nodePath = nodePath;
113 this.propertyName = propertyName;
114 this.newValue = newValue;
115 }
116
117
118
119
120 @Override
121 public void execute(InstallContext installContext) {
122 try {
123 final Session session = installContext.getJCRSession(workspaceName);
124 final Node node = SessionUtil.getNode(session, nodePath);
125
126 PropertyUtil.setProperty(node, propertyName, this.newValue);
127 } catch (Throwable t) {
128 final String msg = format("Unable to set property \"{0}\" to value \"{1}\" on node \"{2}\".", propertyName, newValue, nodePath);
129 installContext.error(msg, t);
130 }
131 }
132 }