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.nodebuilder;
35
36 import info.magnolia.cms.beans.runtime.FileProperties;
37 import info.magnolia.cms.core.Content;
38 import info.magnolia.cms.core.ItemType;
39 import info.magnolia.cms.core.NodeData;
40
41 import java.io.InputStream;
42
43 import javax.jcr.RepositoryException;
44
45 import org.apache.commons.lang.StringUtils;
46
47
48
49
50
51 public class ContentOps {
52
53 public static NodeOperation createContent(String name, ItemType type) {
54 return Ops.addNode(name, type);
55 }
56
57 public static NodeOperation createPage(String name, String template) {
58 return createContent(name, ItemType.CONTENT).then(
59 setTemplate(template));
60 }
61
62 public static NodeOperation createCollectionNode(String name) {
63 return createContent(name, ItemType.CONTENTNODE);
64 }
65
66 public static NodeOperation createParagraph(String name, String template) {
67 return createContent(name, ItemType.CONTENTNODE).then(
68 setTemplate(template));
69 }
70
71 public static NodeOperation setNodeData(final String name, final Object value) {
72 return new AbstractNodeOperation() {
73
74 @Override
75 protected Content doExec(Content context, ErrorHandler errorHandler) throws RepositoryException {
76 context.setNodeData(name, value);
77 return context;
78 }
79 };
80 }
81
82 public static NodeOperation setBinaryNodeData(final String name, final String fileName, final long size, final InputStream inputStream) {
83 return new AbstractNodeOperation() {
84
85 @Override
86 protected Content doExec(Content context, ErrorHandler errorHandler) throws RepositoryException {
87 NodeData binary = context.setNodeData(name, inputStream);
88 binary.setAttribute(FileProperties.PROPERTY_FILENAME, StringUtils.substringBeforeLast(fileName, "."));
89 binary.setAttribute(FileProperties.PROPERTY_EXTENSION, StringUtils.substringAfterLast(fileName, "."));
90 binary.setAttribute(FileProperties.PROPERTY_SIZE, Long.toString(size));
91 return context;
92 }
93 };
94 }
95
96 public static NodeOperation setTemplate(final String template) {
97 return new AbstractNodeOperation() {
98
99 @Override
100 protected Content doExec(Content context, ErrorHandler errorHandler) throws RepositoryException {
101 context.getMetaData().setTemplate(template);
102 return context;
103 }
104 };
105 }
106
107 }