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.el.ValueExpression;
22 import javax.faces.application.FacesMessage;
23 import javax.faces.component.UIComponent;
24 import javax.faces.component.html.HtmlInputText;
25 import javax.faces.context.FacesContext;
26
27 import org.apache.myfaces.component.AlignProperty;
28 import org.apache.myfaces.component.UserRoleAware;
29 import org.apache.myfaces.component.UserRoleUtils;
30 import org.apache.myfaces.shared_tomahawk.util.MessageUtils;
31 import org.apache.myfaces.tomahawk.util.Constants;
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
60
61 public abstract class AbstractHtmlInputFileUpload
62 extends HtmlInputText
63 implements UserRoleAware, AlignProperty
64 {
65 private static final String SIZE_LIMIT_EXCEEDED = "sizeLimitExceeded";
66 private static final String FILE_SIZE_LIMIT_EXCEEDED = "fileSizeLimitExceeded";
67 private static final String FILEUPLOAD_MAX_SIZE = "org.apache.myfaces.custom.fileupload.maxSize";
68 private static final String FILEUPLOAD_EXCEPTION = "org.apache.myfaces.custom.fileupload.exception";
69 public static final String COMPONENT_TYPE = "org.apache.myfaces.HtmlInputFileUpload";
70 public static final String DEFAULT_RENDERER_TYPE = "org.apache.myfaces.FileUpload";
71 public static final String SIZE_LIMIT_MESSAGE_ID = "org.apache.myfaces.FileUpload.SIZE_LIMIT";
72
73 public AbstractHtmlInputFileUpload()
74 {
75 setRendererType(DEFAULT_RENDERER_TYPE);
76 }
77
78 public void setUploadedFile(UploadedFile upFile)
79 {
80 setValue(upFile);
81 }
82
83 public UploadedFile getUploadedFile()
84 {
85 return (UploadedFile)getValue();
86 }
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105 public abstract String getStorage();
106
107
108
109
110
111
112
113
114
115
116 public abstract String getAccept();
117
118
119
120
121
122
123
124 public Object getValue()
125 {
126 return super.getValue();
127 }
128
129 public boolean isRendered()
130 {
131 if (!UserRoleUtils.isVisibleOnUserRole(this)) return false;
132 return super.isRendered();
133 }
134
135 protected void validateValue(FacesContext context, Object convertedValue)
136 {
137 super.validateValue(context, convertedValue);
138
139 if (isValid())
140 {
141 String exception =
142 (String) context.getExternalContext().getRequestMap().get(FILEUPLOAD_EXCEPTION);
143
144 if(exception != null )
145 {
146 if(exception.equals(SIZE_LIMIT_EXCEEDED))
147 {
148 Integer maxSize =
149 (Integer) context.getExternalContext().getRequestMap().get(FILEUPLOAD_MAX_SIZE);
150 MessageUtils.addMessage(Constants.TOMAHAWK_DEFAULT_BUNDLE, FacesMessage.SEVERITY_ERROR,
151 SIZE_LIMIT_MESSAGE_ID, new Object[] { MessageUtils.getLabel(context, this),
152 maxSize},
153 getClientId(context), context);
154 setValid(false);
155 }
156 else if (FILE_SIZE_LIMIT_EXCEEDED.equals(exception))
157 {
158 Integer maxSize =
159 (Integer) context.getExternalContext().getRequestMap().get(FILEUPLOAD_MAX_SIZE);
160 if (maxSize != null)
161 {
162 MessageUtils.addMessage(Constants.TOMAHAWK_DEFAULT_BUNDLE, FacesMessage.SEVERITY_ERROR,
163 SIZE_LIMIT_MESSAGE_ID, new Object[] { MessageUtils.getLabel(context, this),
164 maxSize},
165 getClientId(context), context);
166 }
167 else
168 {
169 maxSize = (Integer) context.getExternalContext().getRequestMap().get(
170 "org.apache.myfaces.custom.fileupload."+this.getClientId(context)+".maxSize");
171 if (maxSize != null)
172 {
173 MessageUtils.addMessage(Constants.TOMAHAWK_DEFAULT_BUNDLE, FacesMessage.SEVERITY_ERROR,
174 SIZE_LIMIT_MESSAGE_ID, new Object[] { MessageUtils.getLabel(context, this),
175 maxSize},
176 getClientId(context), context);
177 }
178
179
180
181
182 }
183 setValid(false);
184 }
185 else
186 {
187 throw new IllegalStateException("other exceptions not handled yet, exception : "+exception);
188 }
189 }
190 }
191 }
192 }