1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20 package org.waarp.gateway.kernel;
21
22 import io.netty.handler.codec.http.multipart.FileUpload;
23 import org.waarp.gateway.kernel.exception.HttpIncorrectRequestException;
24
25
26
27
28 public class DefaultHttpField extends AbstractHttpField {
29
30
31
32
33
34
35
36
37
38
39
40
41
42 public DefaultHttpField(final String fieldname, final FieldRole fieldtype,
43 final String fieldinfo, final String fieldvalue,
44 final boolean fieldvisibility,
45 final boolean fieldmandatory,
46 final boolean fieldcookieset,
47 final boolean fieldtovalidate,
48 final FieldPosition fieldposition,
49 final int fieldrank) {
50 super(fieldname, fieldtype, fieldinfo, fieldvalue, fieldvisibility,
51 fieldmandatory, fieldcookieset, fieldtovalidate, fieldposition,
52 fieldrank);
53 }
54
55 @Override
56 public final String getHtmlFormField(final HttpPage page)
57 throws HttpIncorrectRequestException {
58 final StringBuilder builder = new StringBuilder();
59 switch (getFieldtype()) {
60 case BUSINESS_INPUT_CHECKBOX:
61 case BUSINESS_INPUT_RADIO: {
62 builder.append(getFieldinfo());
63 final AbstractHttpField source = page.getFields().get(getFieldname());
64 final String[] values = source.fieldvalue.split(",");
65 final String[] finalValues = fieldvalue.split(",");
66 final String inputtype;
67 if (getFieldtype() == FieldRole.BUSINESS_INPUT_CHECKBOX) {
68 inputtype = ": <INPUT type=CHECKBOX name=";
69 } else {
70 inputtype = ": <INPUT type=RADIO name=";
71 }
72 for (final String string : values) {
73 builder.append(inputtype).append(getFieldname());
74 if (fieldvalue != null && fieldvalue.length() > 0) {
75 builder.append(" value=\"").append(string).append('"');
76 if (finalValues != null) {
77 for (final String value : finalValues) {
78 if (value.equals(string)) {
79 builder.append(" checked");
80 break;
81 }
82 }
83 }
84 }
85 builder.append('>').append(string).append("<BR>");
86 }
87 break;
88 }
89 case BUSINESS_INPUT_FILE:
90 case BUSINESS_INPUT_HIDDEN:
91 case BUSINESS_INPUT_PWD:
92 case BUSINESS_INPUT_TEXT:
93 case SUBMIT: {
94 builder.append(getFieldinfo());
95 switch (getFieldtype()) {
96 case BUSINESS_INPUT_FILE:
97 builder.append(": <INPUT type=FILE name=");
98 break;
99 case BUSINESS_INPUT_HIDDEN:
100 builder.append(": <INPUT type=HIDDEN name=");
101 break;
102 case BUSINESS_INPUT_PWD:
103 builder.append(": <INPUT type=PASSWORD name=");
104 break;
105 case BUSINESS_INPUT_TEXT:
106 builder.append(": <INPUT type=TEXT name=");
107 break;
108 case SUBMIT:
109 builder.append(": <INPUT type=SUBMIT name=");
110 break;
111 default:
112 throw new HttpIncorrectRequestException(
113 "Incorrect type: " + getFieldtype());
114 }
115 builder.append(getFieldname());
116 if (fieldvalue != null && fieldvalue.length() > 0) {
117 builder.append(" value=\"").append(fieldvalue).append('"');
118 }
119 builder.append('>');
120 break;
121 }
122 case BUSINESS_INPUT_IMAGE: {
123 builder.append(getFieldinfo()).append(": <INPUT type=IMAGE name=")
124 .append(getFieldname());
125 if (fieldvalue != null && fieldvalue.length() > 0) {
126 builder.append(" src=\"").append(fieldvalue).append("\" ");
127 }
128 if (getFieldinfo() != null && getFieldinfo().length() > 0) {
129 builder.append(" alt=\"").append(getFieldinfo()).append("\" ");
130 }
131 builder.append('>');
132 break;
133 }
134 case BUSINESS_SELECT: {
135 builder.append(getFieldinfo()).append("<BR><SELECT name=")
136 .append(getFieldname()).append('>');
137 final AbstractHttpField source = page.getFields().get(getFieldname());
138 final String[] values = source.fieldvalue.split(",");
139 for (final String string : values) {
140 builder.append("<OPTION label=\"").append(string)
141 .append("\" value=\"").append(string);
142 if (fieldvalue != null && fieldvalue.length() > 0 &&
143 fieldvalue.equals(string)) {
144 builder.append("\" selected>");
145 } else {
146 builder.append("\">");
147 }
148 builder.append(string).append("</OPTION>");
149 }
150 builder.append("</SELECT>");
151 break;
152 }
153 case BUSINESS_TEXTAREA: {
154 builder.append(getFieldinfo()).append("<BR><TEXTAREA name=")
155 .append(getFieldname()).append('>');
156 if (fieldvalue != null && fieldvalue.length() > 0) {
157 builder.append(fieldvalue);
158 }
159 builder.append("</TEXTAREA>");
160 break;
161 }
162 case BUSINESS_COOKIE:
163
164 break;
165 default:
166 throw new HttpIncorrectRequestException(
167 "Incorrect type: " + getFieldtype());
168 }
169 return builder.toString();
170 }
171
172 @Override
173 public final String getHtmlTabField(final HttpPage page) {
174 final StringBuilder builder =
175 new StringBuilder().append(getFieldinfo()).append("</TD><TD>");
176 if (fieldvalue != null) {
177 builder.append(fieldvalue);
178 }
179 return builder.toString();
180 }
181
182 @Override
183 public final DefaultHttpField clone() {
184 return new DefaultHttpField(getFieldname(), getFieldtype(), getFieldinfo(),
185 fieldvalue, isFieldvisibility(),
186 isFieldmandatory(), isFieldcookieset(),
187 isFieldtovalidate(), getFieldposition(),
188 getFieldrank());
189 }
190
191 @Override
192 public final void setStringValue(final String value)
193 throws HttpIncorrectRequestException {
194 switch (getFieldtype()) {
195 case BUSINESS_INPUT_CHECKBOX:
196 if (fieldvalue != null) {
197 if (fieldvalue.length() > 0) {
198 fieldvalue += ',' + value;
199 } else {
200 fieldvalue = value;
201 }
202 } else {
203 fieldvalue = value;
204 }
205 setPresent(true);
206 break;
207 case BUSINESS_INPUT_FILE:
208 case BUSINESS_INPUT_HIDDEN:
209 case BUSINESS_INPUT_IMAGE:
210 case BUSINESS_INPUT_PWD:
211 case BUSINESS_INPUT_RADIO:
212 case BUSINESS_INPUT_TEXT:
213 case BUSINESS_SELECT:
214 case BUSINESS_TEXTAREA:
215 case BUSINESS_COOKIE:
216 if (isPresent()) {
217
218 throw new HttpIncorrectRequestException(
219 "Field already filled: " + getFieldname());
220 }
221 fieldvalue = value;
222 setPresent(true);
223 break;
224 default:
225 break;
226 }
227 }
228
229 @Override
230 public final void setFileUpload(final FileUpload fileUpload)
231 throws HttpIncorrectRequestException {
232 if (getFieldtype() == FieldRole.BUSINESS_INPUT_FILE) {
233 if (isPresent()) {
234
235 throw new HttpIncorrectRequestException(
236 "Field already filled: " + getFieldname());
237 }
238 this.fileUpload = fileUpload;
239 fieldvalue = fileUpload.getFilename();
240 setPresent(true);
241 } else {
242
243 throw new HttpIncorrectRequestException(
244 "Field with wrong type (should be File): " + getFieldname());
245 }
246 }
247
248 }