Class ObjectTypeConverter
- java.lang.Object
-
- org.eclipse.persistence.mappings.converters.ObjectTypeConverter
-
- All Implemented Interfaces:
java.io.Serializable
,CoreConverter<DatabaseMapping,Session>
,org.eclipse.persistence.internal.descriptors.ClassNameConversionRequired
,Converter
- Direct Known Subclasses:
EnumTypeConverter
,JAXBEnumTypeConverter
public class ObjectTypeConverter extends java.lang.Object implements Converter, org.eclipse.persistence.internal.descriptors.ClassNameConversionRequired
Purpose: Object type converter is used to match a fixed number of database data values to Java object value. It can be used when the values on the database and in the Java differ. To create an object type converter, simply specify the set of conversion value pairs. A default value and one-way conversion are also supported for legacy data situations.- See Also:
- Serialized Form
- Author:
- James Sutherland
- Since:
- Toplink 10
-
-
Field Summary
Fields Modifier and Type Field Description protected java.util.Map<java.lang.String,java.lang.String>
addToAttributeOnlyConversionValueStrings
protected java.util.Map
attributeToFieldValues
protected java.util.Map<java.lang.String,java.lang.String>
conversionValueStrings
protected java.lang.String
converterName
protected java.lang.Class
dataType
protected java.lang.String
dataTypeName
protected java.lang.Object
defaultAttributeValue
protected java.lang.String
defaultAttributeValueString
protected java.lang.Class
fieldClassification
protected java.lang.String
fieldClassificationName
protected java.util.Map
fieldToAttributeValues
protected DatabaseMapping
mapping
protected java.lang.Class
objectType
protected java.lang.String
objectTypeName
-
Constructor Summary
Constructors Constructor Description ObjectTypeConverter()
PUBLIC: Default constructor.ObjectTypeConverter(DatabaseMapping mapping)
PUBLIC: Default constructor.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description void
addConversionValue(java.lang.Object fieldValue, java.lang.Object attributeValue)
PUBLIC: A type conversion value is a two-way mapping from the database to the object.void
addConversionValueStrings(java.lang.String dataValue, java.lang.String objectValue)
INTERNAL: Set from JPA processing where we deal with strings only to avoid class loader conflicts.void
addToAttributeOnlyConversionValue(java.lang.Object fieldValue, java.lang.Object attributeValue)
PUBLIC: An attribute only conversion value is a one-way mapping from the database to the object.void
addToAttributeOnlyConversionValueStrings(java.lang.String dataValue, java.lang.String objectValue)
INTERNAL: Set from JPA processing where we deal with strings only to avoid class loader conflicts.void
convertClassNamesToClasses(java.lang.ClassLoader classLoader)
INTERNAL: Convert all the class-name-based settings in this converter to actual class-based settings.java.lang.Object
convertDataValueToObjectValue(java.lang.Object fieldValue, Session session)
INTERNAL: Returns the corresponding attribute value for the specified field value.java.lang.Object
convertObjectValueToDataValue(java.lang.Object attributeValue, Session session)
INTERNAL: Convert to the data value.java.util.Map
getAttributeToFieldValues()
INTERNAL: Get the attribute to field mapping.java.lang.Object
getDefaultAttributeValue()
PUBLIC: The default value can be used if the database can possibly store additional values then those that have been mapped.java.lang.Class
getFieldClassification()
INTERNAL: Get the type of the field value to allow conversion from the database.java.lang.Class
getFieldClassification(org.eclipse.persistence.internal.helper.DatabaseField fieldToClassify)
INTERNAL: Return the classifiction for the field contained in the mapping.java.lang.String
getFieldClassificationName()
java.util.Vector
getFieldToAttributeValueAssociations()
INTERNAL: Return a collection of the field to attribute value associations.java.util.Map
getFieldToAttributeValues()
INTERNAL: Get the field to attribute mapping.protected DatabaseMapping
getMapping()
INTERNAL: Return the mapping.void
initialize(DatabaseMapping mapping, Session session)
INTERNAL: Set the mapping.void
initializeFieldClassification(Session session)
INTERNAL: Set the field classification through searching the fields map.boolean
isMutable()
INTERNAL: If the converter converts the value to a non-atomic value, i.e.protected java.lang.Class
loadClass(java.lang.String className, java.lang.ClassLoader classLoader)
Load the given class name with the given loader.void
mapBooleans()
PUBLIC: This is a very specific protocol which maps fieldValues "T" and "F" to true and false respectively.void
mapGenders()
PUBLIC: This is a very specific protocol which maps fieldValues "F" and "M" to "Female" and "Male" respectively.void
mapResponses()
PUBLIC: This is a very specific protocol which maps fieldValues "Y" and "N" to "Yes" and "No" respectively.void
setAttributeToFieldValues(java.util.Map attributeToFieldValues)
INTERNAL: Set the attribute to field mapping.void
setConverterName(java.lang.String converterName)
INTERNAL: Set from JPA processing where we deal with strings only to avoid class loader conflicts.void
setDataTypeName(java.lang.String dataTypeName)
INTERNAL: Set from JPA processing where we deal with strings only to avoid class loader conflicts.void
setDefaultAttributeValue(java.lang.Object defaultAttributeValue)
PUBLIC: The default value can be used if the database can possibly store additional values then those that have been mapped.void
setDefaultAttributeValueString(java.lang.String defaultAttributeValueString)
INTERNAL: Set from JPA processing where we deal with strings only to avoid class loader conflicts.void
setFieldClassification(java.lang.Class fieldClassification)
INTERNAL: Set the type of the field value to allow conversion from the database.void
setFieldClassificationName(java.lang.String fieldClassificationName)
void
setFieldToAttributeValueAssociations(java.util.Vector fieldToAttributeValueAssociations)
INTERNAL: Set a collection of the field to attribute value associations.void
setFieldToAttributeValues(java.util.Map fieldToAttributeValues)
INTERNAL: Set the field to attribute mapping.protected void
setMapping(DatabaseMapping mapping)
INTERNAL: Set the mapping.void
setObjectTypeName(java.lang.String objectTypeName)
INTERNAL: Set from JPA processing where we deal with strings only to avoid class loader conflicts.protected void
throwInitObjectException(java.lang.Exception exception, java.lang.Class type, java.lang.String value, boolean isData)
INTERNAL:
-
-
-
Field Detail
-
converterName
protected java.lang.String converterName
-
dataType
protected java.lang.Class dataType
-
dataTypeName
protected java.lang.String dataTypeName
-
objectType
protected java.lang.Class objectType
-
objectTypeName
protected java.lang.String objectTypeName
-
conversionValueStrings
protected java.util.Map<java.lang.String,java.lang.String> conversionValueStrings
-
addToAttributeOnlyConversionValueStrings
protected java.util.Map<java.lang.String,java.lang.String> addToAttributeOnlyConversionValueStrings
-
mapping
protected DatabaseMapping mapping
-
fieldToAttributeValues
protected transient java.util.Map fieldToAttributeValues
-
attributeToFieldValues
protected java.util.Map attributeToFieldValues
-
defaultAttributeValue
protected transient java.lang.Object defaultAttributeValue
-
defaultAttributeValueString
protected java.lang.String defaultAttributeValueString
-
fieldClassification
protected transient java.lang.Class fieldClassification
-
fieldClassificationName
protected transient java.lang.String fieldClassificationName
-
-
Constructor Detail
-
ObjectTypeConverter
public ObjectTypeConverter()
PUBLIC: Default constructor.
-
ObjectTypeConverter
public ObjectTypeConverter(DatabaseMapping mapping)
PUBLIC: Default constructor.
-
-
Method Detail
-
addConversionValue
public void addConversionValue(java.lang.Object fieldValue, java.lang.Object attributeValue)
PUBLIC: A type conversion value is a two-way mapping from the database to the object. The database value will be substituted for the object value when read, and the object value will be substituted for database value when written. Note that each field/attribute value must have one and only one attribute/field value to maintain a two-way mapping.
-
addConversionValueStrings
public void addConversionValueStrings(java.lang.String dataValue, java.lang.String objectValue)
INTERNAL: Set from JPA processing where we deal with strings only to avoid class loader conflicts.
-
addToAttributeOnlyConversionValue
public void addToAttributeOnlyConversionValue(java.lang.Object fieldValue, java.lang.Object attributeValue)
PUBLIC: An attribute only conversion value is a one-way mapping from the database to the object. This can be used if multiple database values are desired to be mapped to the same object value. Note that when written only the default value will be used for the attribute, not this value.
-
addToAttributeOnlyConversionValueStrings
public void addToAttributeOnlyConversionValueStrings(java.lang.String dataValue, java.lang.String objectValue)
INTERNAL: Set from JPA processing where we deal with strings only to avoid class loader conflicts.
-
getAttributeToFieldValues
public java.util.Map getAttributeToFieldValues()
INTERNAL: Get the attribute to field mapping.
-
convertClassNamesToClasses
public void convertClassNamesToClasses(java.lang.ClassLoader classLoader)
INTERNAL: Convert all the class-name-based settings in this converter to actual class-based settings. This method is used when converting a project that has been built with class names to a project with classes.- Specified by:
convertClassNamesToClasses
in interfaceorg.eclipse.persistence.internal.descriptors.ClassNameConversionRequired
- Parameters:
classLoader
-
-
loadClass
protected java.lang.Class loadClass(java.lang.String className, java.lang.ClassLoader classLoader)
Load the given class name with the given loader.
-
convertDataValueToObjectValue
public java.lang.Object convertDataValueToObjectValue(java.lang.Object fieldValue, Session session)
INTERNAL: Returns the corresponding attribute value for the specified field value.- Specified by:
convertDataValueToObjectValue
in interfaceConverter
- Specified by:
convertDataValueToObjectValue
in interfaceCoreConverter<DatabaseMapping,Session>
-
getDefaultAttributeValue
public java.lang.Object getDefaultAttributeValue()
PUBLIC: The default value can be used if the database can possibly store additional values then those that have been mapped. Any value retreived from the database that is not mapped will be substitued for the default value.
-
getMapping
protected DatabaseMapping getMapping()
INTERNAL: Return the mapping.
-
setMapping
protected void setMapping(DatabaseMapping mapping)
INTERNAL: Set the mapping.
-
setObjectTypeName
public void setObjectTypeName(java.lang.String objectTypeName)
INTERNAL: Set from JPA processing where we deal with strings only to avoid class loader conflicts.
-
getFieldClassification
public java.lang.Class getFieldClassification()
INTERNAL: Get the type of the field value to allow conversion from the database.
-
getFieldClassificationName
public java.lang.String getFieldClassificationName()
-
getFieldClassification
public java.lang.Class getFieldClassification(org.eclipse.persistence.internal.helper.DatabaseField fieldToClassify)
INTERNAL: Return the classifiction for the field contained in the mapping. This is used to convert the row value to a consistent java value. By default this is null which means unknown.
-
getFieldToAttributeValueAssociations
public java.util.Vector getFieldToAttributeValueAssociations()
INTERNAL: Return a collection of the field to attribute value associations.
-
getFieldToAttributeValues
public java.util.Map getFieldToAttributeValues()
INTERNAL: Get the field to attribute mapping.
-
convertObjectValueToDataValue
public java.lang.Object convertObjectValueToDataValue(java.lang.Object attributeValue, Session session)
INTERNAL: Convert to the data value.- Specified by:
convertObjectValueToDataValue
in interfaceConverter
- Specified by:
convertObjectValueToDataValue
in interfaceCoreConverter<DatabaseMapping,Session>
-
mapBooleans
public void mapBooleans()
PUBLIC: This is a very specific protocol which maps fieldValues "T" and "F" to true and false respectively.
-
mapGenders
public void mapGenders()
PUBLIC: This is a very specific protocol which maps fieldValues "F" and "M" to "Female" and "Male" respectively.
-
mapResponses
public void mapResponses()
PUBLIC: This is a very specific protocol which maps fieldValues "Y" and "N" to "Yes" and "No" respectively.
-
initializeFieldClassification
public void initializeFieldClassification(Session session) throws DescriptorException
INTERNAL: Set the field classification through searching the fields map.- Throws:
DescriptorException
-
initialize
public void initialize(DatabaseMapping mapping, Session session)
INTERNAL: Set the mapping.- Specified by:
initialize
in interfaceConverter
- Specified by:
initialize
in interfaceCoreConverter<DatabaseMapping,Session>
-
setAttributeToFieldValues
public void setAttributeToFieldValues(java.util.Map attributeToFieldValues)
INTERNAL: Set the attribute to field mapping.
-
setConverterName
public void setConverterName(java.lang.String converterName)
INTERNAL: Set from JPA processing where we deal with strings only to avoid class loader conflicts.
-
setDataTypeName
public void setDataTypeName(java.lang.String dataTypeName)
INTERNAL: Set from JPA processing where we deal with strings only to avoid class loader conflicts.
-
setDefaultAttributeValue
public void setDefaultAttributeValue(java.lang.Object defaultAttributeValue)
PUBLIC: The default value can be used if the database can possibly store additional values then those that have been mapped. Any value retreived from the database that is not mapped will be substitued for the default value.
-
setDefaultAttributeValueString
public void setDefaultAttributeValueString(java.lang.String defaultAttributeValueString)
INTERNAL: Set from JPA processing where we deal with strings only to avoid class loader conflicts.
-
setFieldClassification
public void setFieldClassification(java.lang.Class fieldClassification)
INTERNAL: Set the type of the field value to allow conversion from the database.
-
setFieldClassificationName
public void setFieldClassificationName(java.lang.String fieldClassificationName)
-
setFieldToAttributeValueAssociations
public void setFieldToAttributeValueAssociations(java.util.Vector fieldToAttributeValueAssociations)
INTERNAL: Set a collection of the field to attribute value associations.
-
setFieldToAttributeValues
public void setFieldToAttributeValues(java.util.Map fieldToAttributeValues)
INTERNAL: Set the field to attribute mapping.
-
isMutable
public boolean isMutable()
INTERNAL: If the converter converts the value to a non-atomic value, i.e. a value that can have its' parts changed without being replaced, then it must return false, serialization can be non-atomic.
-
throwInitObjectException
protected void throwInitObjectException(java.lang.Exception exception, java.lang.Class type, java.lang.String value, boolean isData)
INTERNAL:
-
-