/*
* Smart GWT (GWT for SmartClient)
* Copyright 2008 and beyond, Isomorphic Software, Inc.
*
* Smart GWT is free software; you can redistribute it and/or modify it
* under the terms of the GNU Lesser General Public License version 3
* is published by the Free Software Foundation. Smart GWT is also
* available under typical commercial license terms - see
* http://smartclient.com/license
*
* This software is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*/
package com.smartgwt.client.bean.types;
import com.google.gwt.core.client.JavaScriptObject;
import com.smartgwt.client.bean.types.ArrayValueType;
import com.smartgwt.client.bean.BeanValueType;
public class PIntegerArrayValueType extends ArrayValueType<int[]> {
public static void registerValueType () {
// We check first to see if it's already registered, to avoid
// constructing the singleton over and over again. This will
// be called multiple times as various BeanFactories initialize
// themselves.
if (BeanValueType.getBeanValueType(int[].class) == null) {
BeanValueType.registerBeanValueType(new PIntegerArrayValueType());
}
}
private int[] emptyArray = new int[0];
@Override
protected Class getValueType () {
return int[].class;
}
@Override
protected int[] convertFrom (Object[] array) {
int[] result = new int[array.length];
BeanValueType<Integer> componentType = (BeanValueType<Integer>) getBeanValueType(int.class);
for (int x = 0; x < array.length; x++) {
result[x] = componentType.convertFrom(array[x]).intValue();
}
return result;
}
@Override
protected int[] convertFrom (boolean[] array) {
int[] result = new int[array.length];
for (int x = 0; x < array.length; x++) {
result[x] = array[x] ? 1 : 0;
}
return result;
}
@Override
protected int[] convertFrom (double[] array) {
int[] result = new int[array.length];
for (int x = 0; x < array.length; x++) {
result[x] = (int) array[x];
}
return result;
}
@Override
protected int[] convertFrom (float[] array) {
int[] result = new int[array.length];
for (int x = 0; x < array.length; x++) {
result[x] = (int) array[x];
}
return result;
}
@Override
protected int[] convertFrom (int[] array) {
// This one's easy ...
return array;
}
@Override
protected int[] convertFrom (long[] array) {
int[] result = new int[array.length];
for (int x = 0; x < array.length; x++) {
result[x] = (int) array[x];
}
return result;
}
}