001    /*
002     *  Copyright 2003-2004 The Apache Software Foundation
003     *
004     *  Licensed under the Apache License, Version 2.0 (the "License");
005     *  you may not use this file except in compliance with the License.
006     *  You may obtain a copy of the License at
007     *
008     *      http://www.apache.org/licenses/LICENSE-2.0
009     *
010     *  Unless required by applicable law or agreed to in writing, software
011     *  distributed under the License is distributed on an "AS IS" BASIS,
012     *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
013     *  See the License for the specific language governing permissions and
014     *  limitations under the License.
015     */
016    package org.apache.commons.convert1;
017    
018    import org.apache.commons.convert1.string.*;
019    import org.apache.commons.convert1.array.*;
020    
021    /**
022     * Basic tasks for the Converting system. Note, this class bears 
023     * no resemblance to the BeanUtils ConvertUtils class. ConvertRegistry 
024     * replaces that class.
025     *
026     * @author Henri Yandell
027     * @since 0.1
028     */
029    public class ConvertUtils {
030    
031        // array, collection, map converters
032        // these converters reuse other converters, so what this does is 
033        // provide collection adaptors
034        public static void registerStandardCollectionConverters(ConvertRegistry registry) {
035            // TODO: Figure out if we have to register primitive arrays
036            // TODO: if long[] is not a subclass of Object[], then 
037            //       we cannot register a converter for it, as we have to 
038            //       know the toClass up front. Maybe allow a wildcard entry
039            //       concept into the registry which maps a fromClass to any 
040            //       toClass.
041            registry.register( new ArrayConverter( registry ), Object[].class, Object[].class );
042        }
043    
044        // aka Parsers
045        public static void registerStandardFromStringConverters(ConvertRegistry registry) {
046            // primitives
047            registry.register( new BooleanConverter(), String.class, Boolean.TYPE );
048            registry.register( new ByteConverter(), String.class, Byte.TYPE );
049            registry.register( new CharacterConverter(), String.class, Character.TYPE );
050            registry.register( new DoubleConverter(), String.class, Double.TYPE );
051            registry.register( new FloatConverter(), String.class, Float.TYPE );
052            registry.register( new IntegerConverter(), String.class, Integer.TYPE );
053            registry.register( new LongConverter(), String.class, Long.TYPE );
054            registry.register( new ShortConverter(), String.class, Short.TYPE );
055    
056            // objects
057            registry.register( new BigDecimalConverter(), String.class, java.math.BigDecimal.class );
058            registry.register( new BigIntegerConverter(), String.class, java.math.BigInteger.class );
059            registry.register( new BooleanConverter(), String.class, Boolean.class );
060            registry.register( new ByteConverter(), String.class, Byte.class );
061            registry.register( new CharacterConverter(), String.class, Character.class );
062            registry.register( new ClassConverter(), String.class, Class.class );
063            registry.register( new DoubleConverter(), String.class, Double.class );
064            registry.register( new FileConverter(), String.class, java.io.File.class );
065            registry.register( new FloatConverter(), String.class, Float.class );
066            registry.register( new IntegerConverter(), String.class, Integer.class );
067            registry.register( new LongConverter(), String.class, Long.class );
068            registry.register( new ShortConverter(), String.class, Short.class );
069            registry.register( new SqlDateConverter(), String.class, java.sql.Date.class );
070            registry.register( new SqlTimeConverter(), String.class, java.sql.Time.class );
071            registry.register( new SqlTimestampConverter(), String.class, java.sql.Timestamp.class );
072            registry.register( new StringConverter(), String.class, String.class );
073            registry.register( new URLConverter(), String.class, java.net.URL.class );
074    
075            registry.register( new ArrayConverter( registry ), String.class, Object[].class );
076    //        registry.register( new CollectionConverter( registry ), String.class, java.util.Collection.class );
077        }
078    
079        // aka Formatters
080        public static void registerStandardToStringConverters(ConvertRegistry registry) {
081            registry.register( new StringConverter(), String.class, String.class );
082        }
083    
084        // includes collections, parsers, formatters and more
085        public static void registerStandardConverters(ConvertRegistry registry) {
086            registerStandardToStringConverters(registry);
087            registerStandardFromStringConverters(registry);
088            registerStandardCollectionConverters(registry);
089        }
090    
091    
092    }