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.module.InstallContext;
37 import info.magnolia.repository.RepositoryConstants;
38
39 import java.io.InputStream;
40 import java.math.BigDecimal;
41 import java.util.Calendar;
42
43 import javax.jcr.Binary;
44 import javax.jcr.Node;
45 import javax.jcr.RepositoryException;
46 import javax.jcr.Session;
47 import javax.jcr.Value;
48
49
50
51
52 public class NewPropertyTask extends PropertyValuesTask {
53 private final String workspaceName;
54 private final String nodePath;
55 private final String propertyName;
56 private final Object value;
57
58 public NewPropertyTask(String name, String nodePath, String propertyName, Object value) {
59 this(name, String.format("Create property '%s:%s' with value '%s'.", RepositoryConstants.CONFIG, nodePath + "/" + propertyName, value),
60 RepositoryConstants.CONFIG, nodePath, propertyName, value);
61 }
62
63 public NewPropertyTask(String name, String description, String workspaceName, String nodePath, String propertyName, String value) {
64 this(name, description, workspaceName, nodePath, propertyName, (Object) value);
65 }
66
67 public NewPropertyTask(String name, String description, String workspaceName, String nodePath, String propertyName, Value value) {
68 this(name, description, workspaceName, nodePath, propertyName, (Object) value);
69 }
70
71 public NewPropertyTask(String name, String description, String workspaceName, String nodePath, String propertyName, Node value) {
72 this(name, description, workspaceName, nodePath, propertyName, (Object) value);
73 }
74
75 public NewPropertyTask(String name, String description, String workspaceName, String nodePath, String propertyName, Binary value) {
76 this(name, description, workspaceName, nodePath, propertyName, (Object) value);
77 }
78
79 public NewPropertyTask(String name, String description, String workspaceName, String nodePath, String propertyName, Calendar value) {
80 this(name, description, workspaceName, nodePath, propertyName, (Object) value);
81 }
82
83 public NewPropertyTask(String name, String description, String workspaceName, String nodePath, String propertyName, BigDecimal value) {
84 this(name, description, workspaceName, nodePath, propertyName, (Object) value);
85 }
86
87 public NewPropertyTask(String name, String description, String workspaceName, String nodePath, String propertyName, Long value) {
88 this(name, description, workspaceName, nodePath, propertyName, (Object) value);
89 }
90
91 public NewPropertyTask(String name, String description, String workspaceName, String nodePath, String propertyName, Double value) {
92 this(name, description, workspaceName, nodePath, propertyName, (Object) value);
93 }
94
95 public NewPropertyTask(String name, String description, String workspaceName, String nodePath, String propertyName, Boolean value) {
96 this(name, description, workspaceName, nodePath, propertyName, (Object) value);
97 }
98
99 public NewPropertyTask(String name, String description, String workspaceName, String nodePath, String propertyName, InputStream value) {
100 this(name, description, workspaceName, nodePath, propertyName, (Object) value);
101 }
102
103 private NewPropertyTask(String name, String description, String workspaceName, String nodePath, String propertyName, Object value) {
104 super(name, description);
105 this.workspaceName = workspaceName;
106 this.nodePath = nodePath;
107 this.propertyName = propertyName;
108 this.value = value;
109 }
110
111 @Override
112 public void execute(InstallContext ctx) {
113 try {
114 final Session session = ctx.getJCRSession(workspaceName);
115 final Node node = session.getNode(nodePath);
116
117 newProperty(ctx, node, propertyName, value);
118 } catch (RepositoryException e) {
119 ctx.error(format("Could not create property {0} at {1}, please create it with value {2}.", propertyName, nodePath, value), e);
120 }
121 }
122 }