Class ObjectTypeConverter

java.lang.Object
org.eclipse.persistence.mappings.converters.ObjectTypeConverter
All Implemented Interfaces:
Serializable, CoreConverter<DatabaseMapping,Session>, org.eclipse.persistence.internal.descriptors.ClassNameConversionRequired, Converter
Direct Known Subclasses:
EnumTypeConverter, JAXBEnumTypeConverter

public class ObjectTypeConverter extends 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:
Author:
James Sutherland
  • Field Details

    • converterName

      protected String converterName
    • dataType

      protected Class dataType
    • dataTypeName

      protected String dataTypeName
    • objectType

      protected Class objectType
    • objectTypeName

      protected String objectTypeName
    • conversionValueStrings

      protected Map<String,String> conversionValueStrings
    • addToAttributeOnlyConversionValueStrings

      protected Map<String,String> addToAttributeOnlyConversionValueStrings
    • mapping

      protected DatabaseMapping mapping
    • fieldToAttributeValues

      protected transient Map fieldToAttributeValues
    • attributeToFieldValues

      protected Map attributeToFieldValues
    • defaultAttributeValue

      protected transient Object defaultAttributeValue
    • defaultAttributeValueString

      protected String defaultAttributeValueString
    • fieldClassification

      protected transient Class fieldClassification
    • fieldClassificationName

      protected transient String fieldClassificationName
  • Constructor Details

    • ObjectTypeConverter

      public ObjectTypeConverter()
      PUBLIC: Default constructor.
    • ObjectTypeConverter

      public ObjectTypeConverter(DatabaseMapping mapping)
      PUBLIC: Default constructor.
  • Method Details

    • addConversionValue

      public void addConversionValue(Object fieldValue, 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(String dataValue, String objectValue)
      INTERNAL: Set from JPA processing where we deal with strings only to avoid class loader conflicts.
    • addToAttributeOnlyConversionValue

      public void addToAttributeOnlyConversionValue(Object fieldValue, 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(String dataValue, String objectValue)
      INTERNAL: Set from JPA processing where we deal with strings only to avoid class loader conflicts.
    • getAttributeToFieldValues

      public Map getAttributeToFieldValues()
      INTERNAL: Get the attribute to field mapping.
    • convertClassNamesToClasses

      public void convertClassNamesToClasses(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 interface org.eclipse.persistence.internal.descriptors.ClassNameConversionRequired
      Parameters:
      classLoader -
    • loadClass

      protected Class loadClass(String className, ClassLoader classLoader)
      Load the given class name with the given loader.
    • convertDataValueToObjectValue

      public Object convertDataValueToObjectValue(Object fieldValue, Session session)
      INTERNAL: Returns the corresponding attribute value for the specified field value.
      Specified by:
      convertDataValueToObjectValue in interface Converter
      Specified by:
      convertDataValueToObjectValue in interface CoreConverter<DatabaseMapping,Session>
    • getDefaultAttributeValue

      public 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(String objectTypeName)
      INTERNAL: Set from JPA processing where we deal with strings only to avoid class loader conflicts.
    • getFieldClassification

      public Class getFieldClassification()
      INTERNAL: Get the type of the field value to allow conversion from the database.
    • getFieldClassificationName

      public String getFieldClassificationName()
    • getFieldClassification

      public 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 Vector getFieldToAttributeValueAssociations()
      INTERNAL: Return a collection of the field to attribute value associations.
    • getFieldToAttributeValues

      public Map getFieldToAttributeValues()
      INTERNAL: Get the field to attribute mapping.
    • convertObjectValueToDataValue

      public Object convertObjectValueToDataValue(Object attributeValue, Session session)
      INTERNAL: Convert to the data value.
      Specified by:
      convertObjectValueToDataValue in interface Converter
      Specified by:
      convertObjectValueToDataValue in interface CoreConverter<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 interface Converter
      Specified by:
      initialize in interface CoreConverter<DatabaseMapping,Session>
    • setAttributeToFieldValues

      public void setAttributeToFieldValues(Map attributeToFieldValues)
      INTERNAL: Set the attribute to field mapping.
    • setConverterName

      public void setConverterName(String converterName)
      INTERNAL: Set from JPA processing where we deal with strings only to avoid class loader conflicts.
    • setDataTypeName

      public void setDataTypeName(String dataTypeName)
      INTERNAL: Set from JPA processing where we deal with strings only to avoid class loader conflicts.
    • setDefaultAttributeValue

      public void setDefaultAttributeValue(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(String defaultAttributeValueString)
      INTERNAL: Set from JPA processing where we deal with strings only to avoid class loader conflicts.
    • setFieldClassification

      public void setFieldClassification(Class fieldClassification)
      INTERNAL: Set the type of the field value to allow conversion from the database.
    • setFieldClassificationName

      public void setFieldClassificationName(String fieldClassificationName)
    • setFieldToAttributeValueAssociations

      public void setFieldToAttributeValueAssociations(Vector fieldToAttributeValueAssociations)
      INTERNAL: Set a collection of the field to attribute value associations.
    • setFieldToAttributeValues

      public void setFieldToAttributeValues(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.
      Specified by:
      isMutable in interface Converter
    • throwInitObjectException

      protected void throwInitObjectException(Exception exception, Class type, String value, boolean isData)
      INTERNAL: