org.fhcrc.cpl.toolbox.AbstractConvertHelper.java Source code

Java tutorial

Introduction

Here is the source code for org.fhcrc.cpl.toolbox.AbstractConvertHelper.java

Source

/*
 * Copyright (c) 2003-2012 Fred Hutchinson Cancer Research Center
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
package org.fhcrc.cpl.toolbox;

import org.apache.commons.beanutils.ConvertUtils;
import org.apache.commons.beanutils.Converter;
import org.apache.commons.beanutils.converters.*;

import java.math.BigDecimal;
import java.math.BigInteger;

/**
 * User: arauch
 * Date: Mar 14, 2006
 * Time: 8:56:26 AM
 */
public abstract class AbstractConvertHelper {
    /*
    * Register converters that are shared between cpas and msInspect. Replace default registered converters
    * which return default values (e.g. 0) for errors.
    */
    protected void register() {
        _register(new NullSafeConverter(new BigDecimalConverter()), BigDecimal.class);
        _register(new NullSafeConverter(new BigIntegerConverter()), BigInteger.class);
        _register(new NullSafeConverter(new BooleanArrayConverter()), boolean[].class);
        _register(new ByteConverter(), Byte.TYPE);
        _register(new NullSafeConverter(new ByteConverter()), Byte.class);
        _register(new CharacterConverter(), Character.TYPE);
        _register(new NullSafeConverter(new CharacterConverter()), Character.class);
        _register(new NullSafeConverter(new CharacterArrayConverter()), char[].class);
        _register(new NullSafeConverter(new ClassConverter()), Class.class);
        _register(new NullSafeConverter(new DoubleArrayConverter()), double[].class);
        _register(new FloatArrayConverter(), float[].class);
        _register(new NullSafeConverter(new IntegerArrayConverter()), int[].class);
        _register(new LongConverter(), Long.TYPE);
        _register(new NullSafeConverter(new LongConverter()), Long.class);
        _register(new NullSafeConverter(new LongArrayConverter()), long[].class);
        _register(new ShortConverter(), Short.TYPE);
        _register(new NullSafeConverter(new ShortConverter()), Short.class);
        _register(new NullSafeConverter(new ShortArrayConverter()), short[].class);
        _register(new NullSafeConverter(new StringArrayConverter()), String[].class);
        _register(new NullSafeConverter(new SqlDateConverter()), java.sql.Date.class);
        _register(new NullSafeConverter(new SqlTimeConverter()), java.sql.Time.class);
        _register(new NullSafeConverter(new SqlTimestampConverter()), java.sql.Time.class);
    }

    protected void _register(Converter conv, Class cl) {
        ConvertUtils.register(conv, cl);
    }

    public static class NullSafeConverter implements Converter {
        Converter _converter;

        public NullSafeConverter(Converter converter) {
            _converter = converter;
        }

        public Object convert(Class clss, Object o) {
            if (o instanceof String) {
                o = ((String) o).trim();
                if (((String) o).length() == 0)
                    return null;
            }

            return null == o || "".equals(o) ? null : _converter.convert(clss, o);
        }
    }
}