1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 package org.apache.myfaces.custom.fileupload;
20
21 import javax.faces.application.FacesMessage;
22 import javax.faces.component.html.HtmlInputText;
23 import javax.faces.context.FacesContext;
24
25 import org.apache.myfaces.component.AlignProperty;
26 import org.apache.myfaces.component.UserRoleAware;
27 import org.apache.myfaces.component.UserRoleUtils;
28 import org.apache.myfaces.shared_tomahawk.util.MessageUtils;
29 import org.apache.myfaces.tomahawk.util.Constants;
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59 public abstract class AbstractHtmlInputFileUpload
60 extends HtmlInputText
61 implements UserRoleAware, AlignProperty
62 {
63 private static final String SIZE_LIMIT_EXCEEDED = "sizeLimitExceeded";
64 private static final String FILE_SIZE_LIMIT_EXCEEDED = "fileSizeLimitExceeded";
65 private static final String FILEUPLOAD_MAX_SIZE = "org.apache.myfaces.custom.fileupload.maxSize";
66 private static final String FILEUPLOAD_EXCEPTION = "org.apache.myfaces.custom.fileupload.exception";
67 public static final String COMPONENT_TYPE = "org.apache.myfaces.HtmlInputFileUpload";
68 public static final String DEFAULT_RENDERER_TYPE = "org.apache.myfaces.FileUpload";
69 public static final String SIZE_LIMIT_MESSAGE_ID = "org.apache.myfaces.FileUpload.SIZE_LIMIT";
70
71 public AbstractHtmlInputFileUpload()
72 {
73 setRendererType(DEFAULT_RENDERER_TYPE);
74 }
75
76 public void setUploadedFile(UploadedFile upFile)
77 {
78 setValue(upFile);
79 }
80
81 public UploadedFile getUploadedFile()
82 {
83 return (UploadedFile)getValue();
84 }
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103 public abstract String getStorage();
104
105
106
107
108
109
110
111
112
113
114 public abstract String getAccept();
115
116
117
118
119
120
121
122 public Object getValue()
123 {
124 return super.getValue();
125 }
126
127 public boolean isRendered()
128 {
129 if (!UserRoleUtils.isVisibleOnUserRole(this)) return false;
130 return super.isRendered();
131 }
132
133 protected void validateValue(FacesContext context, Object convertedValue)
134 {
135 super.validateValue(context, convertedValue);
136
137 if (isValid())
138 {
139 String exception =
140 (String) context.getExternalContext().getRequestMap().get(FILEUPLOAD_EXCEPTION);
141
142 if(exception != null )
143 {
144 if(exception.equals(SIZE_LIMIT_EXCEEDED))
145 {
146 Integer maxSize =
147 (Integer) context.getExternalContext().getRequestMap().get(FILEUPLOAD_MAX_SIZE);
148 MessageUtils.addMessage(Constants.TOMAHAWK_DEFAULT_BUNDLE, FacesMessage.SEVERITY_ERROR,
149 SIZE_LIMIT_MESSAGE_ID, new Object[] { getId(),
150 maxSize},
151 getClientId(context), context);
152 setValid(false);
153 }
154 else if (FILE_SIZE_LIMIT_EXCEEDED.equals(exception))
155 {
156 Integer maxSize =
157 (Integer) context.getExternalContext().getRequestMap().get(FILEUPLOAD_MAX_SIZE);
158 if (maxSize != null)
159 {
160 MessageUtils.addMessage(Constants.TOMAHAWK_DEFAULT_BUNDLE, FacesMessage.SEVERITY_ERROR,
161 SIZE_LIMIT_MESSAGE_ID, new Object[] { getId(),
162 maxSize},
163 getClientId(context), context);
164 }
165 else
166 {
167 maxSize = (Integer) context.getExternalContext().getRequestMap().get(
168 "org.apache.myfaces.custom.fileupload."+this.getClientId(context)+".maxSize");
169 if (maxSize != null)
170 {
171 MessageUtils.addMessage(Constants.TOMAHAWK_DEFAULT_BUNDLE, FacesMessage.SEVERITY_ERROR,
172 SIZE_LIMIT_MESSAGE_ID, new Object[] { getId(),
173 maxSize},
174 getClientId(context), context);
175 }
176
177
178
179
180 }
181 setValid(false);
182 }
183 else
184 {
185 throw new IllegalStateException("other exceptions not handled yet, exception : "+exception);
186 }
187 }
188 }
189 }
190
191 }