1 /*
2 * Copyright (c) 2004, RV Test Team
3 * All rights reserved.
4 *
5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions are met:
7 *
8 * Redistributions of source code must retain the above copyright notice, this
9 * list of conditions and the following disclaimer.
10 *
11 * Redistributions in binary form must reproduce the above copyright notice,
12 * this list of conditions and the following disclaimer in the documentation
13 * and/or other materials provided with the distribution.
14 *
15 * Neither the name of the "RV Test Team" nor the names of its contributors may
16 * be used to endorse or promote products derived from this software without
17 * specific prior written permission.
18 *
19 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
20 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
21 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
22 * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
23 * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
24 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
25 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
26 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
27 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
28 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
29 * THE POSSIBILITY OF SUCH DAMAGE.
30 *
31 */
32 /*
33 * Copyright (c) 2002, Reuters
34 * All rights reserved.
35 *
36 * Redistribution and use in source and binary forms, with or without
37 * modification, are permitted provided that the following conditions are met:
38 *
39 * Redistributions of source code must retain the above copyright notice, this
40 * list of conditions and the following disclaimer.
41 * Redistributions in binary form must reproduce the above copyright notice,
42 * this list of conditions and the following disclaimer in the documentation
43 * and/or other materials provided with the distribution.
44 * Neither the name of the Reuters nor the names of its contributors may be
45 * used to endorse or promote products derived from this software without
46 * specific prior written permission.
47 *
48 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
49 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
50 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
51 * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
52 * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
53 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
54 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
55 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
56 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
57 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
58 * THE POSSIBILITY OF SUCH DAMAGE.
59 *
60 */
61 package com.reuters.msgtest;
62
63 import java.lang.reflect.Array;
64
65
66 /***
67 *
68 * @author <a href="mailto:mark.pollack@reuters.com">Mark Pollack </a>
69 * @version @VERSION@ change history 12/03/01 - added toArray function - B.Roy
70 * 12/13/01 - added parseArrayStringTokens function - B.Roy
71 */
72 public class ArrayUtility {
73 /***
74 * Array Manipulation java tech tips ref
75 * http://developer.java.sun.com/servlet/PrintPageServlet?url=http%3A//developer.java.sun.com/developer/TechTips/2000/tt0815.html
76 *
77 * @param array
78 * input array of primitive values
79 * @return Array of Objects whose type corresponds to the primitive types in
80 * the input array
81 */
82 public static Object[] toArray(Object array) {
83 if (array == null) {
84 return null;
85 }
86
87 Class clazz = array.getClass();
88
89 if (!clazz.isArray()) { // if not an array or elements not primitive, return
90
91 return null;
92 }
93
94 if (!clazz.getComponentType().isPrimitive()) {
95 return null;
96 }
97
98 // get array length and create Object output array
99 int length = Array.getLength(array);
100 Object[] newArray = new Object[length];
101
102 // wrap and copy elements
103 for (int i = 0; i < length; i++) {
104 newArray[i] = Array.get(array, i);
105 }
106
107 return newArray;
108 }
109
110 /***
111 * generic method for parsing a String , extracting a set of tokens and
112 * populating a primitive array.
113 *
114 * @param primitiveArray
115 * array of primitive values
116 * @param values
117 * String array containing primitive values
118 */
119 public static void buildPrimitiveArray(Object primitiveArray,
120 String[] values) {
121 for (int i = 0; i < values.length; i++) {
122 String value = values[i];
123
124 if (primitiveArray instanceof byte[]) {
125 byte[] array = (byte[]) primitiveArray;
126 array[i] = Byte.parseByte(value);
127 } else if (primitiveArray instanceof short[]) {
128 short[] array = (short[]) primitiveArray;
129 array[i] = Short.parseShort(value);
130 } else if (primitiveArray instanceof int[]) {
131 int[] array = (int[]) primitiveArray;
132 array[i] = Integer.parseInt(value);
133 } else if (primitiveArray instanceof long[]) {
134 long[] array = (long[]) primitiveArray;
135 array[i] = Long.parseLong(value);
136 } else if (primitiveArray instanceof float[]) {
137 float[] array = (float[]) primitiveArray;
138 array[i] = Float.parseFloat(value);
139 } else if (primitiveArray instanceof double[]) {
140 double[] array = (double[]) primitiveArray;
141 array[i] = Double.parseDouble(value);
142 }
143 }
144 }
145 }