Class AbstractTypeMapping

  • All Implemented Interfaces:
    ITypeMapping

    public abstract class AbstractTypeMapping
    extends java.lang.Object
    implements ITypeMapping
    This is a default implementation for the ITypeMapping interface which provides default behavor for all common types. Implementors should provide a constructor which the factory (see below) can use and implement getResultSetValue(ResultSet). If needed, doSetValue(PreparedStatement, int, Object) can also be overridden as a counterpart to getResultSetValue(ResultSet). Finally, an implementor should also implement a suitable factory for the TypeMappingRegistry and register it either manually using IManagedContainer.registerFactory(org.eclipse.net4j.util.factory.IFactory) or using the Net4j Extension Point factories.
    Since:
    4.0
    Author:
    Eike Stepper, Stefan Winkler
    • Constructor Detail

      • AbstractTypeMapping

        public AbstractTypeMapping()
        Create a new type mapping
    • Method Detail

      • setDBType

        public final void setDBType​(org.eclipse.net4j.db.DBType dbType)
        Specified by:
        setDBType in interface ITypeMapping
      • getDBType

        public org.eclipse.net4j.db.DBType getDBType()
        Specified by:
        getDBType in interface ITypeMapping
        Returns:
        The db type which is associated with this mapping.
      • setValueFromRevision

        public final void setValueFromRevision​(java.sql.PreparedStatement stmt,
                                               int index,
                                               InternalCDORevision revision)
                                        throws java.sql.SQLException
        Description copied from interface: ITypeMapping
        Set a value of the given revision to the JDBC IDBPreparedStatement using an appropriate setXxx method. The feature from which the value is taken is determined by ITypeMapping.getFeature().
        Specified by:
        setValueFromRevision in interface ITypeMapping
        Parameters:
        stmt - the prepared statement to set the value
        index - the index to use for the setXxx method.
        revision - the revision to get the value to set from.
        Throws:
        java.sql.SQLException - if the setXxx throws it.
      • setDefaultValue

        public final void setDefaultValue​(java.sql.PreparedStatement stmt,
                                          int index)
                                   throws java.sql.SQLException
        Description copied from interface: ITypeMapping
        Set the feature's default value to the JDBC IDBPreparedStatement using an appropriate setXxx method.
        Specified by:
        setDefaultValue in interface ITypeMapping
        Parameters:
        stmt - the prepared statement to set the value
        index - the index to use for the setXxx method.
        Throws:
        java.sql.SQLException - if the setXxx throws it.
      • setValue

        public final void setValue​(java.sql.PreparedStatement stmt,
                                   int index,
                                   java.lang.Object value)
                            throws java.sql.SQLException
        Description copied from interface: ITypeMapping
        Set the given value to the JDBC IDBPreparedStatement using an appropriate setXxx method.
        Specified by:
        setValue in interface ITypeMapping
        Parameters:
        stmt - the prepared statement to set the value
        index - the index to use for the setXxx method.
        value - the value to set.
        Throws:
        java.sql.SQLException - if the setXxx throws it.
      • createDBField

        @Deprecated
        public final void createDBField​(org.eclipse.net4j.db.ddl.IDBTable table)
        Deprecated.
        Specified by:
        createDBField in interface ITypeMapping
      • createDBField

        public final void createDBField​(org.eclipse.net4j.db.ddl.IDBTable table,
                                        java.lang.String fieldName)
        Description copied from interface: ITypeMapping
        Creates the DBField and adds it to the given table. The name of the DBField is explicitly determined by the corresponding parameter.
        Specified by:
        createDBField in interface ITypeMapping
        Parameters:
        table - the table to add this field to.
        fieldName - the name for the DBField.
      • getField

        public final org.eclipse.net4j.db.ddl.IDBField getField()
        Specified by:
        getField in interface ITypeMapping
        Returns:
        The db field which is associated with this mapping.
      • setDBField

        public final void setDBField​(org.eclipse.net4j.db.ddl.IDBTable table,
                                     java.lang.String fieldName)
        Description copied from interface: ITypeMapping
        Sets the DBField. The name of the DBField is explicitly determined by the corresponding parameter.
        Specified by:
        setDBField in interface ITypeMapping
        Parameters:
        table - the table to add this field to.
        fieldName - the name for the DBField.
      • readValueToRevision

        public final void readValueToRevision​(java.sql.ResultSet resultSet,
                                              InternalCDORevision revision)
                                       throws java.sql.SQLException
        Description copied from interface: ITypeMapping
        Read a value from a ResultSet, convert it from the DB to the CDO representation and set it to the feature of the revision. The feature is determined by getFeature() The resultSet field to read from is determined automatically by the internal ITypeMapping.getField() name.
        Specified by:
        readValueToRevision in interface ITypeMapping
        Parameters:
        resultSet - the result set to read from
        revision - the revision to which the value should be set.
        Throws:
        java.sql.SQLException - if reading the value throws an SQLException
      • readValue

        public final java.lang.Object readValue​(java.sql.ResultSet resultSet)
                                         throws java.sql.SQLException
        Description copied from interface: ITypeMapping
        Read the value from a ResultSet and convert it from the DB to the CDO representation. The resultSet field to read from is determined automatically by the internal ITypeMapping.getField() name.
        Specified by:
        readValue in interface ITypeMapping
        Parameters:
        resultSet - the result set to read from
        Returns:
        the read value
        Throws:
        java.sql.SQLException - if reading the value throws an SQLException
      • toString

        public java.lang.String toString()
        Overrides:
        toString in class java.lang.Object
      • getDefaultValue

        protected java.lang.Object getDefaultValue()
      • getRevisionValue

        protected final java.lang.Object getRevisionValue​(InternalCDORevision revision)
      • doSetValue

        protected void doSetValue​(java.sql.PreparedStatement stmt,
                                  int index,
                                  java.lang.Object value)
                           throws java.sql.SQLException
        Implementors could override this method to convert a given value to the database representation and set it to the prepared statement.
        Parameters:
        stmt - the IDBPreparedStatement which is used for DB access
        index - the parameter index in the statement which should be set
        value - the value of the feature which should be written into the DB
        Throws:
        java.sql.SQLException
      • getSqlType

        protected int getSqlType()
        Returns the SQL type of this TypeMapping. The default implementation considers the type map held by the meta-data manager. Subclasses may override.
        Returns:
        The sql type of this TypeMapping.
      • getDBLength

        protected int getDBLength​(org.eclipse.net4j.db.DBType type)
      • getResultSetValue

        protected abstract java.lang.Object getResultSetValue​(java.sql.ResultSet resultSet)
                                                       throws java.sql.SQLException
        Subclasses should implement this method to read the value from the result set. Typical implementations should look similar to this one: resultSet.getString(getField().getName())
        Parameters:
        resultSet - the result set to read from
        Returns:
        the result value read (this has to be compatible with the feature.
        Throws:
        java.sql.SQLException