Class AbstractColumnMapping<K>

  • Type Parameters:
    K - the type of key (attribute/method names or specific method definition with parameter and return types)
    All Implemented Interfaces:
    java.lang.Cloneable
    Direct Known Subclasses:
    ColumnMapping.MethodMapping, ColumnMapping.NameMapping

    abstract class AbstractColumnMapping<K>
    extends java.lang.Object
    implements java.lang.Cloneable
    Basic support operations for mapping attributes/methods to columns in a ColumnMapper
    • Field Summary

      Fields 
      Modifier and Type Field Description
      (package private) java.util.Map<K,​java.lang.Object> mapping  
      (package private) java.lang.String prefix  
    • Method Summary

      All Methods Instance Methods Abstract Methods Concrete Methods 
      Modifier and Type Method Description
      AbstractColumnMapping<K> clone()
      Creates a deep copy of this mapping that is independent from the original.
      (package private) void extractPrefixes​(java.util.Set<java.lang.String> out)
      Returns all prefixes used by the keys in this mapping.
      (package private) abstract K findKey​(java.lang.String nameWithPrefix)
      Locates a given key based on an attribute or method name.
      (package private) abstract java.lang.String getKeyPrefix​(java.lang.String prefix, K key)
      Returns the prefix of a given key, i.e.
      private java.lang.Object getMappedColumn​(K key)  
      (package private) boolean isMapped​(K key)
      Tests whether a given attribute or method is mapped to a column
      (package private) void mapToColumn​(K key, java.lang.Enum<?> column)
      Maps a attribute or method to a column name
      (package private) void mapToColumnIndex​(K key, int columnIndex)
      Maps a attribute or method to a column name
      (package private) void mapToColumnIndexes​(java.util.Map<K,​java.lang.Integer> mappings)
      Maps multiple attributes or methods to multiple column names
      (package private) void mapToColumnName​(K key, java.lang.String columnName)
      Maps a attribute or method to a column name
      (package private) void mapToColumnNames​(java.util.Map<K,​java.lang.String> mappings)
      Maps multiple attributes or methods to multiple column names
      (package private) void mapToColumns​(java.util.Map<K,​java.lang.Enum<?>> mappings)
      Maps multiple attributes or methods to multiple column names
      (package private) abstract K prefixKey​(java.lang.String prefix, K key)
      Transforms the key so it can work with the given prefix.
      (package private) void remove​(java.lang.String nameWithPrefix)
      Removes any mappings containing keys that have a given attribute or method name.
      (package private) boolean updateFieldMapping​(FieldMapping fieldMapping, K key)
      Updates the mapping of a attribute/method so a mapped class member can target a user provided column.
      • Methods inherited from class java.lang.Object

        equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    • Field Detail

      • prefix

        final java.lang.String prefix
      • mapping

        java.util.Map<K,​java.lang.Object> mapping
    • Constructor Detail

      • AbstractColumnMapping

        AbstractColumnMapping​(java.lang.String prefix,
                              AbstractColumnMapping parent)
        Creates a mapping with a prefix.
        Parameters:
        prefix - a dot separated sequence of names that represents the nesting of complex attributes inside a class (e.g customer.contact.phone).
        parent - the parent mapping of columns, relevant only when nested objects' attributes or methods are being mapped.
    • Method Detail

      • mapToColumnName

        void mapToColumnName​(K key,
                             java.lang.String columnName)
        Maps a attribute or method to a column name
        Parameters:
        key - attribute/method name or specific method definition with parameter and return type
        columnName - name of column associated with the given key
      • mapToColumn

        void mapToColumn​(K key,
                         java.lang.Enum<?> column)
        Maps a attribute or method to a column name
        Parameters:
        key - attribute/method name or specific method definition with parameter and return type
        column - enumeration representing the column associated with the given key
      • mapToColumnIndex

        void mapToColumnIndex​(K key,
                              int columnIndex)
        Maps a attribute or method to a column name
        Parameters:
        key - attribute/method name or specific method definition with parameter and return type
        columnIndex - number representing the position of the column associated with the given key
      • mapToColumnNames

        void mapToColumnNames​(java.util.Map<K,​java.lang.String> mappings)
        Maps multiple attributes or methods to multiple column names
        Parameters:
        mappings - the mappings to be added
      • mapToColumns

        void mapToColumns​(java.util.Map<K,​java.lang.Enum<?>> mappings)
        Maps multiple attributes or methods to multiple column names
        Parameters:
        mappings - the mappings to be added
      • mapToColumnIndexes

        void mapToColumnIndexes​(java.util.Map<K,​java.lang.Integer> mappings)
        Maps multiple attributes or methods to multiple column names
        Parameters:
        mappings - the mappings to be added
      • isMapped

        boolean isMapped​(K key)
        Tests whether a given attribute or method is mapped to a column
        Parameters:
        key - the attribute or method name/descriptor
        Returns:
        true if the key is mapped.
      • prefixKey

        abstract K prefixKey​(java.lang.String prefix,
                             K key)
        Transforms the key so it can work with the given prefix.
        Parameters:
        prefix - the current object nesting level, denoted by a dot-separated string of nested attribute names.
        key - the key to transform.
        Returns:
        the transformed key or null if the key can't be used with the given prefix
      • getMappedColumn

        private java.lang.Object getMappedColumn​(K key)
      • updateFieldMapping

        boolean updateFieldMapping​(FieldMapping fieldMapping,
                                   K key)
        Updates the mapping of a attribute/method so a mapped class member can target a user provided column.
        Parameters:
        fieldMapping - a class member that has should be mapped to a column
        key - the attribute name or method specification that matches with the given field.
        Returns:
        true if the mapping has been successfully updated.
      • extractPrefixes

        void extractPrefixes​(java.util.Set<java.lang.String> out)
        Returns all prefixes used by the keys in this mapping. These represent names of nested objects that will be navigated through to access their attributes/methods.
        Parameters:
        out - the set of prefixes to populate.
      • getKeyPrefix

        abstract java.lang.String getKeyPrefix​(java.lang.String prefix,
                                               K key)
        Returns the prefix of a given key, i.e. the current nested object that is being targeted.
        Parameters:
        prefix - the current prefix - a dot separated string with nested attribute names
        key - the attribute name or method definition. If its own prefix starts with the given prefix, the next element after the dot will be returned (if any)
        Returns:
        the name of the next nested object relative to the current prefix.
      • clone

        public AbstractColumnMapping<K> clone()
        Creates a deep copy of this mapping that is independent from the original.
        Overrides:
        clone in class java.lang.Object
        Returns:
        the duplicate of this object.
      • findKey

        abstract K findKey​(java.lang.String nameWithPrefix)
        Locates a given key based on an attribute or method name.
        Parameters:
        nameWithPrefix - name of the attribute or method, prefixed with nested object names that identify the path to the target class member.
        Returns:
        the key formed with the given attribute name or method definition
      • remove

        void remove​(java.lang.String nameWithPrefix)
        Removes any mappings containing keys that have a given attribute or method name.
        Parameters:
        nameWithPrefix - name of the attribute or method, prefixed with nested object names that identify the path to the target class member.