001 /*******************************************************************************
002 * Licensed to the Apache Software Foundation (ASF) under one
003 * or more contributor license agreements. See the NOTICE file
004 * distributed with this work for additional information
005 * regarding copyright ownership. The ASF licenses this file
006 * to you under the Apache License, Version 2.0 (the
007 * "License"); you may not use this file except in compliance
008 * with the License. You may obtain a copy of the License at
009 *
010 * http://www.apache.org/licenses/LICENSE-2.0
011 *
012 * Unless required by applicable law or agreed to in writing,
013 * software distributed under the License is distributed on an
014 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
015 * KIND, either express or implied. See the License for the
016 * specific language governing permissions and limitations
017 * under the License.
018 *******************************************************************************/
019 package org.apache.commons.convert;
020
021 /** Boolean <code>Converter</code> classes. */
022 public class BooleanConverters implements ConverterLoader {
023 /**
024 * An object that converts a <code>Boolean</code> to an <code>Integer</code>.
025 */
026 public static class BooleanToInteger extends AbstractConverter<Boolean, Integer> {
027 public BooleanToInteger() {
028 super(Boolean.class, Integer.class);
029 }
030
031 /**
032 * Returns 1 if <code>obj</code> is true, or zero if
033 * <code>obj</code> is false.
034 */
035 public Integer convert(Boolean obj) throws ConversionException {
036 return obj.booleanValue() ? 1 : 0;
037 }
038 }
039
040 /**
041 * An object that converts an <code>Integer</code> to a <code>Boolean</code>.
042 */
043 public static class IntegerToBoolean extends AbstractConverter<Integer, Boolean> {
044 public IntegerToBoolean() {
045 super(Integer.class, Boolean.class);
046 }
047
048 /**
049 * Returns <code>true</code> if <code>obj</code> is non-zero, or
050 * <code>false</code> if <code>obj</code> is zero.
051 */
052 public Boolean convert(Integer obj) throws ConversionException {
053 return obj.intValue() == 0 ? Boolean.FALSE : Boolean.TRUE;
054 }
055 }
056
057 /**
058 * An object that converts a <code>String</code> to a <code>Boolean</code>.
059 */
060 public static class StringToBoolean extends AbstractConverter<String, Boolean> {
061 public StringToBoolean() {
062 super(String.class, Boolean.class);
063 }
064
065 /**
066 * Returns <code>true</code> if <code>obj</code> equals "true", or
067 * <code>false</code> if <code>obj</code> is any other value. The
068 * test for "true" is case-insensitive.
069 */
070 public Boolean convert(String obj) throws ConversionException {
071 return "TRUE".equals(obj.trim().toUpperCase());
072 }
073 }
074
075 public void loadConverters() {
076 Converters.loadContainedConverters(BooleanConverters.class);
077 Converters.registerConverter(new GenericSingletonToList<Boolean>(Boolean.class));
078 Converters.registerConverter(new GenericSingletonToSet<Boolean>(Boolean.class));
079 Converters.registerConverter(new GenericToStringConverter<Boolean>(Boolean.class));
080 }
081 }