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
35
36
37
38
39
40
41
42
43
44
45
46 /**
47 * Interface for a file uploaded from a HTML form
48 */
49
50 package org.paneris.jammyjoes.servlet;
51
52 import java.io.File;
53
54 import org.melati.servlet.BaseFileDataAdaptor;
55 import org.melati.util.FileUtils;
56 import org.melati.util.UTF8URLEncoder;
57
58 /**
59 * The default way to save an uploaded file to disk - we tell
60 * it what directory to save it in and the base URL to that
61 * directory
62 *
63 */
64
65 public class JammyjoesFileDataAdaptor extends BaseFileDataAdaptor {
66
67 private String fieldName;
68
69 protected String uploadDir = null;
70 protected String uploadURL = null;
71 protected boolean makeUnique = true;
72
73 /**
74 * Constructor
75 *
76 * @param uploadDir The directory to save this file in
77 * @param uploadURL A URL pointing to this directory (null if there
78 * isn't an appropriate URL)
79 */
80
81 public JammyjoesFileDataAdaptor(String uploadDir, String uploadURL, String field) {
82 this.uploadDir = uploadDir;
83 this.uploadURL = uploadURL;
84 fieldName = field;
85 }
86
87 /**
88 * Constructor
89 *
90 * @param uploadDir The directory to save this file in
91 * @param uploadURL A URL pointing to this directory (null if there
92 * isn't an appropriate URL)
93 * @param makeUnique Whether we should make sure the new file has a unique
94 * name within the <code>uploadDir</code> directory
95 */
96
97 public JammyjoesFileDataAdaptor(String uploadDir, String uploadURL,
98 boolean makeUnique, String field) {
99 this.uploadDir = uploadDir;
100 this.uploadURL = uploadURL;
101 this.makeUnique = makeUnique;
102 fieldName = field;
103 }
104
105 protected File calculateLocalFile() {
106 File f = new File(uploadDir + bigOrSmall(),
107 UTF8URLEncoder.encode(field.getUploadedFileName()));
108 return makeUnique ? FileUtils.withUniqueName(f) : f;
109 }
110
111 protected String calculateURL() {
112 return uploadURL + bigOrSmall() + file.getName();
113 }
114
115 private String bigOrSmall() {
116 String bit = "small";
117 if (fieldName.equals("picture2")) bit = "big";
118 return "/" + bit + "/";
119 }
120
121 }