1:
31: package ;
32:
33: import ;
34: import ;
35: import ;
36:
37:
42: public class ArrayConverter
43: {
44: private ArrayConverter()
45: {
46: }
47:
48: public static Object[] getAsList(final Object maybeArray,
49: final Class arrayType)
50: {
51: if (maybeArray == null)
52: {
53: return null;
54: }
55:
56: if (maybeArray.getClass().isArray() == false)
57: {
58: return new Object[]{maybeArray};
59: }
60:
61: ArrayList list = new ArrayList();
62: ArrayConverter.addToList(list, maybeArray);
63: final Object o = Array.newInstance(arrayType, list.size());
64: return list.toArray((Object[]) o);
65: }
66:
67: private static void addToList (List list, Object array)
68: {
69: final int length = Array.getLength(array);
70: for (int i = 0; i < length; i++)
71: {
72: final Object value = Array.get(array, i);
73: if (value == null)
74: {
75: list.add(null);
76: continue;
77: }
78:
79: if (value.getClass().isArray() == false)
80: {
81: list.add(value);
82: continue;
83: }
84:
85: ArrayConverter.addToList(list, value);
86: }
87: }
88:
89:
90:
95: public static Object[] getArray(final Object maybeArray,
96: final Class arrayType,
97: final int dims)
98: {
99: if (maybeArray == null)
100: {
101: return null;
102: }
103: if (dims <= 0)
104: {
105: return null;
106: }
107:
108: if (maybeArray.getClass().isArray() == false)
109: {
110: Object object = maybeArray;
111: for (int i = 0; i < dims; i++)
112: {
113: final Object[] array = (Object[]) Array.newInstance(arrayType, 1);
114: array[0] = object;
115: object = array;
116: }
117: return (Object[]) object;
118: }
119:
120: if (ArrayConverter.getDimensionCount(maybeArray.getClass()) < dims)
121: {
122: return null;
123: }
124: return (Object[]) maybeArray;
125: }
126:
127: public static int getDimensionCount(Class arrayClass)
128: {
129: int count = 0;
130: while (arrayClass != null && arrayClass.isArray())
131: {
132: count += 1;
133: arrayClass = arrayClass.getComponentType();
134: }
135: return count;
136: }
137:
138: }