
com.github.dakusui.lisj.func.math.NumCast Maven / Gradle / Ivy
package com.github.dakusui.lisj.func.math;
import static com.github.dakusui.lisj.Basic.get;
import static com.github.dakusui.lisj.Basic.length;
import java.math.BigDecimal;
import java.math.BigInteger;
import com.github.dakusui.jcunit.core.Utils;
import com.github.dakusui.lisj.Context;
import com.github.dakusui.lisj.FormResult;
import com.github.dakusui.lisj.func.BaseFunc;
public abstract class NumCast extends BaseFunc {
/**
* Serial version UID.
*/
private static final long serialVersionUID = 1443793883718558666L;
@Override
protected Object checkParams(Object params) {
Utils.checknull(params);
if (length(params) != 1) {
throw new IllegalArgumentException(msgParameterLengthWrong(1, params));
}
if (get(params, 0) == null) {
throw new IllegalArgumentException(msgFirstParameterIsNull(params));
}
return params;
}
@Override
protected FormResult evaluateLast(Context context,
Object[] evaluatedParams, FormResult lastResult) {
Number value = Utils.bigDecimal(Utils.cast(Number.class, evaluatedParams[0]));
lastResult.value(cast(value));
return lastResult;
}
abstract protected Number cast(Number value);
public static NumCast intValue() {
return (NumCast) new NumCast() {
private static final long serialVersionUID = 7924501536036238003L;
@Override
protected Integer cast(Number value) {
return value.intValue();
}
@Override
public String name() {
return "intValue";
}
};
}
public static NumCast shortValue() {
return (NumCast) new NumCast() {
private static final long serialVersionUID = 6348395673503341773L;
@Override
protected Short cast(Number value) {
return value.shortValue();
}
@Override
public String name() {
return "shortValue";
}
};
}
public static NumCast longValue() {
return (NumCast) new NumCast() {
private static final long serialVersionUID = 2637219747541285577L;
@Override
protected Long cast(Number value) {
return value.longValue();
}
@Override
public String name() {
return "longValue";
}
};
}
public static NumCast byteValue() {
return (NumCast) new NumCast() {
private static final long serialVersionUID = -5880928024002349262L;
@Override
protected Byte cast(Number value) {
return value.byteValue();
}
@Override
public String name() {
return "byteValue";
}
};
}
public static NumCast doubleValue() {
return (NumCast) new NumCast() {
private static final long serialVersionUID = -6719786533694746176L;
@Override
protected Double cast(Number value) {
return value.doubleValue();
}
@Override
public String name() {
return "doubleValue";
}
};
}
public static NumCast floatValue() {
return (NumCast) new NumCast() {
private static final long serialVersionUID = 6544097137166309639L;
@Override
protected Float cast(Number value) {
return value.floatValue();
}
@Override
public String name() {
return "floatValue";
}
};
}
public static NumCast bigDecimal() {
return (NumCast) new NumCast() {
private static final long serialVersionUID = 8094063785372520905L;
@Override
protected BigDecimal cast(Number value) {
return Utils.bigDecimal(value);
}
@Override
public String name() {
return "bigDecimal";
}
};
}
public static NumCast bigInteger() {
return (NumCast) new NumCast() {
private static final long serialVersionUID = 2641750630880999212L;
@Override
protected BigInteger cast(Number value) {
return Utils.bigDecimal(value).toBigInteger();
}
@Override
public String name() {
return "bigInteger";
}
};
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy