Class IdentifiableRepositoryImpl<I extends de.digitalcollections.model.identifiable.Identifiable>

java.lang.Object
All Implemented Interfaces:
IdentifiableRepository<I>
Direct Known Subclasses:
EntityRepositoryImpl, FamilyNameRepositoryImpl, FileResourceMetadataRepositoryImpl, GivenNameRepositoryImpl, WebpageRepositoryImpl

@Repository
public class IdentifiableRepositoryImpl<I extends de.digitalcollections.model.identifiable.Identifiable>
extends JdbiRepositoryImpl
implements IdentifiableRepository<I>
  • Field Summary

    Fields 
    Modifier and Type Field Description
    java.util.function.BiFunction<java.util.Map<java.util.UUID,​I>,​org.jdbi.v3.core.result.RowView,​java.util.Map<java.util.UUID,​I>> additionalReduceRowsBiFunction  
    java.util.function.BiFunction<java.util.Map<java.util.UUID,​I>,​org.jdbi.v3.core.result.RowView,​java.util.Map<java.util.UUID,​I>> basicReduceRowsBiFunction  
    java.util.function.BiFunction<java.util.Map<java.util.UUID,​I>,​org.jdbi.v3.core.result.RowView,​java.util.Map<java.util.UUID,​I>> fullReduceRowsBiFunction  
    protected java.lang.Class identifiableImplClass  
    protected IdentifierRepository identifierRepository  
    static java.lang.String MAPPING_PREFIX  
    protected java.lang.String sqlSelectAllFields  
    protected java.lang.String sqlSelectAllFieldsJoins  
    protected java.lang.String sqlSelectReducedFields  
    static java.lang.String TABLE_ALIAS  
    static java.lang.String TABLE_NAME  

    Fields inherited from class de.digitalcollections.cudami.server.backend.impl.jdbi.JdbiRepositoryImpl

    dbi, mappingPrefix, tableAlias, tableName
  • Constructor Summary

    Constructors 
    Modifier Constructor Description
    protected IdentifiableRepositoryImpl​(org.jdbi.v3.core.Jdbi dbi, IdentifierRepository identifierRepository)  
    protected IdentifiableRepositoryImpl​(org.jdbi.v3.core.Jdbi dbi, IdentifierRepository identifierRepository, java.lang.String tableName, java.lang.String tableAlias, java.lang.String mappingPrefix, java.lang.Class identifiableImplClass, java.lang.String sqlSelectAllFields, java.lang.String sqlSelectReducedFields, java.lang.String sqlInsertFields, java.lang.String sqlInsertValues, java.lang.String sqlUpdateFieldValues)  
    protected IdentifiableRepositoryImpl​(org.jdbi.v3.core.Jdbi dbi, IdentifierRepository identifierRepository, java.lang.String tableName, java.lang.String tableAlias, java.lang.String mappingPrefix, java.lang.Class identifiableImplClass, java.lang.String sqlSelectAllFields, java.lang.String sqlSelectReducedFields, java.lang.String sqlInsertFields, java.lang.String sqlInsertValues, java.lang.String sqlUpdateFieldValues, java.lang.String sqlSelectAllFieldsJoins)  
    protected IdentifiableRepositoryImpl​(org.jdbi.v3.core.Jdbi dbi, IdentifierRepository identifierRepository, java.lang.String tableName, java.lang.String tableAlias, java.lang.String mappingPrefix, java.lang.Class identifiableImplClass, java.lang.String sqlSelectAllFields, java.lang.String sqlSelectReducedFields, java.lang.String sqlInsertFields, java.lang.String sqlInsertValues, java.lang.String sqlUpdateFieldValues, java.lang.String sqlSelectAllFieldsJoins, java.util.function.BiFunction<java.util.Map<java.util.UUID,​I>,​org.jdbi.v3.core.result.RowView,​java.util.Map<java.util.UUID,​I>> additionalReduceRowsBiFunction)  
  • Method Summary

    Modifier and Type Method Description
    void addRelatedEntity​(java.util.UUID identifiableUuid, java.util.UUID entityUuid)  
    void addRelatedFileresource​(java.util.UUID identifiableUuid, java.util.UUID fileResourceUuid)  
    boolean delete​(java.util.List<java.util.UUID> uuids)  
    boolean deleteIdentifiers​(java.util.UUID identifiableUuid)  
    protected java.lang.String escapeTermForJsonpath​(java.lang.String term)
    Escape characters that must not appear in jsonpath inner strings.
    de.digitalcollections.model.paging.PageResponse<I> find​(de.digitalcollections.model.paging.PageRequest pageRequest)  
    protected de.digitalcollections.model.paging.PageResponse<I> find​(de.digitalcollections.model.paging.PageRequest pageRequest, java.lang.String commonSql, java.util.Map<java.lang.String,​java.lang.Object> argumentMappings)  
    de.digitalcollections.model.paging.SearchPageResponse<I> find​(de.digitalcollections.model.paging.SearchPageRequest searchPageRequest)  
    protected de.digitalcollections.model.paging.SearchPageResponse<I> find​(de.digitalcollections.model.paging.SearchPageRequest searchPageRequest, java.lang.String commonSql, java.util.Map<java.lang.String,​java.lang.Object> argumentMappings)  
    java.util.List<I> findAllFull()  
    java.util.List<I> findAllReduced()  
    de.digitalcollections.model.paging.PageResponse<I> findByLanguageAndInitial​(de.digitalcollections.model.paging.PageRequest pageRequest, java.lang.String language, java.lang.String initial)
    Deprecated.
    I findOne​(de.digitalcollections.model.identifiable.Identifier identifier)  
    I findOne​(java.util.UUID uuid, de.digitalcollections.model.filter.Filtering filtering)  
    protected java.util.List<java.lang.String> getAllowedOrderByFields()  
    protected java.lang.String getColumnName​(java.lang.String modelProperty)  
    protected java.lang.String getCommonSearchSql​(java.lang.String tblAlias)  
    int getIndex​(java.util.List<? extends de.digitalcollections.model.identifiable.Identifiable> list, de.digitalcollections.model.identifiable.Identifiable identifiable)  
    int getIndex​(java.util.List<java.util.UUID> list, java.util.UUID uuid)  
    java.util.List<java.util.Locale> getLanguages()  
    java.util.List<de.digitalcollections.model.identifiable.entity.Entity> getRelatedEntities​(java.util.UUID identifiableUuid)  
    java.util.List<de.digitalcollections.model.identifiable.resource.FileResource> getRelatedFileResources​(java.util.UUID identifiableUuid)  
    static java.lang.String getSqlInsertFields()  
    static java.lang.String getSqlInsertValues()  
    java.lang.String getSqlSelectAllFields()  
    static java.lang.String getSqlSelectAllFields​(java.lang.String tableAlias, java.lang.String mappingPrefix)  
    java.lang.String getSqlSelectReducedFields()  
    static java.lang.String getSqlSelectReducedFields​(java.lang.String tableAlias, java.lang.String mappingPrefix)  
    static java.lang.String getSqlUpdateFieldValues()  
    long retrieveCount​(java.lang.StringBuilder sqlCount, java.util.Map<java.lang.String,​java.lang.Object> argumentMappings)  
    java.util.List<I> retrieveList​(java.lang.String fieldsSql, java.lang.StringBuilder innerQuery, java.util.Map<java.lang.String,​java.lang.Object> argumentMappings, java.lang.String orderBy)  
    protected java.lang.Integer retrieveNextSortIndexForParentChildren​(org.jdbi.v3.core.Jdbi dbi, java.lang.String tableName, java.lang.String columNameParentUuid, java.util.UUID parentUuid)  
    I retrieveOne​(java.lang.String fieldsSql, java.lang.String sqlSelectAllFieldsJoins, de.digitalcollections.model.filter.Filtering filtering, java.util.Map<java.lang.String,​java.lang.Object> argumentMappings)  
    I save​(I identifiable, java.util.Map<java.lang.String,​java.lang.Object> bindings)  
    void saveIdentifiers​(java.util.Set<de.digitalcollections.model.identifiable.Identifier> identifiers, de.digitalcollections.model.identifiable.Identifiable identifiable)  
    java.util.List<de.digitalcollections.model.identifiable.entity.Entity> saveRelatedEntities​(java.util.UUID identifiableUuid, java.util.List<de.digitalcollections.model.identifiable.entity.Entity> entities)  
    java.util.List<de.digitalcollections.model.identifiable.resource.FileResource> saveRelatedFileResources​(java.util.UUID identifiableUuid, java.util.List<de.digitalcollections.model.identifiable.resource.FileResource> fileResources)  
    I update​(I identifiable, java.util.Map<java.lang.String,​java.lang.Object> bindings)  

    Methods inherited from class de.digitalcollections.cudami.server.backend.impl.jdbi.JdbiRepositoryImpl

    count, getMappingPrefix, getTableAlias, getTableName

    Methods inherited from class java.lang.Object

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait

    Methods inherited from interface de.digitalcollections.cudami.server.backend.api.repository.identifiable.IdentifiableRepository

    addRelatedEntity, addRelatedFileresource, count, delete, find, findOne, findOneByIdentifier, getRelatedEntities, getRelatedFileResources, save, saveRelatedEntities, saveRelatedFileResources, update
  • Field Details

    • MAPPING_PREFIX

      public static final java.lang.String MAPPING_PREFIX
      See Also:
      Constant Field Values
    • TABLE_ALIAS

      public static final java.lang.String TABLE_ALIAS
      See Also:
      Constant Field Values
    • TABLE_NAME

      public static final java.lang.String TABLE_NAME
      See Also:
      Constant Field Values
    • additionalReduceRowsBiFunction

      public java.util.function.BiFunction<java.util.Map<java.util.UUID,​I extends de.digitalcollections.model.identifiable.Identifiable>,​org.jdbi.v3.core.result.RowView,​java.util.Map<java.util.UUID,​I extends de.digitalcollections.model.identifiable.Identifiable>> additionalReduceRowsBiFunction
    • basicReduceRowsBiFunction

      public final java.util.function.BiFunction<java.util.Map<java.util.UUID,​I extends de.digitalcollections.model.identifiable.Identifiable>,​org.jdbi.v3.core.result.RowView,​java.util.Map<java.util.UUID,​I extends de.digitalcollections.model.identifiable.Identifiable>> basicReduceRowsBiFunction
    • fullReduceRowsBiFunction

      public final java.util.function.BiFunction<java.util.Map<java.util.UUID,​I extends de.digitalcollections.model.identifiable.Identifiable>,​org.jdbi.v3.core.result.RowView,​java.util.Map<java.util.UUID,​I extends de.digitalcollections.model.identifiable.Identifiable>> fullReduceRowsBiFunction
    • identifiableImplClass

      protected final java.lang.Class identifiableImplClass
    • identifierRepository

      protected final IdentifierRepository identifierRepository
    • sqlSelectAllFields

      protected java.lang.String sqlSelectAllFields
    • sqlSelectAllFieldsJoins

      protected final java.lang.String sqlSelectAllFieldsJoins
    • sqlSelectReducedFields

      protected java.lang.String sqlSelectReducedFields
  • Constructor Details

    • IdentifiableRepositoryImpl

      @Autowired protected IdentifiableRepositoryImpl​(org.jdbi.v3.core.Jdbi dbi, IdentifierRepository identifierRepository)
    • IdentifiableRepositoryImpl

      protected IdentifiableRepositoryImpl​(org.jdbi.v3.core.Jdbi dbi, IdentifierRepository identifierRepository, java.lang.String tableName, java.lang.String tableAlias, java.lang.String mappingPrefix, java.lang.Class identifiableImplClass, java.lang.String sqlSelectAllFields, java.lang.String sqlSelectReducedFields, java.lang.String sqlInsertFields, java.lang.String sqlInsertValues, java.lang.String sqlUpdateFieldValues)
    • IdentifiableRepositoryImpl

      protected IdentifiableRepositoryImpl​(org.jdbi.v3.core.Jdbi dbi, IdentifierRepository identifierRepository, java.lang.String tableName, java.lang.String tableAlias, java.lang.String mappingPrefix, java.lang.Class identifiableImplClass, java.lang.String sqlSelectAllFields, java.lang.String sqlSelectReducedFields, java.lang.String sqlInsertFields, java.lang.String sqlInsertValues, java.lang.String sqlUpdateFieldValues, java.lang.String sqlSelectAllFieldsJoins)
    • IdentifiableRepositoryImpl

      protected IdentifiableRepositoryImpl​(org.jdbi.v3.core.Jdbi dbi, IdentifierRepository identifierRepository, java.lang.String tableName, java.lang.String tableAlias, java.lang.String mappingPrefix, java.lang.Class identifiableImplClass, java.lang.String sqlSelectAllFields, java.lang.String sqlSelectReducedFields, java.lang.String sqlInsertFields, java.lang.String sqlInsertValues, java.lang.String sqlUpdateFieldValues, java.lang.String sqlSelectAllFieldsJoins, java.util.function.BiFunction<java.util.Map<java.util.UUID,​I>,​org.jdbi.v3.core.result.RowView,​java.util.Map<java.util.UUID,​I>> additionalReduceRowsBiFunction)
  • Method Details

    • getSqlInsertFields

      public static java.lang.String getSqlInsertFields()
    • getSqlInsertValues

      public static java.lang.String getSqlInsertValues()
    • getSqlSelectAllFields

      public static java.lang.String getSqlSelectAllFields​(java.lang.String tableAlias, java.lang.String mappingPrefix)
    • getSqlSelectReducedFields

      public static java.lang.String getSqlSelectReducedFields​(java.lang.String tableAlias, java.lang.String mappingPrefix)
    • getSqlUpdateFieldValues

      public static java.lang.String getSqlUpdateFieldValues()
    • addRelatedEntity

      public void addRelatedEntity​(java.util.UUID identifiableUuid, java.util.UUID entityUuid)
      Specified by:
      addRelatedEntity in interface IdentifiableRepository<I extends de.digitalcollections.model.identifiable.Identifiable>
    • addRelatedFileresource

      public void addRelatedFileresource​(java.util.UUID identifiableUuid, java.util.UUID fileResourceUuid)
      Specified by:
      addRelatedFileresource in interface IdentifiableRepository<I extends de.digitalcollections.model.identifiable.Identifiable>
    • delete

      public boolean delete​(java.util.List<java.util.UUID> uuids)
      Specified by:
      delete in interface IdentifiableRepository<I extends de.digitalcollections.model.identifiable.Identifiable>
    • deleteIdentifiers

      public boolean deleteIdentifiers​(java.util.UUID identifiableUuid)
      Specified by:
      deleteIdentifiers in interface IdentifiableRepository<I extends de.digitalcollections.model.identifiable.Identifiable>
    • escapeTermForJsonpath

      protected java.lang.String escapeTermForJsonpath​(java.lang.String term)
      Escape characters that must not appear in jsonpath inner strings.

      This method should always be used to clean up strings, e.g. search terms, that are intended to appear in an jsonpath inner string, i.e. between double quotes. If the inserted term contains double quotes then the jsonpath breaks. Hence we remove double quotes at start and end of the provided string (they do not have any meaning for the search at all) and escape the remaining ones with a backslash.

      Parameters:
      term - , can be null
      Returns:
      term with forbidden characters removed or escaped
    • find

      public de.digitalcollections.model.paging.PageResponse<I> find​(de.digitalcollections.model.paging.PageRequest pageRequest)
      Specified by:
      find in interface IdentifiableRepository<I extends de.digitalcollections.model.identifiable.Identifiable>
    • find

      protected de.digitalcollections.model.paging.PageResponse<I> find​(de.digitalcollections.model.paging.PageRequest pageRequest, java.lang.String commonSql, java.util.Map<java.lang.String,​java.lang.Object> argumentMappings)
    • find

      public de.digitalcollections.model.paging.SearchPageResponse<I> find​(de.digitalcollections.model.paging.SearchPageRequest searchPageRequest)
      Specified by:
      find in interface IdentifiableRepository<I extends de.digitalcollections.model.identifiable.Identifiable>
    • find

      protected de.digitalcollections.model.paging.SearchPageResponse<I> find​(de.digitalcollections.model.paging.SearchPageRequest searchPageRequest, java.lang.String commonSql, java.util.Map<java.lang.String,​java.lang.Object> argumentMappings)
    • findAllFull

      public java.util.List<I> findAllFull()
      Specified by:
      findAllFull in interface IdentifiableRepository<I extends de.digitalcollections.model.identifiable.Identifiable>
    • findAllReduced

      public java.util.List<I> findAllReduced()
      Specified by:
      findAllReduced in interface IdentifiableRepository<I extends de.digitalcollections.model.identifiable.Identifiable>
    • findByLanguageAndInitial

      @Deprecated public de.digitalcollections.model.paging.PageResponse<I> findByLanguageAndInitial​(de.digitalcollections.model.paging.PageRequest pageRequest, java.lang.String language, java.lang.String initial)
      Deprecated.
      Specified by:
      findByLanguageAndInitial in interface IdentifiableRepository<I extends de.digitalcollections.model.identifiable.Identifiable>
    • findOne

      public I findOne​(java.util.UUID uuid, de.digitalcollections.model.filter.Filtering filtering)
      Specified by:
      findOne in interface IdentifiableRepository<I extends de.digitalcollections.model.identifiable.Identifiable>
    • findOne

      public I findOne​(de.digitalcollections.model.identifiable.Identifier identifier)
      Specified by:
      findOne in interface IdentifiableRepository<I extends de.digitalcollections.model.identifiable.Identifiable>
    • getAllowedOrderByFields

      protected java.util.List<java.lang.String> getAllowedOrderByFields()
      Specified by:
      getAllowedOrderByFields in class AbstractPagingAndSortingRepositoryImpl
      Returns:
      model properties names that are applicable for sorting, will be mapped to database column names using @see #getColumnName
    • getColumnName

      protected java.lang.String getColumnName​(java.lang.String modelProperty)
      Specified by:
      getColumnName in class AbstractPagingAndSortingRepositoryImpl
      Parameters:
      modelProperty - name of model property passed as String, e.g. "lastModified"
      Returns:
      full qualified column name as used in sql queries ("last_modified" or e.g. "w.last_modified" if prefix used in queries)
    • getCommonSearchSql

      protected java.lang.String getCommonSearchSql​(java.lang.String tblAlias)
    • getIndex

      public int getIndex​(java.util.List<? extends de.digitalcollections.model.identifiable.Identifiable> list, de.digitalcollections.model.identifiable.Identifiable identifiable)
    • getIndex

      public int getIndex​(java.util.List<java.util.UUID> list, java.util.UUID uuid)
    • getLanguages

      public java.util.List<java.util.Locale> getLanguages()
      Specified by:
      getLanguages in interface IdentifiableRepository<I extends de.digitalcollections.model.identifiable.Identifiable>
    • getRelatedEntities

      public java.util.List<de.digitalcollections.model.identifiable.entity.Entity> getRelatedEntities​(java.util.UUID identifiableUuid)
      Specified by:
      getRelatedEntities in interface IdentifiableRepository<I extends de.digitalcollections.model.identifiable.Identifiable>
    • getRelatedFileResources

      public java.util.List<de.digitalcollections.model.identifiable.resource.FileResource> getRelatedFileResources​(java.util.UUID identifiableUuid)
      Specified by:
      getRelatedFileResources in interface IdentifiableRepository<I extends de.digitalcollections.model.identifiable.Identifiable>
    • getSqlSelectAllFields

      public java.lang.String getSqlSelectAllFields()
    • getSqlSelectReducedFields

      public java.lang.String getSqlSelectReducedFields()
    • retrieveCount

      public long retrieveCount​(java.lang.StringBuilder sqlCount, java.util.Map<java.lang.String,​java.lang.Object> argumentMappings)
    • retrieveList

      public java.util.List<I> retrieveList​(java.lang.String fieldsSql, java.lang.StringBuilder innerQuery, java.util.Map<java.lang.String,​java.lang.Object> argumentMappings, java.lang.String orderBy)
    • retrieveNextSortIndexForParentChildren

      protected java.lang.Integer retrieveNextSortIndexForParentChildren​(org.jdbi.v3.core.Jdbi dbi, java.lang.String tableName, java.lang.String columNameParentUuid, java.util.UUID parentUuid)
    • retrieveOne

      public I retrieveOne​(java.lang.String fieldsSql, java.lang.String sqlSelectAllFieldsJoins, de.digitalcollections.model.filter.Filtering filtering, java.util.Map<java.lang.String,​java.lang.Object> argumentMappings)
    • save

      public I save​(I identifiable, java.util.Map<java.lang.String,​java.lang.Object> bindings)
      Specified by:
      save in interface IdentifiableRepository<I extends de.digitalcollections.model.identifiable.Identifiable>
    • saveIdentifiers

      public void saveIdentifiers​(java.util.Set<de.digitalcollections.model.identifiable.Identifier> identifiers, de.digitalcollections.model.identifiable.Identifiable identifiable)
    • saveRelatedEntities

      public java.util.List<de.digitalcollections.model.identifiable.entity.Entity> saveRelatedEntities​(java.util.UUID identifiableUuid, java.util.List<de.digitalcollections.model.identifiable.entity.Entity> entities)
      Specified by:
      saveRelatedEntities in interface IdentifiableRepository<I extends de.digitalcollections.model.identifiable.Identifiable>
    • saveRelatedFileResources

      public java.util.List<de.digitalcollections.model.identifiable.resource.FileResource> saveRelatedFileResources​(java.util.UUID identifiableUuid, java.util.List<de.digitalcollections.model.identifiable.resource.FileResource> fileResources)
      Specified by:
      saveRelatedFileResources in interface IdentifiableRepository<I extends de.digitalcollections.model.identifiable.Identifiable>
    • update

      public I update​(I identifiable, java.util.Map<java.lang.String,​java.lang.Object> bindings)
      Specified by:
      update in interface IdentifiableRepository<I extends de.digitalcollections.model.identifiable.Identifiable>