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.ui.form.field.upload;
35
36 import info.magnolia.cms.util.PathUtil;
37 import info.magnolia.i18nsystem.SimpleTranslator;
38
39 import java.io.File;
40 import java.io.OutputStream;
41 import java.text.Normalizer;
42
43 import javax.inject.Inject;
44
45 import org.apache.commons.lang3.NotImplementedException;
46 import org.apache.commons.lang3.StringUtils;
47 import org.vaadin.easyuploads.FileBuffer;
48 import org.vaadin.easyuploads.FileFactory;
49 import org.vaadin.easyuploads.UploadField.FieldType;
50
51
52
53
54
55
56 public class UploadReceiver extends FileBuffer {
57
58 private static final long serialVersionUID = 1L;
59 private File directory;
60 private final SimpleTranslator i18n;
61 public static final String INVALID_FILE_NAME = "untitled";
62 private String fileName;
63
64 @Inject
65 public UploadReceiver(File directory, SimpleTranslator i18n) {
66 this.directory = directory;
67 this.i18n = i18n;
68 setFieldType(FieldType.FILE);
69 setDeleteFiles(true);
70 }
71
72 @Override
73 public OutputStream receiveUpload(String filename, String MIMEType) {
74
75
76
77 filename = Normalizer.normalize(filename, Normalizer.Form.NFC);
78 setFileName(filename);
79 return super.receiveUpload(fileName, MIMEType);
80 }
81
82 @Override
83 public FileFactory getFileFactory() {
84 return new DefaultFileFactory(directory, i18n);
85 }
86
87 public String getFileName() {
88 if (StringUtils.isBlank(this.fileName)) {
89 return INVALID_FILE_NAME;
90 }
91 return this.fileName;
92 }
93
94 public long getFileSize() {
95 return this.getFile() != null ? this.getLastFileSize() : 0l;
96 }
97
98 public String getMimeType() {
99 return this.getLastMimeType();
100 }
101
102 public String getExtension() {
103 return PathUtil.getExtension(getFileName());
104 }
105
106 public void setFileName(String fileName) {
107 this.fileName = fileName;
108 }
109
110 @Override
111 public void setLastMimeType(String s) {
112 throw new NotImplementedException("rico");
113 }
114
115 @Override
116 public void setLastFileName(String s) {
117 throw new NotImplementedException("rico");
118 }
119 }