com.jgoodies.binding.value

Class ConverterFactory


public final class ConverterFactory
extends java.lang.Object

A factory that vends ValueModels that convert types, for example Dates to Strings. More formally, a converting ValueModel VM1 converts the type T2 of an object being held as a value in one ValueModel VM2 into another type T1. When reading a value from VM1, instances of T2 are read from VM2 and are converted to T1. When storing a new value to VM1, the type converter will perform the inverse conversion and will convert an instance of T1 to T2.

Type converters should be used judiciously and only to bridge two ValueModels. To bind non-Strings to a text UI component you should better use a javax.swing.JFormattedTextField. They provide a more powerful means to convert strings to objects and handle many cases that arise around invalid input. See also the classes Bindings and BasicComponentFactory on how to bind ValueModels to formatted text fields.

The inner converter implementations have a 'public' visibility to enable reflection access.

Version:
$Revision: 1.9 $
Author:
Karsten Lentzsch
See Also:
ValueModel, Format, javax.swing.JFormattedTextField

Nested Class Summary

static class
ConverterFactory.BooleanNegator
Negates Booleans leaving null unchanged.
static class
ConverterFactory.BooleanToStringConverter
Converts Booleans to Strings and vice-versa using given texts for true, false, and null.
static class
ConverterFactory.DoubleConverter
Converts Doubles using a given multiplier.
static class
ConverterFactory.DoubleToIntegerConverter
Converts Doubles to Integers and vice-versa.
static class
ConverterFactory.FloatConverter
Converts Floats using a given multiplier.
static class
ConverterFactory.FloatToIntegerConverter
Converts Floats to Integers and vice-versa.
static class
ConverterFactory.IntegerConverter
Converts Integers using a given multiplier.
static class
ConverterFactory.LongConverter
Converts Longs using a given multiplier.
static class
ConverterFactory.LongToIntegerConverter
Converts Longs to Integers and vice-versa.
static class
ConverterFactory.StringConverter
Converts Values to Strings and vice-versa using a given Format.

Method Summary

static ValueModel
createBooleanNegator(ValueModel booleanSubject)
Creates and returns a ValueModel that negates Booleans and leaves null unchanged.
static ValueModel
createBooleanToStringConverter(ValueModel booleanSubject, String trueText, String falseText)
Creates and returns a ValueModel that converts Booleans to the associated of the two specified strings, and vice versa.
static ValueModel
createBooleanToStringConverter(ValueModel booleanSubject, String trueText, String falseText, String nullText)
Creates and returns a ValueModel that converts Booleans to the associated of the two specified strings, and vice versa.
static ValueModel
createDoubleConverter(ValueModel doubleSubject, double multiplier)
Creates and returns a ValueModel that converts Doubles using the specified multiplier.
static ValueModel
createDoubleToIntegerConverter(ValueModel doubleSubject)
Creates and returns a ValueModel that converts Doubles to Integer, and vice versa.
static ValueModel
createDoubleToIntegerConverter(ValueModel doubleSubject, int multiplier)
Creates and returns a ValueModel that converts Doubles to Integer, and vice versa.
static ValueModel
createFloatConverter(ValueModel floatSubject, float multiplier)
Creates and returns a ValueModel that converts Floats using the specified multiplier.
static ValueModel
createFloatToIntegerConverter(ValueModel floatSubject)
Creates and returns a ValueModel that converts Floats to Integer, and vice versa.
static ValueModel
createFloatToIntegerConverter(ValueModel floatSubject, int multiplier)
Creates and returns a ValueModel that converts Floats to Integer, and vice versa.
static ValueModel
createIntegerConverter(ValueModel integerSubject, double multiplier)
Creates and returns a ValueModel that converts Integers using the specified multiplier.
static ValueModel
createLongConverter(ValueModel longSubject, double multiplier)
Creates and returns a ValueModel that converts Long using the specified multiplier.
static ValueModel
createLongToIntegerConverter(ValueModel longSubject)
Creates and returns a ValueModel that converts Longs to Integer and vice versa.
static ValueModel
createLongToIntegerConverter(ValueModel longSubject, int multiplier)
Creates and returns a ValueModel that converts Longs to Integer and vice versa.
static ValueModel
createStringConverter(ValueModel subject, Format format)
Creates and returns a ValueModel that converts objects to Strings and vice versa.

Method Details

createBooleanNegator

public static ValueModel createBooleanNegator(ValueModel booleanSubject)
Creates and returns a ValueModel that negates Booleans and leaves null unchanged.

Constraints: The subject is of type Boolean.

Parameters:
booleanSubject - a Boolean ValueModel
Returns:
a ValueModel that inverts Booleans

createBooleanToStringConverter

public static ValueModel createBooleanToStringConverter(ValueModel booleanSubject,
                                                        String trueText,
                                                        String falseText)
Creates and returns a ValueModel that converts Booleans to the associated of the two specified strings, and vice versa. Null values are mapped to an empty string. Ignores cases when setting a text.

Constraints: The subject is of type Boolean.

Parameters:
booleanSubject - a Boolean ValueModel
trueText - the text associated with Boolean.TRUE
falseText - the text associated with Boolean.FALSE
Returns:
a ValueModel that converts boolean to the associated text

createBooleanToStringConverter

public static ValueModel createBooleanToStringConverter(ValueModel booleanSubject,
                                                        String trueText,
                                                        String falseText,
                                                        String nullText)
Creates and returns a ValueModel that converts Booleans to the associated of the two specified strings, and vice versa. Null values are mapped to the specified text. Ignores cases when setting a text.

Constraints: The subject is of type Boolean.

Parameters:
booleanSubject - a Boolean ValueModel
trueText - the text associated with Boolean.TRUE
falseText - the text associated with Boolean.FALSE
nullText - the text associated with null
Returns:
a ValueModel that converts boolean to the associated text

createDoubleConverter

public static ValueModel createDoubleConverter(ValueModel doubleSubject,
                                               double multiplier)
Creates and returns a ValueModel that converts Doubles using the specified multiplier.

Examples: multiplier=100, Double(1.23) -> Double(123), multiplier=1000, Double(1.23) -> Double(1230)

Constraints: The subject is of type Double.

Parameters:
doubleSubject - a Double ValueModel
multiplier - the multiplier used for the conversion
Returns:
a ValueModel that converts Doubles using the specified multiplier
Since:
1.0.2

createDoubleToIntegerConverter

public static ValueModel createDoubleToIntegerConverter(ValueModel doubleSubject)
Creates and returns a ValueModel that converts Doubles to Integer, and vice versa.

Constraints: The subject is of type Double.

Parameters:
doubleSubject - a Double ValueModel
Returns:
a ValueModel that converts Doubles to Integer

createDoubleToIntegerConverter

public static ValueModel createDoubleToIntegerConverter(ValueModel doubleSubject,
                                                        int multiplier)
Creates and returns a ValueModel that converts Doubles to Integer, and vice versa. The multiplier can be used to convert Doubles to percent, permill, etc. For a percentage, set the multiplier to be 100, for a permill, set the multiplier to be 1000.

Examples: multiplier=100, Double(1.23) -> Integer(123), multiplier=1000, Double(1.23) -> Integer(1230)

Constraints: The subject is of type Double.

Parameters:
doubleSubject - a Double ValueModel
multiplier - the multiplier used to convert the Double to Integer
Returns:
a ValueModel that converts Doubles to Integer

createFloatConverter

public static ValueModel createFloatConverter(ValueModel floatSubject,
                                              float multiplier)
Creates and returns a ValueModel that converts Floats using the specified multiplier.

Examples: multiplier=100, Float(1.23) -> Float(123), multiplier=1000, Float(1.23) -> Float(1230)

Constraints: The subject is of type Float.

Parameters:
floatSubject - a Float ValueModel
multiplier - the multiplier used for the conversion
Returns:
a ValueModel that converts Float using the specified multiplier
Since:
1.0.2

createFloatToIntegerConverter

public static ValueModel createFloatToIntegerConverter(ValueModel floatSubject)
Creates and returns a ValueModel that converts Floats to Integer, and vice versa.

Constraints: The subject is of type Float. s

Parameters:
floatSubject - a Float ValueModel
Returns:
a ValueModel that converts Floats to Integer

createFloatToIntegerConverter

public static ValueModel createFloatToIntegerConverter(ValueModel floatSubject,
                                                       int multiplier)
Creates and returns a ValueModel that converts Floats to Integer, and vice versa. The multiplier can be used to convert Floats to percent, permill, etc. For a percentage, set the multiplier to be 100, for a permill, set the multiplier to be 1000.

Constraints: The subject is of type Float.

Parameters:
floatSubject - a Float ValueModel
multiplier - the multiplier used to convert the Float to Integer
Returns:
a ValueModel that converts Floats to Integer

createIntegerConverter

public static ValueModel createIntegerConverter(ValueModel integerSubject,
                                                double multiplier)
Creates and returns a ValueModel that converts Integers using the specified multiplier.

Examples: multiplier=100, Integer(3) -> Integer(300), multiplier=1000, Integer(3) -> Integer(3000)

Constraints: The subject is of type Integer.

Parameters:
integerSubject - a Integer ValueModel
multiplier - the multiplier used for the conversion
Returns:
a ValueModel that converts Integers using the specified multiplier
Since:
1.0.2

createLongConverter

public static ValueModel createLongConverter(ValueModel longSubject,
                                             double multiplier)
Creates and returns a ValueModel that converts Long using the specified multiplier.

Examples: multiplier=100, Long(3) -> Long(300), multiplier=1000, Long(3) -> Long(3000)

Constraints: The subject is of type Long.

Parameters:
longSubject - a Long ValueModel
multiplier - the multiplier used for the conversion
Returns:
a ValueModel that converts Longs using the specified multiplier
Since:
1.0.2

createLongToIntegerConverter

public static ValueModel createLongToIntegerConverter(ValueModel longSubject)
Creates and returns a ValueModel that converts Longs to Integer and vice versa.

Constraints: The subject is of type Long, values written to the converter are of type Integer.

Parameters:
longSubject - a Long ValueModel
Returns:
a ValueModel that converts Longs to Integer

createLongToIntegerConverter

public static ValueModel createLongToIntegerConverter(ValueModel longSubject,
                                                      int multiplier)
Creates and returns a ValueModel that converts Longs to Integer and vice versa.

Constraints: The subject is of type Long, values written to the converter are of type Integer.

Parameters:
longSubject - a Long ValueModel
multiplier - used to multiply the Long when converting to Integer
Returns:
a ValueModel that converts Longs to Integer

createStringConverter

public static ValueModel createStringConverter(ValueModel subject,
                                               Format format)
Creates and returns a ValueModel that converts objects to Strings and vice versa. The conversion is performed by a Format.

Constraints: The subject is of type Object; it must be formattable and parsable via the given Format.

Parameters:
subject - the underlying ValueModel.
format - the Format used to format and parse
Returns:
a ValueModel that converts objects to Strings and vice versa

Copyright © 2002-2008 JGoodies Karsten Lentzsch. All Rights Reserved.