@Override public Object getNativeDataType( Object object ) throws KettleValueException { switch ( getStorageType() ) { case STORAGE_TYPE_BINARY_STRING: return convertBinaryStringToNativeType( (byte[]) object ); case STORAGE_TYPE_INDEXED: return index[(Integer) object]; case STORAGE_TYPE_NORMAL: default: return object; } }
/** * Converts the specified data object to the normal storage type. * * @param object * the data object to convert * @return the data in a normal storage type * @throws KettleValueException * In case there is a data conversion error. */ @Override public Object convertToNormalStorageType( Object object ) throws KettleValueException { if ( object == null ) { return null; } switch ( storageType ) { case STORAGE_TYPE_NORMAL: return object; case STORAGE_TYPE_BINARY_STRING: return convertBinaryStringToNativeType( (byte[]) object ); case STORAGE_TYPE_INDEXED: return index[(Integer) object]; default: throw new KettleValueException( toStringMeta() + " : Unknown storage type [" + storageType + "] while converting to normal storage type" ); } }
return true; // shortcut value = convertBinaryStringToNativeType( (byte[]) data );
return (Long) object; case STORAGE_TYPE_BINARY_STRING: return (Long) convertBinaryStringToNativeType( (byte[]) object ); case STORAGE_TYPE_INDEXED: return (Long) index[( (Integer) object ).intValue()]; return convertStringToInteger( (String) object ); case STORAGE_TYPE_BINARY_STRING: return convertStringToInteger( (String) convertBinaryStringToNativeType( (byte[]) object ) ); case STORAGE_TYPE_INDEXED: return convertStringToInteger( (String) index[( (Integer) object ).intValue()] ); return new Long( Math.round( ( (Double) object ).doubleValue() ) ); case STORAGE_TYPE_BINARY_STRING: return new Long( Math.round( ( (Double) convertBinaryStringToNativeType( (byte[]) object ) ) .doubleValue() ) ); case STORAGE_TYPE_INDEXED: return convertDateToInteger( (Date) object ); case STORAGE_TYPE_BINARY_STRING: return new Long( ( (Date) convertBinaryStringToNativeType( (byte[]) object ) ).getTime() ); case STORAGE_TYPE_INDEXED: return convertDateToInteger( (Date) index[( (Integer) object ).intValue()] ); return new Long( ( (BigDecimal) object ).longValue() ); case STORAGE_TYPE_BINARY_STRING: return new Long( ( (BigDecimal) convertBinaryStringToNativeType( (byte[]) object ) ).longValue() ); case STORAGE_TYPE_INDEXED: return new Long( ( (BigDecimal) index[( (Integer) object ).intValue()] ).longValue() );
return (Double) object; case STORAGE_TYPE_BINARY_STRING: return (Double) convertBinaryStringToNativeType( (byte[]) object ); case STORAGE_TYPE_INDEXED: return (Double) index[( (Integer) object ).intValue()]; return convertStringToNumber( (String) object ); case STORAGE_TYPE_BINARY_STRING: return convertStringToNumber( (String) convertBinaryStringToNativeType( (byte[]) object ) ); case STORAGE_TYPE_INDEXED: return convertStringToNumber( (String) index[( (Integer) object ).intValue()] ); return convertDateToNumber( (Date) object ); case STORAGE_TYPE_BINARY_STRING: return convertDateToNumber( (Date) convertBinaryStringToNativeType( (byte[]) object ) ); case STORAGE_TYPE_INDEXED: return new Double( ( (Date) index[( (Integer) object ).intValue()] ).getTime() ); return new Double( ( (Long) object ).doubleValue() ); case STORAGE_TYPE_BINARY_STRING: return new Double( ( (Long) convertBinaryStringToNativeType( (byte[]) object ) ).doubleValue() ); case STORAGE_TYPE_INDEXED: return new Double( ( (Long) index[( (Integer) object ).intValue()] ).doubleValue() ); return new Double( ( (BigDecimal) object ).doubleValue() ); case STORAGE_TYPE_BINARY_STRING: return new Double( ( (BigDecimal) convertBinaryStringToNativeType( (byte[]) object ) ).doubleValue() ); case STORAGE_TYPE_INDEXED: return new Double( ( (BigDecimal) index[( (Integer) object ).intValue()] ).doubleValue() );
return (BigDecimal) object; case STORAGE_TYPE_BINARY_STRING: return (BigDecimal) convertBinaryStringToNativeType( (byte[]) object ); case STORAGE_TYPE_INDEXED: return (BigDecimal) index[( (Integer) object ).intValue()]; return convertStringToBigNumber( (String) object ); case STORAGE_TYPE_BINARY_STRING: return convertStringToBigNumber( (String) convertBinaryStringToNativeType( (byte[]) object ) ); case STORAGE_TYPE_INDEXED: return convertStringToBigNumber( (String) index[( (Integer) object ).intValue()] ); return BigDecimal.valueOf( ( (Long) object ).longValue() ); case STORAGE_TYPE_BINARY_STRING: return BigDecimal.valueOf( ( (Long) convertBinaryStringToNativeType( (byte[]) object ) ).longValue() ); case STORAGE_TYPE_INDEXED: return BigDecimal.valueOf( ( (Long) index[( (Integer) object ).intValue()] ).longValue() ); return BigDecimal.valueOf( ( (Double) object ).doubleValue() ); case STORAGE_TYPE_BINARY_STRING: return BigDecimal.valueOf( ( (Double) convertBinaryStringToNativeType( (byte[]) object ) ).doubleValue() ); case STORAGE_TYPE_INDEXED: return BigDecimal.valueOf( ( (Double) index[( (Integer) object ).intValue()] ).doubleValue() ); return convertDateToBigNumber( (Date) object ); case STORAGE_TYPE_BINARY_STRING: return convertDateToBigNumber( (Date) convertBinaryStringToNativeType( (byte[]) object ) ); case STORAGE_TYPE_INDEXED: return convertDateToBigNumber( (Date) index[( (Integer) object ).intValue()] );
break; case STORAGE_TYPE_BINARY_STRING: string = convertDateToCompatibleString( (Date) convertBinaryStringToNativeType( (byte[]) object ) ); break; case STORAGE_TYPE_INDEXED: break; case STORAGE_TYPE_BINARY_STRING: string = convertNumberToCompatibleString( (Double) convertBinaryStringToNativeType( (byte[]) object ) ); break; case STORAGE_TYPE_INDEXED: case STORAGE_TYPE_BINARY_STRING: try { string = convertIntegerToCompatibleString( (Long) convertBinaryStringToNativeType( (byte[]) object ) ); } catch ( ClassCastException e ) { string = convertIntegerToCompatibleString( (Long) object );
return (Date) object; case STORAGE_TYPE_BINARY_STRING: return (Date) convertBinaryStringToNativeType( (byte[]) object ); case STORAGE_TYPE_INDEXED: return (Date) index[( (Integer) object ).intValue()]; return convertStringToDate( (String) object ); case STORAGE_TYPE_BINARY_STRING: return convertStringToDate( (String) convertBinaryStringToNativeType( (byte[]) object ) ); case STORAGE_TYPE_INDEXED: return convertStringToDate( (String) index[( (Integer) object ).intValue()] ); return convertNumberToDate( (Double) object ); case STORAGE_TYPE_BINARY_STRING: return convertNumberToDate( (Double) convertBinaryStringToNativeType( (byte[]) object ) ); case STORAGE_TYPE_INDEXED: return convertNumberToDate( (Double) index[( (Integer) object ).intValue()] ); return convertIntegerToDate( (Long) object ); case STORAGE_TYPE_BINARY_STRING: return convertIntegerToDate( (Long) convertBinaryStringToNativeType( (byte[]) object ) ); case STORAGE_TYPE_INDEXED: return convertIntegerToDate( (Long) index[( (Integer) object ).intValue()] ); return convertBigNumberToDate( (BigDecimal) object ); case STORAGE_TYPE_BINARY_STRING: return convertBigNumberToDate( (BigDecimal) convertBinaryStringToNativeType( (byte[]) object ) ); case STORAGE_TYPE_INDEXED: return convertBigNumberToDate( (BigDecimal) index[( (Integer) object ).intValue()] );
return (Boolean) object; case STORAGE_TYPE_BINARY_STRING: return (Boolean) convertBinaryStringToNativeType( (byte[]) object ); case STORAGE_TYPE_INDEXED: return (Boolean) index[( (Integer) object ).intValue()]; return convertStringToBoolean( trim( (String) object ) ); case STORAGE_TYPE_BINARY_STRING: return convertStringToBoolean( trim( (String) convertBinaryStringToNativeType( (byte[]) object ) ) ); case STORAGE_TYPE_INDEXED: return convertStringToBoolean( trim( (String) index[( (Integer) object ).intValue()] ) ); return convertIntegerToBoolean( (Long) object ); case STORAGE_TYPE_BINARY_STRING: return convertIntegerToBoolean( (Long) convertBinaryStringToNativeType( (byte[]) object ) ); case STORAGE_TYPE_INDEXED: return convertIntegerToBoolean( (Long) index[( (Integer) object ).intValue()] ); return convertNumberToBoolean( (Double) object ); case STORAGE_TYPE_BINARY_STRING: return convertNumberToBoolean( (Double) convertBinaryStringToNativeType( (byte[]) object ) ); case STORAGE_TYPE_INDEXED: return convertNumberToBoolean( (Double) index[( (Integer) object ).intValue()] ); return convertBigNumberToBoolean( (BigDecimal) object ); case STORAGE_TYPE_BINARY_STRING: return convertBigNumberToBoolean( (BigDecimal) convertBinaryStringToNativeType( (byte[]) object ) ); case STORAGE_TYPE_INDEXED: return convertBigNumberToBoolean( (BigDecimal) index[( (Integer) object ).intValue()] );
break; case STORAGE_TYPE_BINARY_STRING: string = (String) convertBinaryStringToNativeType( (byte[]) object ); break; case STORAGE_TYPE_INDEXED: break; case STORAGE_TYPE_BINARY_STRING: string = convertDateToString( (Date) convertBinaryStringToNativeType( (byte[]) object ) ); break; case STORAGE_TYPE_INDEXED: break; case STORAGE_TYPE_BINARY_STRING: string = convertNumberToString( (Double) convertBinaryStringToNativeType( (byte[]) object ) ); break; case STORAGE_TYPE_INDEXED: break; case STORAGE_TYPE_BINARY_STRING: string = convertIntegerToString( (Long) convertBinaryStringToNativeType( (byte[]) object ) ); break; case STORAGE_TYPE_INDEXED: break; case STORAGE_TYPE_BINARY_STRING: string = convertBigNumberToString( (BigDecimal) convertBinaryStringToNativeType( (byte[]) object ) ); break; case STORAGE_TYPE_INDEXED:
return convertStringToBinaryString( (String) object ); case STORAGE_TYPE_BINARY_STRING: return convertStringToBinaryString( (String) convertBinaryStringToNativeType( (byte[]) object ) ); case STORAGE_TYPE_INDEXED: return convertStringToBinaryString( (String) index[( (Integer) object ).intValue()] ); return convertStringToBinaryString( convertDateToString( (Date) object ) ); case STORAGE_TYPE_BINARY_STRING: String string = convertDateToString( (Date) convertBinaryStringToNativeType( (byte[]) object ) ); return convertStringToBinaryString( string ); case STORAGE_TYPE_INDEXED: return convertStringToBinaryString( convertNumberToString( (Double) object ) ); case STORAGE_TYPE_BINARY_STRING: String string = convertNumberToString( (Double) convertBinaryStringToNativeType( (byte[]) object ) ); return convertStringToBinaryString( string ); case STORAGE_TYPE_INDEXED: return convertStringToBinaryString( convertIntegerToString( (Long) object ) ); case STORAGE_TYPE_BINARY_STRING: String string = convertIntegerToString( (Long) convertBinaryStringToNativeType( (byte[]) object ) ); return convertStringToBinaryString( string ); case STORAGE_TYPE_INDEXED: case STORAGE_TYPE_BINARY_STRING: String string = convertBigNumberToString( (BigDecimal) convertBinaryStringToNativeType( (byte[]) object ) ); return convertStringToBinaryString( string ); case STORAGE_TYPE_INDEXED: