org.salespointframework.core.data.database
Class DefaultClassFieldMapper

java.lang.Object
  extended by org.salespointframework.core.data.database.DefaultClassFieldMapper
All Implemented Interfaces:
ClassFieldMapper

public class DefaultClassFieldMapper
extends java.lang.Object
implements ClassFieldMapper

This is the default implementation for the ClassFieldMapper deals with annotations

Since:
4.0
Author:
Thomas Kissinger

Field Summary
(package private)  boolean autoAssign
          auto assign unique field ?
(package private)  java.lang.reflect.Constructor cConstructor
          recovery constructor
(package private)  java.lang.String[] cParams
          parameters cConstructor
(package private)  java.lang.Class curClass
          currently analyzed class
(package private)  java.lang.String defaultForeignKey
          default type for foreign keys
(package private)  java.util.Map<java.lang.String,java.lang.String> fkFields
          non-basic fields
(package private)  java.lang.Class implementationKey
          type of surrogate key
(package private)  boolean initClass
          true, if class requests to be initialized
(package private)  java.util.Map<java.lang.String,java.lang.String> java2Sql
          type map from current DatabaseConnection
(package private)  java.util.List<java.lang.reflect.Field> relevantFields
          fields that are relevant for persistence (no static, transient,....)
(package private)  java.util.Map<java.lang.String,java.lang.String> remappings
          data type remappings
(package private)  java.lang.reflect.Field uniqueField
          the unique field
 
Constructor Summary
DefaultClassFieldMapper()
          default constructor
DefaultClassFieldMapper(java.util.Map<java.lang.String,java.lang.String> java2sql)
          constructor
 
Method Summary
 java.lang.String getClassNameFieldType()
          gets db field type for storing class names
 java.lang.String[] getConstructionParameters(java.lang.Class c)
          return parameter which should be passed to constructor
 java.lang.reflect.Constructor getConstructor(java.lang.Class c)
          return the constructor which should be used for instantiation
 java.lang.String getDefaultType()
          get the default type for foreign keys
 java.util.Map<java.lang.reflect.Field,java.lang.Boolean> getDistributionMap(java.lang.Class c, java.lang.Object o)
          DistributionMap indicates for each relevant field, if it should be stored in the record or in a external table true means: local false means: external
 java.lang.Class getImplementationKey(java.lang.Class c)
          Returns the Implementation key for interfaces
 java.util.List<java.lang.reflect.Field> getRelevantFields(java.lang.Class c)
          return a list of all relevant fields e.g. transient, static fields can be excluded
 java.util.Map<java.lang.String,java.lang.String> getSQLFieldMap(java.lang.Class c, java.lang.Object o)
          Maps each relevant field of the class to a (basic) database type
 java.lang.reflect.Field getUniqueField(java.lang.Class c)
          get the unique field of the class
 boolean initializeClass(java.lang.Class c)
          indicates whether the class needs to be initialized via reflections
 java.lang.String isBasicType(java.lang.Class c)
          Update by Jens Grünberg
 boolean isKeyAutoAssigned(java.lang.Class c)
          Check if key should be assigned automatically
 void setDataseConnection(DatabaseConnection dbc)
          current database connection to work with
private  void switchContext(java.lang.Class c)
          analyze this class if changed
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

java2Sql

java.util.Map<java.lang.String,java.lang.String> java2Sql
type map from current DatabaseConnection


relevantFields

java.util.List<java.lang.reflect.Field> relevantFields
fields that are relevant for persistence (no static, transient,....)


remappings

java.util.Map<java.lang.String,java.lang.String> remappings
data type remappings


fkFields

java.util.Map<java.lang.String,java.lang.String> fkFields
non-basic fields


uniqueField

java.lang.reflect.Field uniqueField
the unique field


curClass

java.lang.Class curClass
currently analyzed class


defaultForeignKey

java.lang.String defaultForeignKey
default type for foreign keys


initClass

boolean initClass
true, if class requests to be initialized


cConstructor

java.lang.reflect.Constructor cConstructor
recovery constructor


cParams

java.lang.String[] cParams
parameters cConstructor


implementationKey

java.lang.Class implementationKey
type of surrogate key


autoAssign

boolean autoAssign
auto assign unique field ?

Constructor Detail

DefaultClassFieldMapper

public DefaultClassFieldMapper()
default constructor


DefaultClassFieldMapper

public DefaultClassFieldMapper(java.util.Map<java.lang.String,java.lang.String> java2sql)
constructor

Parameters:
java2sql - typemap
Method Detail

switchContext

private void switchContext(java.lang.Class c)
analyze this class if changed

Parameters:
c -

getSQLFieldMap

public java.util.Map<java.lang.String,java.lang.String> getSQLFieldMap(java.lang.Class c,
                                                                       java.lang.Object o)
Description copied from interface: ClassFieldMapper
Maps each relevant field of the class to a (basic) database type

Specified by:
getSQLFieldMap in interface ClassFieldMapper
Parameters:
c - class to map
o - object to map
Returns:
the field map
See Also:
ClassFieldMapper.getSQLFieldMap(Class, Object)

getUniqueField

public java.lang.reflect.Field getUniqueField(java.lang.Class c)
Description copied from interface: ClassFieldMapper
get the unique field of the class

Specified by:
getUniqueField in interface ClassFieldMapper
Parameters:
c - class to inspect
Returns:
the unique field
See Also:
ClassFieldMapper.getUniqueField(Class)

getDefaultType

public java.lang.String getDefaultType()
Description copied from interface: ClassFieldMapper
get the default type for foreign keys

Specified by:
getDefaultType in interface ClassFieldMapper
Returns:
See Also:
ClassFieldMapper.getDefaultType()

getDistributionMap

public java.util.Map<java.lang.reflect.Field,java.lang.Boolean> getDistributionMap(java.lang.Class c,
                                                                                   java.lang.Object o)
Description copied from interface: ClassFieldMapper
DistributionMap indicates for each relevant field, if it should be stored in the record or in a external table true means: local false means: external

Specified by:
getDistributionMap in interface ClassFieldMapper
Parameters:
c - class to map
o - object to map
Returns:
the ditribution map
See Also:
ClassFieldMapper.getDistributionMap(Class, Object)

getClassNameFieldType

public java.lang.String getClassNameFieldType()
Description copied from interface: ClassFieldMapper
gets db field type for storing class names

Specified by:
getClassNameFieldType in interface ClassFieldMapper
Returns:
See Also:
ClassFieldMapper.getClassNameFieldType()

getRelevantFields

public java.util.List<java.lang.reflect.Field> getRelevantFields(java.lang.Class c)
Description copied from interface: ClassFieldMapper
return a list of all relevant fields e.g. transient, static fields can be excluded

Specified by:
getRelevantFields in interface ClassFieldMapper
Parameters:
c - class to inspect
Returns:
See Also:
ClassFieldMapper.getRelevantFields(Class)

initializeClass

public boolean initializeClass(java.lang.Class c)
Description copied from interface: ClassFieldMapper
indicates whether the class needs to be initialized via reflections

Specified by:
initializeClass in interface ClassFieldMapper
Parameters:
c - class to inspect
Returns:
true if it needs
See Also:
ClassFieldMapper.initializeClass(Class)

getConstructionParameters

public java.lang.String[] getConstructionParameters(java.lang.Class c)
Description copied from interface: ClassFieldMapper
return parameter which should be passed to constructor

Specified by:
getConstructionParameters in interface ClassFieldMapper
Parameters:
c - class to inspect
Returns:
See Also:
ClassFieldMapper.getConstructionParameters(Class)

getConstructor

public java.lang.reflect.Constructor getConstructor(java.lang.Class c)
Description copied from interface: ClassFieldMapper
return the constructor which should be used for instantiation

Specified by:
getConstructor in interface ClassFieldMapper
Parameters:
c - class to inspect
Returns:
See Also:
ClassFieldMapper.getConstructor(Class)

isBasicType

public java.lang.String isBasicType(java.lang.Class c)
Update by Jens Grünberg

Specified by:
isBasicType in interface ClassFieldMapper
Parameters:
c - class to inspect
Returns:
the basic type, or null if not basic

setDataseConnection

public void setDataseConnection(DatabaseConnection dbc)
Description copied from interface: ClassFieldMapper
current database connection to work with

Specified by:
setDataseConnection in interface ClassFieldMapper
See Also:
ClassFieldMapper.setDataseConnection(DatabaseConnection)

getImplementationKey

public java.lang.Class getImplementationKey(java.lang.Class c)
Description copied from interface: ClassFieldMapper
Returns the Implementation key for interfaces

Specified by:
getImplementationKey in interface ClassFieldMapper
Parameters:
c - class to inspect
Returns:
See Also:
ClassFieldMapper.getImplementationKey(Class)

isKeyAutoAssigned

public boolean isKeyAutoAssigned(java.lang.Class c)
Description copied from interface: ClassFieldMapper
Check if key should be assigned automatically

Specified by:
isKeyAutoAssigned in interface ClassFieldMapper
Parameters:
c - Class to inspect
Returns:
true, is auto assigned
See Also:
ClassFieldMapper.isKeyAutoAssigned(Class)