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.admininterface;
35
36 import java.util.ArrayList;
37
38 import info.magnolia.cms.beans.runtime.MultipartForm;
39 import info.magnolia.cms.core.Content;
40 import info.magnolia.cms.core.NodeData;
41 import info.magnolia.cms.security.AccessDeniedException;
42 import info.magnolia.cms.util.NodeDataUtil;
43
44 import javax.jcr.PathNotFoundException;
45 import javax.jcr.RepositoryException;
46 import javax.jcr.Value;
47
48 import org.apache.commons.lang.StringUtils;
49
50
51
52
53
54
55 public class MultiValueSaveHandler extends SaveHandlerImpl implements FieldSaveHandler {
56
57 @Override
58 protected void processMultiple(Content node, String name, int type, String[] values) throws RepositoryException,
59 PathNotFoundException, AccessDeniedException {
60
61 ArrayList<Value> l = new ArrayList<Value>();
62
63 if (values != null && values.length != 0) {
64
65 for (int j = 0; j < values.length; j++) {
66 String valueStr = values[j];
67 if (StringUtils.isNotEmpty(valueStr)) {
68 Value value = getValue(valueStr, type);
69 if (value != null) {
70 l.add(value);
71 }
72 }
73 }
74 if(l.size() > 0) {
75 NodeDataUtil.getOrCreateAndSet(node, name, (Value[])l.toArray(new Value[l.size()]));
76 }
77 } else {
78 if(node.hasNodeData(name)) {
79 node.deleteNodeData(name);
80 }
81 }
82 }
83
84 public void save(Content parentNode, Content configNode, String name,
85 MultipartForm form, int type, int valueType, int isRichEditValue,
86 int encoding) throws RepositoryException, AccessDeniedException {
87 processMultiple(parentNode, name, type, form.getParameterValues(name));
88
89 }
90 }