org.sql2o.converters.NumberConverter Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of anima Show documentation
Show all versions of anima Show documentation
Operate the database like a stream
package org.sql2o.converters;
/**
* Base class for numeric converters.
*/
public abstract class NumberConverter extends ConverterBase {
private boolean isPrimitive;
public NumberConverter(boolean primitive) {
isPrimitive = primitive;
}
public V convert(Object val) {
if (val == null) {
return isPrimitive ? convertNumberValue(0) : null;
}
// val.getClass().isPrimitive() is ALWAYS false
// since boxing (i.e. Object val=(int)1;)
// changes type from Integet.TYPE to Integer.class
// learn 2 java :)
else if (/*val.getClass().isPrimitive() || */val instanceof Number ) {
return convertNumberValue((Number)val);
}
else if (val instanceof String){
String stringVal = ((String)val).trim();
stringVal = stringVal.isEmpty() ? null : stringVal;
if (stringVal == null) {
return isPrimitive ? convertNumberValue(0) : null;
}
return convertStringValue(stringVal);
}
else{
throw new IllegalArgumentException("Cannot convert type " + val.getClass().toString() + " to " + getTypeDescription());
}
}
protected abstract V convertNumberValue(Number val);
protected abstract V convertStringValue(String val);
protected abstract String getTypeDescription();
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy