Java源码示例:org.apache.commons.beanutils.converters.IntegerConverter
示例1
@Override
public int[][][] convert(String str) {
if (str == null || str.isEmpty()) {
return new int[0][][];
}
// 格式 1,2;3,4|5,6 => [[[1, 2], [3, 4]], [[5,6]]]
IntegerConverter integerConverter = new IntegerConverter(); // 基本类型
ArrayConverter arrayConverter1 = new ArrayConverter(int[].class, integerConverter); // 一维数组 默认使用逗号分割
ArrayConverter arrayConverter2 = new ArrayConverter(int[][].class, arrayConverter1); // 二维数组
arrayConverter2.setDelimiter(';'); // 使用分号分割
arrayConverter2.setAllowedChars(new char[]{','});
ArrayConverter arrayConverter3 = new ArrayConverter(int[][].class, arrayConverter2); // 二维数组
arrayConverter3.setDelimiter('|'); // 使用竖线分割
arrayConverter3.setAllowedChars(new char[]{';', ','});
return arrayConverter3.convert(int[][][].class, str);
}
示例2
@Override
public int[][][] convert(String str) {
if (str == null || str.isEmpty()) {
return new int[0][][];
}
// 格式 1,2;3,4|5,6 => [[[1, 2], [3, 4]], [[5,6]]]
// 基本类型
IntegerConverter integerConverter = new IntegerConverter();
// 一维数组 默认使用逗号分割
ArrayConverter arrayConverter1 = new ArrayConverter(int[].class, integerConverter);
// 二维数组
ArrayConverter arrayConverter2 = new ArrayConverter(int[][].class, arrayConverter1);
// 使用分号分割
arrayConverter2.setDelimiter(';');
arrayConverter2.setAllowedChars(new char[]{','});
// 二维数组
ArrayConverter arrayConverter3 = new ArrayConverter(int[][].class, arrayConverter2);
// 使用竖线分割
arrayConverter3.setDelimiter('|');
arrayConverter3.setAllowedChars(new char[]{';', ','});
return arrayConverter3.convert(int[][][].class, str);
}
示例3
public @Test void testBadData()
{
Data datum = new Data();
// a fresh datum should be invalid
assertInvalid(datum);
// setting a key is not enough to be valid
datum.setKey("test");
assertInvalid(datum);
// set type to number value to a non-number
datum.setValue("true");
datum.setType("number");
assertInvalid(datum);
// should fail to convert a decimal string to an integer
datum.setValue("0.1");
datum.convertWith(new IntegerConverter());
assertInvalid(datum);
}
示例4
/**
* Returns an Integer representation of the field or a default value in case if the field cannot
* be converted to an Integer.
* @param def the default value to be returned if an error occurs converting the field
* @return an Integer representation of the field
*/
public Integer getInteger(Integer def) {
Integer result = new IntegerConverter(null).convert(Integer.class, prepareValue());
if (result != null) {
double multiplier = getMultiplier();
double offset = getOffset();
if (multiplier != 1.0 || offset != 0.0) {
return (int) Math.round(result * multiplier + offset);
} else {
return result;
}
} else {
return def;
}
}
示例5
private AbstractConverter getConverter() {
FieldFormat fieldFormat = field.getFormat();
int size = fieldFormat.getSize();
switch (fieldFormat.getType()) {
case BOOLEAN: return new BooleanConverter();
case UINT:
if (size < 32) {
return new IntegerConverter();
} else if (size < 64) {
return new LongConverter();
} else {
return new BigIntegerConverter();
}
case SINT:
if (size <= 32) {
return new IntegerConverter();
} else if (size <= 64) {
return new LongConverter();
} else {
return new BigIntegerConverter();
}
case FLOAT_IEE754:
case FLOAT_IEE11073: return size <= 32 ? new FloatConverter() : new DoubleConverter();
case UTF8S:
case UTF16S: return new StringConverter();
default:
throw new IllegalStateException("Unsupported field format: " + fieldFormat.getType());
}
}
示例6
/**
* Register standard default null.
*
* @see ConvertUtilsBean#registerPrimitives(boolean) registerPrimitives(boolean throwException)
* @see ConvertUtilsBean#registerStandard(boolean,boolean) registerStandard(boolean throwException, boolean defaultNull)
* @see ConvertUtilsBean#registerOther(boolean) registerOther(boolean throwException)
* @see ConvertUtilsBean#registerArrays(boolean,int) registerArrays(boolean throwException, int defaultArraySize)
* @see ConvertUtilsBean#deregister(Class) ConvertUtilsBean.deregister(Class)
* @since 1.11.2
*/
public static void registerStandardDefaultNull(){
ConvertUtils.register(new BigDecimalConverter(null), BigDecimal.class);
ConvertUtils.register(new BigIntegerConverter(null), BigInteger.class);
ConvertUtils.register(new BooleanConverter(null), Boolean.class);
ConvertUtils.register(new ByteConverter(null), Byte.class);
ConvertUtils.register(new CharacterConverter(null), Character.class);
ConvertUtils.register(new DoubleConverter(null), Double.class);
ConvertUtils.register(new FloatConverter(null), Float.class);
ConvertUtils.register(new IntegerConverter(null), Integer.class);
ConvertUtils.register(new LongConverter(null), Long.class);
ConvertUtils.register(new ShortConverter(null), Short.class);
ConvertUtils.register(new StringConverter(null), String.class);
}
示例7
/**
* <p>Initialize other global characteristics of the controller servlet.</p>
* Overridden to remove the ConvertUtils.deregister() command that caused problems
* with the concurrent data dictionary load. (KULRNE-4405)
*
* @exception ServletException if we cannot initialize these resources
*/
@Override
protected void initOther() throws ServletException {
String value = null;
value = getServletConfig().getInitParameter("config");
if (value != null) {
config = value;
}
// Backwards compatibility for form beans of Java wrapper classes
// Set to true for strict Struts 1.0 compatibility
value = getServletConfig().getInitParameter("convertNull");
if ("true".equalsIgnoreCase(value)
|| "yes".equalsIgnoreCase(value)
|| "on".equalsIgnoreCase(value)
|| "y".equalsIgnoreCase(value)
|| "1".equalsIgnoreCase(value)) {
convertNull = true;
}
if (convertNull) {
ConvertUtils.register(new BigDecimalConverter(null), BigDecimal.class);
ConvertUtils.register(new BigIntegerConverter(null), BigInteger.class);
ConvertUtils.register(new BooleanConverter(null), Boolean.class);
ConvertUtils.register(new ByteConverter(null), Byte.class);
ConvertUtils.register(new CharacterConverter(null), Character.class);
ConvertUtils.register(new DoubleConverter(null), Double.class);
ConvertUtils.register(new FloatConverter(null), Float.class);
ConvertUtils.register(new IntegerConverter(null), Integer.class);
ConvertUtils.register(new LongConverter(null), Long.class);
ConvertUtils.register(new ShortConverter(null), Short.class);
}
// KULRICE-8176: KFS Notes/Attachments Tab Functionality for Note Text Error - Visible/Special characters, spaces, or tabs
parameterEncoding = getServletConfig().getInitParameter("PARAMETER_ENCODING");
}
示例8
/**
* 将 <code>toBeConvertedValue</code> 转换成 {@link Integer}类型,如果转换不了返回默认值 <code>defaultValue</code>.
*
* <h3>示例:</h3>
*
* <blockquote>
*
* <pre class="code">
* ConvertUtil.toInteger(null,null) = null
* ConvertUtil.toInteger(null,1) = 1
* ConvertUtil.toInteger("aaaa",1) = 1
* ConvertUtil.toInteger(8L,1) = 8
* ConvertUtil.toInteger("8",1) = 8
* ConvertUtil.toInteger(new BigDecimal("8"),1) = 8
* </pre>
*
* <p>
* 如果传入的参数 <code>toBeConvertedValue</code> 是 <b>数组</b>,那么<b>取第一个元素</b>进行转换,参见 {@link AbstractConverter#convertArray(Object)} L227:
* </p>
*
* <pre class="code">
* ConvertUtil.toInteger(new String[] { "1", "2", "3" }, 8) = 1
* </pre>
*
* <p>
* 如果传入的参数 <code>toBeConvertedValue</code> 是 <b>集合</b>,那么<b>取第一个元素</b>进行转换,参见 {@link AbstractConverter#convertArray(Object)} Line234:
* </p>
*
* <pre class="code">
* ConvertUtil.toInteger(toList("1", "2"), 8) = 1
* </pre>
*
* </blockquote>
*
* <p>
* 该方法非常适用 获取request请求的分页参数
* </p>
*
* <h3>示例:</h3>
*
* <blockquote>
*
* 原来的写法:
*
* <pre class="code">
*
* public static Integer getCurrentPageNo(HttpServletRequest request,String pageParamName){
* String pageNoString = RequestUtil.getParameter(request, pageParamName);
* try{
* int pageNo = Integer.parseInt(pageNoString);
* return pageNo;
* }catch (Exception e){
* LOGGER.error(e.getClass().getName(), e);
* }
* return 1; <span style="color:green">// 不带这个参数或者转换异常返回1</span>
* }
*
* </pre>
*
* 现在可以更改成:
*
* <pre class="code">
*
* public static Integer getCurrentPageNo(HttpServletRequest request,String pageParamName){
* String pageNoString = RequestUtil.getParameter(request, pageParamName);
* return ConvertUtil.toInteger(pageNoString, 1);
* }
* </pre>
*
* </blockquote>
*
* @param toBeConvertedValue
* 值
* @param defaultValue
* 默认值
* @return 如果 <code>toBeConvertedValue</code> 是null,返回 <code>defaultValue</code> <br>
* 如果传入的参数 <code>toBeConvertedValue</code> 是 <b>数组</b>,那么<b>取第一个元素</b>进行转换<br>
* 如果传入的参数 <code>toBeConvertedValue</code> 是 <b>集合</b>,那么<b>取第一个元素</b>进行转换<br>
* 如果找不到转换器或者转换的时候出现了异常,返回 <code>defaultValue</code>
* @see org.apache.commons.beanutils.converters.IntegerConverter
* @see org.apache.commons.lang3.ObjectUtils#defaultIfNull(Object, Object)
* @since 1.6.1
*/
public static Integer toInteger(Object toBeConvertedValue,Integer defaultValue){
return new IntegerConverter(defaultValue).convert(Integer.class, toBeConvertedValue);
}