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.cms.beans.runtime;
35
36 import info.magnolia.cms.core.NodeData;
37 import info.magnolia.cms.util.ContentUtil;
38 import info.magnolia.context.MgnlContext;
39
40 import org.apache.commons.lang3.math.NumberUtils;
41
42 import javax.jcr.Node;
43 import javax.jcr.RepositoryException;
44 import java.io.InputStream;
45
46
47
48
49
50 public class File {
51
52 private Node node;
53
54 private String extension;
55
56 private String fileName;
57
58 private String contentType;
59
60 private int size;
61
62
63
64
65 public File(NodeData data) {
66 initFile(data);
67 }
68
69 public File(Node node) {
70 this.node = node;
71
72 try{
73 if(node.hasProperty("extension")){
74 setExtension(node.getProperty("extension").getString());
75 }
76 if(node.hasProperty("fileName")){
77 setFileName(node.getProperty("fileName").getString());
78 }
79 if(node.hasProperty("contentType")){
80 setContentType(node.getProperty("contentType").getString());
81 }
82
83 if(node.hasProperty("size")){
84 String sizeString = node.getProperty("size").getString();
85 if (NumberUtils.isNumber(sizeString)) {
86 setSize(Integer.parseInt(sizeString));
87 }
88 }
89 }catch(RepositoryException e){
90 throw new RuntimeException(e);
91 }
92
93 }
94
95
96
97
98
99 private File initFile(NodeData nodedata){
100 try {
101 return new File(MgnlContext.getJCRSession(nodedata.getHierarchyManager().getWorkspace().getName()).getNode(nodedata.getHandle()));
102 } catch (RepositoryException e) {
103 throw new RuntimeException(e);
104 }
105 }
106
107 public String getExtension() {
108 return extension;
109 }
110
111 public void setExtension(String extension) {
112 this.extension = extension;
113 }
114
115 public String getFileName() {
116 return fileName;
117 }
118
119 public void setFileName(String fileName) {
120 this.fileName = fileName;
121 }
122
123 public String getContentType() {
124 return contentType;
125 }
126
127 public void setContentType(String contentType) {
128 this.contentType = contentType;
129 }
130
131
132
133
134 public String getNodeDataTemplate() {
135 throw new UnsupportedOperationException();
136 }
137
138
139
140
141 public void setNodeDataTemplate(String nodeDataTemplate) {
142 throw new UnsupportedOperationException();
143 }
144
145 public int getSize() {
146 return size;
147 }
148
149 public void setSize(int size) {
150 this.size = size;
151 }
152
153 public Node getNode() {
154 return node;
155 }
156
157
158
159
160 public NodeData getNodeData() {
161 try {
162 if(ContentUtil.asContent(node.getParent()).hasNodeData(node.getName())){
163 return ContentUtil.asContent(node.getParent()).getNodeData(node.getName());
164 }
165 } catch (RepositoryException e) {
166
167 }
168 return null;
169 }
170
171
172
173
174 public InputStream getStream() {
175 return getNodeData().getStream();
176 }
177 }