private static Object getProperValue(Number number, Class<?> expectedClass) {
    Class<?> klazz = ClassUtils.wrapperToPrimitive(number.getClass());
    Object value = null;

    // Dexlib will only ever make byte (t), int, long (l), or short (s)
    if (klazz == byte.class) {
      value = number.byteValue();
      if (expectedClass == boolean.class) {
        value = (byte) value == 1;
      }
    } else if (klazz == short.class) {
      value = number.shortValue();
      if (expectedClass == char.class) {
        value = (char) number.shortValue();
      }
    } else if (klazz == int.class) {
      if (expectedClass == int.class) {
        value = number.intValue();
      } else if (expectedClass == float.class) {
        value = Float.intBitsToFloat(number.intValue());
      }
    } else if (klazz == long.class) {
      value = number.longValue();
      if (expectedClass == long.class) {
        value = number.longValue();
      } else if (expectedClass == double.class) {
        value = Double.longBitsToDouble(number.longValue());
      }
    }

    return value;
  }
Ejemplo n.º 2
0
 /** Adds two numbers, coercing the second to the type of the first. */
 private Number sum(Number a, Number b) {
   if (a instanceof Integer) {
     return new Integer(a.intValue() + b.intValue());
   } else if (a instanceof Float) {
     return new Float(a.floatValue() + b.floatValue());
   } else if (a instanceof Short) {
     return new Short((short) (a.shortValue() + b.shortValue()));
   } else if (a instanceof Byte) {
     return new Byte((byte) (a.byteValue() + b.byteValue()));
   } else {
     // should never happen
     throw new AnalyticsException("Invalid number type");
   }
 }
Ejemplo n.º 3
0
  /** Return the string for the object passed in. */
  protected String doGetString(Object value) {
    if (value instanceof Number) {
      Number num = (Number) value;
      switch (fNumberType) {
        case BYTE:
          if (num.byteValue() == Byte.MAX_VALUE) return sMaxValue;
          else if (num.byteValue() == Byte.MIN_VALUE) return sMinValue;
          else break;

        case DOUBLE:
          if (num.doubleValue() == Double.MAX_VALUE) return sMaxValue;
          else if (num.doubleValue() == Double.MIN_VALUE) return sMinValue;
        case FLOAT:
          if (fNumberType == FLOAT) {
            if (num.floatValue() == Float.MAX_VALUE) return sMaxValue;
            else if (num.floatValue() == Float.MIN_VALUE) return sMinValue;
          }
          // The formatter doesn't handle big/small floats. (i.e. more than the MIN digits we set).
          // It doesn't go to scientific notation as necessary. The only way to test this is to
          // roundtrip the number. If they come up to be the same, then it is ok. Else format using
          // toString.
          String result = fFormatter.format(value);
          try {
            Number roundTrip = fFormatter.parse(result);
            if (roundTrip.doubleValue() != num.doubleValue()) result = value.toString();
          } catch (ParseException e) {
            result = value.toString();
          }
          return result;
        case INTEGER:
          if (num.intValue() == Integer.MAX_VALUE) return sMaxValue;
          else if (num.intValue() == Integer.MIN_VALUE) return sMinValue;
          else break;
        case LONG:
          if (num.longValue() == Long.MAX_VALUE) return sMaxValue;
          else if (num.longValue() == Long.MIN_VALUE) return sMinValue;
          else break;
        case SHORT:
          if (num.shortValue() == Short.MAX_VALUE) return sMaxValue;
          else if (num.shortValue() == Short.MIN_VALUE) return sMinValue;
          else break;
        default:
          break;
      }
      return fFormatter.format(value);
    } else {
      return null; // Invalid or null. No string to display.
    }
  }
Ejemplo n.º 4
0
  public static JsonPrimitive fromPrimitive(Object object) {
    if (object != null) {
      if (object instanceof Number) {
        JsonPrimitive jsonPrimitive;

        Number objectNumber = (Number) object;
        if (objectNumber instanceof Byte)
          jsonPrimitive = new JsonPrimitive(objectNumber.byteValue());
        else if (objectNumber instanceof Double)
          jsonPrimitive = new JsonPrimitive(objectNumber.doubleValue());
        else if (objectNumber instanceof Float)
          jsonPrimitive = new JsonPrimitive(objectNumber.floatValue());
        else if (objectNumber instanceof Integer)
          jsonPrimitive = new JsonPrimitive(objectNumber.intValue());
        else if (objectNumber instanceof Long)
          jsonPrimitive = new JsonPrimitive(objectNumber.longValue());
        else if (objectNumber instanceof Short)
          jsonPrimitive = new JsonPrimitive(objectNumber.shortValue());
        else jsonPrimitive = new JsonPrimitive(objectNumber);

        return jsonPrimitive;
      } else if (object instanceof Boolean) {
        return new JsonPrimitive((Boolean) object);
      } else if (object instanceof String) {
        return new JsonPrimitive((String) object);
      } else if (object instanceof Character) {
        return new JsonPrimitive((Character) object);
      }
    }
    return null;
  }
Ejemplo n.º 5
0
 /** {@inheritDoc} */
 @Override
 protected byte[] toArray(final Number number) {
   final ByteBuffer buff = ByteBuffer.allocate(BYTES_PER_ELEMENT);
   buff.order(ByteOrder.LITTLE_ENDIAN);
   buff.putShort(number.shortValue());
   return buff.array();
 }
Ejemplo n.º 6
0
 public static Number convert(Number val, Class<? extends Number> type) {
   if (val == null) {
     return null;
   } else if (Double.class.equals(type)) {
     if (val instanceof Double) {
       return val;
     }
     return Double.valueOf(val.doubleValue());
   } else if (Float.class.equals(type)) {
     if (val instanceof Float) {
       return val;
     }
     return Float.valueOf(val.floatValue());
   } else if (Integer.class.equals(type)) {
     if (val instanceof Integer) {
       return val;
     }
     return Integer.valueOf(val.intValue());
   } else if (Byte.class.equals(type)) {
     if (val instanceof Byte) {
       return val;
     }
     return Byte.valueOf(val.byteValue());
   } else if (Short.class.equals(type)) {
     if (val instanceof Short) {
       return val;
     }
     return Short.valueOf(val.shortValue());
   } else {
     throw new UnsupportedOperationException("Class " + type + " can't be used in a value Range");
   }
 }
Ejemplo n.º 7
0
  /**
   * Checks if the value can safely be converted to a short primitive.
   *
   * @param value The value validation is being performed on.
   * @param locale The locale to use to parse the number (system default if null)
   * @return the converted Short value.
   */
  public static Short formatShort(String value, Locale locale) {
    Short result = null;

    if (value != null) {
      NumberFormat formatter = null;
      if (locale != null) {
        formatter = NumberFormat.getNumberInstance(locale);
      } else {
        formatter = NumberFormat.getNumberInstance(Locale.getDefault());
      }
      formatter.setParseIntegerOnly(true);
      ParsePosition pos = new ParsePosition(0);
      Number num = formatter.parse(value, pos);

      // If there was no error      and we used the whole string
      if (pos.getErrorIndex() == -1
          && pos.getIndex() == value.length()
          && num.doubleValue() >= Short.MIN_VALUE
          && num.doubleValue() <= Short.MAX_VALUE) {
        result = new Short(num.shortValue());
      }
    }

    return result;
  }
Ejemplo n.º 8
0
  /**
   * Cast a primitive value represented by its java.lang wrapper type to the specified java.lang
   * wrapper type. e.g. Byte(5) to Integer(5) or Integer(5) to Byte(5)
   *
   * @param toType is the java TYPE type
   * @param value is the value in java.lang wrapper. value may not be null.
   */
  static Object castWrapper(Class toType, Object value) {
    if (!toType.isPrimitive()) throw new InterpreterError("invalid type in castWrapper: " + toType);
    if (value == null) throw new InterpreterError("null value in castWrapper, guard");
    if (value instanceof Boolean) {
      if (toType != Boolean.TYPE) throw new InterpreterError("bad wrapper cast of boolean");
      else return value;
    }

    // first promote char to Number type to avoid duplicating code
    if (value instanceof Character) value = new Integer(((Character) value).charValue());

    if (!(value instanceof Number)) throw new InterpreterError("bad type in cast");

    Number number = (Number) value;

    if (toType == Byte.TYPE) return new Byte(number.byteValue());
    if (toType == Short.TYPE) return new Short(number.shortValue());
    if (toType == Character.TYPE) return new Character((char) number.intValue());
    if (toType == Integer.TYPE) return new Integer(number.intValue());
    if (toType == Long.TYPE) return new Long(number.longValue());
    if (toType == Float.TYPE) return new Float(number.floatValue());
    if (toType == Double.TYPE) return new Double(number.doubleValue());

    throw new InterpreterError("error in wrapper cast");
  }
Ejemplo n.º 9
0
  public static final <T> T convert(final Class<T> type, final Number value) {
    T converted = null;
    if (type == Double.class) {
      Double doubleValue = value.doubleValue();
      converted = (T) doubleValue;
    } else if (type == Integer.class) {
      Integer intValue = value.intValue();
      converted = (T) intValue;
    } else if (type == Float.class) {
      Float floatValue = value.floatValue();
      converted = (T) floatValue;
    } else if (type == Byte.class) {
      Byte byteValue = value.byteValue();
      converted = (T) byteValue;
    } else if (type == Long.class) {
      Long longValue = value.longValue();
      converted = (T) longValue;
    } else if (type == Short.class) {
      Short shortValue = value.shortValue();
      converted = (T) shortValue;
    } else {
      throw new IllegalStateException("Could not covert Number.");
    }

    return converted;
  }
Ejemplo n.º 10
0
  private static Object toType(Number val, int returnType) {
    switch (returnType) {
      case DataTypes.W_DOUBLE:
      case DataTypes.DOUBLE:
        return val.doubleValue();
      case DataTypes.W_FLOAT:
      case DataTypes.FLOAT:
        return val.floatValue();
      case DataTypes.INTEGER:
      case DataTypes.W_INTEGER:
        return val.intValue();
      case DataTypes.W_LONG:
      case DataTypes.LONG:
        return val.longValue();
      case DataTypes.W_SHORT:
      case DataTypes.SHORT:
        return val.shortValue();
      case DataTypes.BIG_DECIMAL:
        return new BigDecimal(val.doubleValue());
      case DataTypes.BIG_INTEGER:
        return BigInteger.valueOf(val.longValue());

      case DataTypes.STRING:
        return val.doubleValue();
    }
    throw new RuntimeException("internal error: " + returnType);
  }
  @SuppressWarnings("boxing")
  private void cipEqu(Number actual, Number expected, int flags) {
    Number res = OverloadedNumberUtil.addFallbackType(actual, flags);
    assertEquals(expected.getClass(), res.getClass());
    assertEquals(expected, res);

    // Some number types wrap the number with multiple types and equals() only compares one of them.
    // So we try to
    // catch any inconsistency:
    assertEquals(expected.byteValue(), res.byteValue());
    assertEquals(expected.shortValue(), res.shortValue());
    assertEquals(expected.intValue(), res.intValue());
    assertEquals(expected.longValue(), res.longValue());
    assertEquals(expected.floatValue(), res.floatValue());
    assertEquals(expected.doubleValue(), res.doubleValue());
  }
Ejemplo n.º 12
0
 /*
  * We need to coerce numbers to the tightest possible type and let the
  * schema coerce them to the proper
  */
 @SuppressWarnings("unchecked")
 private static Object tightenNumericTypes(Object o) {
   if (o == null) {
     return null;
   } else if (o instanceof List) {
     List l = (List) o;
     for (int i = 0; i < l.size(); i++) l.set(i, tightenNumericTypes(l.get(i)));
     return l;
   } else if (o instanceof Map) {
     Map m = (Map) o;
     for (Map.Entry entry : (Set<Map.Entry>) m.entrySet())
       m.put(entry.getKey(), tightenNumericTypes(entry.getValue()));
     return m;
   } else if (o instanceof Number) {
     Number n = (Number) o;
     if (o instanceof Integer) {
       if (n.intValue() < Byte.MAX_VALUE) return n.byteValue();
       else if (n.intValue() < Short.MAX_VALUE) return n.shortValue();
       else return n;
     } else if (o instanceof Double) {
       if (n.doubleValue() < Float.MAX_VALUE) return n.floatValue();
       else return n;
     } else {
       throw new RuntimeException("Unsupported numeric type: " + o.getClass());
     }
   } else {
     return o;
   }
 }
Ejemplo n.º 13
0
 private static Object convertConstant(Number source, ClassNode target) {
   if (ClassHelper.Byte_TYPE.equals(target)) {
     return source.byteValue();
   }
   if (ClassHelper.Short_TYPE.equals(target)) {
     return source.shortValue();
   }
   if (ClassHelper.Integer_TYPE.equals(target)) {
     return source.intValue();
   }
   if (ClassHelper.Long_TYPE.equals(target)) {
     return source.longValue();
   }
   if (ClassHelper.Float_TYPE.equals(target)) {
     return source.floatValue();
   }
   if (ClassHelper.Double_TYPE.equals(target)) {
     return source.doubleValue();
   }
   if (ClassHelper.BigInteger_TYPE.equals(target)) {
     return DefaultGroovyMethods.asType(source, BigInteger.class);
   }
   if (ClassHelper.BigDecimal_TYPE.equals(target)) {
     return DefaultGroovyMethods.asType(source, BigDecimal.class);
   }
   throw new IllegalArgumentException("Unsupported conversion");
 }
Ejemplo n.º 14
0
 /**
  * This is a constructor provided to clone Number. Since V is instantiation time and not known
  * during module creation, a copy is needed. Currently only the following are supported: Double,
  * Integer, Float, Long, and Short. If you derive your own class from Number then you need to
  * override getValue to help make a correct copy.
  *
  * @param num to clone from
  * @return value as a correct sub-class (V) object
  */
 @SuppressWarnings("unchecked")
 public V getValue(Number num) {
   Number val;
   switch (type) {
     case DOUBLE:
       val = new Double(num.doubleValue());
       break;
     case INTEGER:
       val = new Integer(num.intValue());
       break;
     case FLOAT:
       val = new Float(num.floatValue());
       break;
     case LONG:
       val = new Long(num.longValue());
       break;
     case SHORT:
       val = new Short(num.shortValue());
       break;
     default:
       val = new Double(num.doubleValue());
       break;
   }
   return (V) val;
 }
Ejemplo n.º 15
0
 public Object convertToNumber(Number value, Class toType) throws Exception {
   if (AtomicInteger.class == toType) {
     return new AtomicInteger((Integer) convertToNumber(value, Integer.class));
   } else if (AtomicLong.class == toType) {
     return new AtomicLong((Long) convertToNumber(value, Long.class));
   } else if (Integer.class == toType) {
     return value.intValue();
   } else if (Short.class == toType) {
     return value.shortValue();
   } else if (Long.class == toType) {
     return value.longValue();
   } else if (Float.class == toType) {
     return value.floatValue();
   } else if (Double.class == toType) {
     return value.doubleValue();
   } else if (Byte.class == toType) {
     return value.byteValue();
   } else if (BigInteger.class == toType) {
     return new BigInteger(value.toString());
   } else if (BigDecimal.class == toType) {
     return new BigDecimal(value.toString());
   } else {
     return null;
   }
 }
Ejemplo n.º 16
0
 /**
  * Expression may return number value which is not directly compatible with feature type (e.g.
  * Double when Integer is expected), or EEnumLiteral meta-object when literal instance is expected
  *
  * @generated
  */
 public static Object performCast(Object value, EDataType targetType) {
   if (targetType instanceof EEnum) {
     if (value instanceof EEnumLiteral) {
       EEnumLiteral literal = (EEnumLiteral) value;
       return (literal.getInstance() != null) ? literal.getInstance() : literal;
     }
   }
   if (false == value instanceof Number
       || targetType == null
       || targetType.getInstanceClass() == null) {
     return value;
   }
   Class<?> targetClass = targetType.getInstanceClass();
   Number num = (Number) value;
   Class<?> valClass = value.getClass();
   Class<?> targetWrapperClass = targetClass;
   if (targetClass.isPrimitive()) {
     targetWrapperClass = EcoreUtil.wrapperClassFor(targetClass);
   }
   if (valClass.equals(targetWrapperClass)) {
     return value;
   }
   if (Number.class.isAssignableFrom(targetWrapperClass)) {
     if (targetWrapperClass.equals(Byte.class)) return new Byte(num.byteValue());
     if (targetWrapperClass.equals(Integer.class)) return new Integer(num.intValue());
     if (targetWrapperClass.equals(Short.class)) return new Short(num.shortValue());
     if (targetWrapperClass.equals(Long.class)) return new Long(num.longValue());
     if (targetWrapperClass.equals(BigInteger.class)) return BigInteger.valueOf(num.longValue());
     if (targetWrapperClass.equals(Float.class)) return new Float(num.floatValue());
     if (targetWrapperClass.equals(Double.class)) return new Double(num.doubleValue());
     if (targetWrapperClass.equals(BigDecimal.class)) return new BigDecimal(num.doubleValue());
   }
   return value;
 }
Ejemplo n.º 17
0
 /**
  * Convert the specified object into a Short.
  *
  * @param value the value to convert
  * @return the converted value
  * @throws ConversionException thrown if the value cannot be converted to a short
  */
 public static Short toShort(Object value) throws ConversionException {
   Number n = toNumber(value, Short.class);
   if (n instanceof Short) {
     return (Short) n;
   } else {
     return new Short(n.shortValue());
   }
 }
Ejemplo n.º 18
0
 /** @see org.inigma.lwrest.config.Configuration#getShort(java.lang.String, java.lang.Number) */
 @Override
 public Short getShort(String key, Number defaultValue) {
   Number value = get(key, defaultValue);
   if (value == null) {
     return null;
   }
   return value.shortValue();
 }
Ejemplo n.º 19
0
 /**
  * Looks up the given key in the given map, converting the result into a {@link Short}. First,
  * {@link #getNumber(Map,Object)} is invoked. If the result is null, then null is returned.
  * Otherwise, the short value of the resulting {@link Number} is returned.
  *
  * @param map the map whose value to look up
  * @param key the key whose value to look up in that map
  * @return a {@link Short} or null
  */
 public static Short getShort(Map map, Object key) {
   Number answer = getNumber(map, key);
   if (answer == null) {
     return null;
   } else if (answer instanceof Short) {
     return (Short) answer;
   }
   return new Short(answer.shortValue());
 }
Ejemplo n.º 20
0
  /**
   * Coerces the specified Number value to an alternative specified Number type via the standard
   * Number defined conversion methods.
   *
   * @throws BeanException if the specified value could not be coerced to the property type or to
   *     wrap a multitude of exceptions which can be thrown on coercion (ex: NumberFormatException).
   */
  public <T extends Number> T coerceNumber(Class<T> type, Number val) throws BeanException {
    if (type == Byte.class) val = new Byte(val.byteValue());
    else if (type == Short.class) val = new Short(val.shortValue());
    else if (type == Integer.class) val = new Integer(val.intValue());
    else if (type == Long.class) val = new Long(val.shortValue());
    else if (type == Float.class) val = new Float(val.floatValue());
    else if (type == Double.class) val = new Double(val.doubleValue());
    else if (type == BigInteger.class) {
      val = BigInteger.valueOf(val.longValue());
    } else if (type == BigDecimal.class) {
      try {
        val = BigDecimal.valueOf(val.doubleValue());
      } catch (NumberFormatException x) {
        throw new BeanException(x);
      }
    } else throw new BeanException("Unsupported Number type: " + type.getName());

    return type.cast(val);
  }
Ejemplo n.º 21
0
  @SuppressWarnings("unchecked")
  @Override
  public Function<Object[], ?> visit(UnaryExpression e) {
    final Function<Object[], ?> first = e.getFirst().accept(this);
    switch (e.getExpressionType()) {
      case ExpressionType.ArrayLength:
        return t -> Array.getLength(first.apply(t));
      case ExpressionType.BitwiseNot:
        return (Function<Object[], ?>) bitwiseNot((Function<Object[], Number>) first);
      case ExpressionType.Convert:
        final Class<?> to = e.getResultType();
        if (to.isPrimitive() || Number.class.isAssignableFrom(to))
          return t -> {
            Object source = first.apply(t);
            if (source instanceof Number) {
              Number result = (Number) source;
              if (to.isPrimitive()) {
                if (to == Integer.TYPE) return result.intValue();
                if (to == Long.TYPE) return result.longValue();
                if (to == Float.TYPE) return result.floatValue();
                if (to == Double.TYPE) return result.doubleValue();
                if (to == Byte.TYPE) return result.byteValue();
                if (to == Character.TYPE) return (char) result.intValue();
                if (to == Short.TYPE) return result.shortValue();
              } else if (result != null) {
                if (to == BigInteger.class) return BigInteger.valueOf(result.longValue());
                if (to == BigDecimal.class) return BigDecimal.valueOf(result.doubleValue());
              }
            }
            if (source instanceof Character) {
              if (to == Integer.TYPE) return (int) (char) source;
              if (to == Long.TYPE) return (long) (char) source;
              if (to == Float.TYPE) return (float) (char) source;
              if (to == Double.TYPE) return (double) (char) source;
            }
            return to.cast(source);
          };

        return first;
      case ExpressionType.IsNull:
        return first.andThen(r -> r == null);
      case ExpressionType.LogicalNot:
        return normalize(not((Function<Object[], Boolean>) first));
      case ExpressionType.Negate:
        return (Function<Object[], ?>) negate((Function<Object[], Number>) first);
      case ExpressionType.Quote:
        return constant(first);
        // case ExpressionType.UnaryPlus:
        // return abs((Function<? extends Number, Object[]>) first);
      default:
        throw new IllegalArgumentException(ExpressionType.toString(e.getExpressionType()));
    }
  }
 /**
  * Coerces the value to be a number of the specified type; needed because all numbers come back
  * from the datastore as Long and this screws up any type that expects something smaller. Also
  * does toString just for the hell of it.
  */
 Object coerceNumber(Number value, Class<?> type) {
   if ((type == Byte.class) || (type == Byte.TYPE)) return value.byteValue();
   else if ((type == Short.class) || (type == Short.TYPE)) return value.shortValue();
   else if ((type == Integer.class) || (type == Integer.TYPE)) return value.intValue();
   else if ((type == Long.class) || (type == Long.TYPE)) return value.longValue();
   else if ((type == Float.class) || (type == Float.TYPE)) return value.floatValue();
   else if ((type == Double.class) || (type == Double.TYPE)) return value.doubleValue();
   else if (type == String.class) return value.toString();
   else
     throw new IllegalArgumentException(
         "Don't know how to convert " + value.getClass() + " to " + type);
 }
Ejemplo n.º 23
0
 static Number addNumbers(Number paramNumber1, Number paramNumber2)
 {
   if (((paramNumber1 instanceof Double)) || ((paramNumber2 instanceof Double))) {
     return Double.valueOf(paramNumber1.doubleValue() + paramNumber2.doubleValue());
   }
   if (((paramNumber1 instanceof Float)) || ((paramNumber2 instanceof Float))) {
     return Float.valueOf(paramNumber1.floatValue() + paramNumber2.floatValue());
   }
   if (((paramNumber1 instanceof Long)) || ((paramNumber2 instanceof Long))) {
     return Long.valueOf(paramNumber1.longValue() + paramNumber2.longValue());
   }
   if (((paramNumber1 instanceof Integer)) || ((paramNumber2 instanceof Integer))) {
     return Integer.valueOf(paramNumber1.intValue() + paramNumber2.intValue());
   }
   if (((paramNumber1 instanceof Short)) || ((paramNumber2 instanceof Short))) {
     return Integer.valueOf(paramNumber1.shortValue() + paramNumber2.shortValue());
   }
   if (((paramNumber1 instanceof Byte)) || ((paramNumber2 instanceof Byte))) {
     return Integer.valueOf(paramNumber1.byteValue() + paramNumber2.byteValue());
   }
   throw new RuntimeException("Unknown number type.");
 }
Ejemplo n.º 24
0
 public short getParameter(String key, short defaultValue) {
   Number n = getNumbers().get(key);
   if (n != null) {
     return n.shortValue();
   }
   String value = getParameter(key);
   if (value == null || value.length() == 0) {
     return defaultValue;
   }
   short s = Short.parseShort(value);
   getNumbers().put(key, s);
   return s;
 }
Ejemplo n.º 25
0
 public short getMethodParameter(String method, String key, short defaultValue) {
   String methodKey = method + "." + key;
   Number n = getNumbers().get(methodKey);
   if (n != null) {
     return n.shortValue();
   }
   String value = getMethodParameter(method, key);
   if (value == null || value.length() == 0) {
     return defaultValue;
   }
   short s = Short.parseShort(value);
   getNumbers().put(methodKey, s);
   return s;
 }
Ejemplo n.º 26
0
 public static void put(
     ByteBuffer buf, VertexFormatElement e, boolean denormalize, Number fill, Number... ns) {
   if (e.getElementCount() > ns.length && fill == null)
     throw new IllegalArgumentException("not enough elements");
   Number n;
   for (int i = 0; i < e.getElementCount(); i++) {
     if (i < ns.length) n = ns[i];
     else n = fill;
     switch (e.getType()) {
       case BYTE:
         buf.put(denormalize ? (byte) (n.floatValue() * (Byte.MAX_VALUE - 1)) : n.byteValue());
         break;
       case UBYTE:
         buf.put(denormalize ? (byte) (n.floatValue() * ((1 << Byte.SIZE) - 1)) : n.byteValue());
         break;
       case SHORT:
         buf.putShort(
             denormalize ? (short) (n.floatValue() * (Short.MAX_VALUE - 1)) : n.shortValue());
         break;
       case USHORT:
         buf.putShort(
             denormalize ? (short) (n.floatValue() * ((1 << Short.SIZE) - 1)) : n.shortValue());
         break;
       case INT:
         buf.putInt(
             denormalize ? (int) (n.doubleValue() * (Integer.MAX_VALUE - 1)) : n.intValue());
         break;
       case UINT:
         buf.putInt(
             denormalize ? (int) (n.doubleValue() * ((1L << Integer.SIZE) - 1)) : n.intValue());
         break;
       case FLOAT:
         buf.putFloat(n.floatValue());
         break;
     }
   }
 }
Ejemplo n.º 27
0
 public Number coerceNumber(Object inputArgument, Class<?> paraType) {
   Number number = (Number) inputArgument;
   if (paraType == int.class || paraType == Integer.class) {
     return number.intValue();
   } else if (paraType == double.class || paraType == Double.class) {
     return number.doubleValue();
   } else if (paraType == float.class || paraType == Float.class) {
     return number.floatValue();
   } else if (paraType == short.class || paraType == Short.class) {
     return number.shortValue();
   } else if (paraType == byte.class || paraType == Byte.class) {
     return number.byteValue();
   }
   return null;
 }
Ejemplo n.º 28
0
  /*
   * (non-Javadoc)
   *
   * @see
   * com.vaadin.data.util.converter.Converter#convertToModel(java.lang.Object,
   * java.lang.Class, java.util.Locale)
   */
  @Override
  public Short convertToModel(String value, Class<? extends Short> targetType, Locale locale)
      throws ConversionException {
    Number n = convertToNumber(value, targetType, locale);

    if (n == null) {
      return null;
    }

    short shortValue = n.shortValue();
    if (shortValue == n.longValue()) {
      return shortValue;
    }

    throw new ConversionException(
        "Could not convert '" + value + "' to " + Short.class.getName() + ": value out of range");
  }
Ejemplo n.º 29
0
 @Override
 protected Object cast(Class<?> target, Type[] neededGenerics, Object rawVal) {
   Number value = (Number) rawVal;
   // Wrapper classes are evil!
   if (target.equals(Number.class)) {
     return value;
   } else if (target.equals(int.class) || target.equals(Integer.class)) {
     if (value instanceof Integer) {
       return value;
     } else {
       return value.intValue();
     }
   } else if (target.equals(byte.class) || target.equals(Byte.class)) {
     if (value instanceof Byte) {
       return value;
     } else {
       return value.byteValue();
     }
   } else if (target.equals(long.class) || target.equals(Long.class)) {
     if (value instanceof Long) {
       return value;
     } else {
       return value.longValue();
     }
   } else if (target.equals(double.class) || target.equals(Double.class)) {
     if (value instanceof Double) {
       return value;
     } else {
       return value.doubleValue();
     }
   } else if (target.equals(float.class) || target.equals(Float.class)) {
     if (value instanceof Float) {
       return value;
     } else {
       return value.floatValue();
     }
   } else if (target.equals(short.class) || target.equals(Short.class)) {
     if (value instanceof Short) {
       return value;
     } else {
       return value.shortValue();
     }
   }
   return null;
 }
Ejemplo n.º 30
0
  /**
   * Detects whether an attribute is a default value or not. Method temporarily copied from
   * CoreRenderer. Should be replaced by a call of CoreRenderer in the long run.
   *
   * @param value the value to be checked
   * @return true if the value is not the default value
   */
  protected boolean shouldRenderAttribute(Object value) {
    if (value == null) return false;

    if (value instanceof Boolean) {
      return ((Boolean) value).booleanValue();
    } else if (value instanceof Number) {
      Number number = (Number) value;

      if (value instanceof Integer) return number.intValue() != Integer.MIN_VALUE;
      else if (value instanceof Double) return number.doubleValue() != Double.MIN_VALUE;
      else if (value instanceof Long) return number.longValue() != Long.MIN_VALUE;
      else if (value instanceof Byte) return number.byteValue() != Byte.MIN_VALUE;
      else if (value instanceof Float) return number.floatValue() != Float.MIN_VALUE;
      else if (value instanceof Short) return number.shortValue() != Short.MIN_VALUE;
    }

    return true;
  }