|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
ArrayConverter | Line # 38 | 24 | 10 | 5,9% |
0.05882353
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
(1) | |||
Result | |||
0.05882353
|
net.smartlab.web.ActionTest.testValorize net.smartlab.web.ActionTest.testValorize | 1 PASS | |
1 | /* | |
2 | * The SmartWeb Framework | |
3 | * Copyright (C) 2004-2006 | |
4 | * | |
5 | * This library is free software; you can redistribute it and/or | |
6 | * modify it under the terms of the GNU Lesser General Public | |
7 | * License as published by the Free Software Foundation; either | |
8 | * version 2.1 of the License, or (at your option) any later version. | |
9 | * | |
10 | * This library is distributed in the hope that it will be useful, | |
11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | |
12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | |
13 | * Lesser General Public License for more details. | |
14 | * | |
15 | * You should have received a copy of the GNU Lesser General Public | |
16 | * License along with this library; if not, write to the Free Software | |
17 | * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA | |
18 | * | |
19 | * For further informations on the SmartWeb Framework please visit | |
20 | * | |
21 | * http://smartweb.sourceforge.net | |
22 | */ | |
23 | ||
24 | package net.smartlab.web.bean; | |
25 | ||
26 | import java.io.IOException; | |
27 | import java.io.StreamTokenizer; | |
28 | import java.io.StringReader; | |
29 | import java.util.ArrayList; | |
30 | import java.util.List; | |
31 | import java.util.Locale; | |
32 | ||
33 | /** | |
34 | * TODO documentation | |
35 | * | |
36 | * @author rlogiacco | |
37 | */ | |
38 | public abstract class ArrayConverter extends Converter { | |
39 | ||
40 | /** | |
41 | * TODO documentation | |
42 | */ | |
43 | protected final static String model[] = new String[0]; | |
44 | ||
45 | /** | |
46 | * TODO documentation | |
47 | */ | |
48 | 9 | public ArrayConverter() { |
49 | 9 | super(); |
50 | } | |
51 | ||
52 | /** | |
53 | * <p> | |
54 | * Parse an incoming String of the form similar to an array initializer in | |
55 | * the Java language into a <code>List</code> with individual Strings for each | |
56 | * element, according to the following rules. | |
57 | * </p> | |
58 | * <ul> | |
59 | * <li>The string must have matching '{' and '}' delimiters around a | |
60 | * comma-delimited list of values.</li> | |
61 | * <li>Whitespace before and after each element is stripped.</li> | |
62 | * <li>If an element is itself delimited by matching single or double | |
63 | * quotes, the usual rules for interpreting a quoted String apply.</li> | |
64 | * </ul> | |
65 | * | |
66 | * @param value String value to be parsed | |
67 | * @return a list of String elements | |
68 | * @throws ConversionException if the syntax of <code>svalue</code> is not | |
69 | * syntactically valid | |
70 | * @throws NullPointerException if <code>svalue</code> is | |
71 | * <code>null</code> | |
72 | */ | |
73 | 0 | protected List parseElements(String value) throws ConversionException { |
74 | // Validate the passed argument | |
75 | 0 | if (value == null) { |
76 | 0 | throw new NullPointerException(); |
77 | } | |
78 | ||
79 | // Trim any matching '{' and '}' delimiters | |
80 | 0 | value = value.trim(); |
81 | 0 | if (value.startsWith("{") && value.endsWith("}")) { |
82 | 0 | value = value.substring(1, value.length() - 1); |
83 | } | |
84 | 0 | try { |
85 | // Set up a StreamTokenizer on the characters in this String | |
86 | 0 | StreamTokenizer tokenizer = new StreamTokenizer(new StringReader(value)); |
87 | 0 | tokenizer.whitespaceChars(',', ','); // Commas are delimiters |
88 | 0 | tokenizer.ordinaryChars('0', '9'); // Needed to turn off numeric flag |
89 | 0 | tokenizer.ordinaryChars('.', '.'); |
90 | 0 | tokenizer.ordinaryChars('-', '-'); |
91 | 0 | tokenizer.wordChars('0', '9'); // Needed to make part of tokens |
92 | 0 | tokenizer.wordChars('.', '.'); |
93 | 0 | tokenizer.wordChars('-', '-'); |
94 | ||
95 | // Split comma-delimited tokens into a List | |
96 | 0 | ArrayList list = new ArrayList(); |
97 | 0 | while (true) { |
98 | 0 | int type = tokenizer.nextToken(); |
99 | 0 | if ((type == StreamTokenizer.TT_WORD) || (type > 0)) { |
100 | 0 | list.add(tokenizer.sval); |
101 | 0 | } else if (type == StreamTokenizer.TT_EOF) { |
102 | 0 | break; |
103 | } else { | |
104 | 0 | throw new ConversionException("Encountered token of type " + type); |
105 | } | |
106 | } | |
107 | // Return the completed list | |
108 | 0 | return list; |
109 | ||
110 | } catch (IOException ioe) { | |
111 | throw new ConversionException(ioe); | |
112 | } | |
113 | } | |
114 | ||
115 | /** | |
116 | * @see net.smartlab.web.bean.Converter#convert(java.lang.Class, | |
117 | * java.lang.Object, java.util.Locale) | |
118 | */ | |
119 | public abstract Object convert(Class type, Object value, Locale locale) throws ConversionException; | |
120 | } |
|