Class EntityRepositoryImpl<E extends de.digitalcollections.model.identifiable.entity.Entity>
java.lang.Object
de.digitalcollections.cudami.server.backend.impl.database.AbstractPagingSortingFilteringRepositoryImpl
de.digitalcollections.cudami.server.backend.impl.jdbi.JdbiRepositoryImpl<U>
de.digitalcollections.cudami.server.backend.impl.jdbi.UniqueObjectRepositoryImpl<I>
de.digitalcollections.cudami.server.backend.impl.jdbi.identifiable.IdentifiableRepositoryImpl<E>
de.digitalcollections.cudami.server.backend.impl.jdbi.identifiable.entity.EntityRepositoryImpl<E>
- All Implemented Interfaces:
EntityRepository<E>,IdentifiableRepository<E>,PagingSortingFilteringRepository<E>,UniqueObjectRepository<E>
- Direct Known Subclasses:
AgentRepositoryImpl,ArticleRepositoryImpl,CollectionRepositoryImpl,DigitalObjectRepositoryImpl,EventRepositoryImpl,GeoLocationRepositoryImpl,HeadwordEntryRepositoryImpl,ItemRepositoryImpl,ManifestationRepositoryImpl,ProjectRepositoryImpl,TopicRepositoryImpl,WebsiteRepositoryImpl,WorkRepositoryImpl
@Repository
public class EntityRepositoryImpl<E extends de.digitalcollections.model.identifiable.entity.Entity>
extends IdentifiableRepositoryImpl<E>
implements EntityRepository<E>
-
Field Summary
FieldsFields inherited from class de.digitalcollections.cudami.server.backend.impl.jdbi.UniqueObjectRepositoryImpl
additionalReduceRowsBiConsumer, basicReduceRowsBiConsumer, fullReduceRowsBiConsumer, uniqueObjectImplClassFields inherited from class de.digitalcollections.cudami.server.backend.impl.jdbi.JdbiRepositoryImpl
dbi, mappingPrefix, tableAlias, tableNameFields inherited from class de.digitalcollections.cudami.server.backend.impl.database.AbstractPagingSortingFilteringRepositoryImpl
offsetForAlternativePaging -
Constructor Summary
ConstructorsConstructorDescriptionEntityRepositoryImpl(org.jdbi.v3.core.Jdbi dbi, CudamiConfig cudamiConfig, IdentifierRepository identifierRepository, UrlAliasRepository urlAliasRepository) EntityRepositoryImpl(org.jdbi.v3.core.Jdbi dbi, String tableName, String tableAlias, String mappingPrefix, Class<? extends de.digitalcollections.model.identifiable.entity.Entity> entityImplClass, int offsetForAlternativePaging, IdentifierRepository identifierRepository, UrlAliasRepository urlAliasRepository) -
Method Summary
Modifier and TypeMethodDescriptionvoidaddRelatedFileresource(UUID entityUuid, UUID fileResourceUuid) de.digitalcollections.model.list.paging.PageResponse<de.digitalcollections.model.identifiable.entity.Entity>findRelatedEntities(UUID entityUuid, de.digitalcollections.model.list.paging.PageRequest pageRequest) de.digitalcollections.model.list.paging.PageResponse<de.digitalcollections.model.identifiable.resource.FileResource>findRelatedFileResources(UUID entityUuid, de.digitalcollections.model.list.paging.PageRequest pageRequest) getByRefId(long refId) getColumnName(String modelProperty) getRandom(int count) On insert or update these fields will be returned to be processed byUniqueObjectRepositoryImpl.insertUpdateCallback(UniqueObject, Map).protected Stringprotected StringDo not change order! Must match order in getSqlInsertFields!!!getSqlSelectAllFields(String tableAlias, String mappingPrefix) SQL-snippet for fields to be returned for complete field request.
If already all fields are returned with reduced fields request: just return reduced field set here, otherwise add additional fields to reduced set to get all fields.getSqlSelectReducedFields(String tableAlias, String mappingPrefix) protected Stringprotected booleanhasSplitColumn(String propertyName) Override this method for check of split fields that exist in the repository's contextprotected voidinsertUpdateCallback(E identifiable, Map<String, Object> returnedFields) After save and update the returned fields (declared inUniqueObjectRepositoryImpl.getReturnedFieldsOnInsertUpdate()) can be processed here.protected booleanSpecify if this repository handles anEntitysubclass that implements the interfaceNamedEntityso the additional fields are being added properly.voidsave(E entity, Map<String, Object> bindings, BiFunction<String, Map<String, Object>, String> sqlModifier) List<de.digitalcollections.model.identifiable.resource.FileResource>setRelatedFileResources(UUID entityUuid, List<de.digitalcollections.model.identifiable.resource.FileResource> fileResources) voidvoidupdate(E entity, Map<String, Object> bindings, BiFunction<String, Map<String, Object>, String> sqlModifier) Methods inherited from class de.digitalcollections.cudami.server.backend.impl.jdbi.identifiable.IdentifiableRepositoryImpl
addCrossTablePagingAndSorting, addRelatedEntity, create, createAdditionalReduceRowsBiConsumer, createBasicReduceRowsBiConsumer, createFullReduceRowsBiConcumer, deleteByUuids, extendReducedIdentifiable, find, findByLanguageAndInitial, getByIdentifier, getLanguages, retrieveList, retrieveList, retrieveOne, setRelatedEntities, supportsCaseSensitivityForPropertyMethods inherited from class de.digitalcollections.cudami.server.backend.impl.jdbi.UniqueObjectRepositoryImpl
deleteByUuid, execSelectForList, extractUuids, find, find, find, getByUuidAndFiltering, getIndex, getIndex, getSqlSelectAllFields, getSqlSelectAllFieldsJoins, getSqlSelectReducedFields, getSqlSelectReducedFieldsJoins, getUniqueField, retrieveCount, retrieveOne, retrieveOne, save, sqlSelectReducedFieldsMethods inherited from class de.digitalcollections.cudami.server.backend.impl.jdbi.JdbiRepositoryImpl
addFiltering, addFiltering, count, count, escapeTermForJsonpath, execUpdateWithList, execUpdateWithMap, filterByLocalizedTextFields, filterBySplitField, getMappingPrefix, getTableAlias, getTableName, getTargetExpression, getWhereClause, getWhereClauses, mapFilterExpressionsToOtherTableColumnNames, retrieveNextSortIndexForParentChildren, splitToArray, splitToArrayMethods inherited from class de.digitalcollections.cudami.server.backend.impl.database.AbstractPagingSortingFilteringRepositoryImpl
addOrderBy, addPagingAndSorting, getOrderByMethods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, waitMethods inherited from interface de.digitalcollections.cudami.server.backend.api.repository.identifiable.entity.EntityRepository
setRelatedEntitiesMethods inherited from interface de.digitalcollections.cudami.server.backend.api.repository.identifiable.IdentifiableRepository
addRelatedEntity, addRelatedEntity, addRelatedFileresource, findByLanguageAndInitial, findRelatedEntities, findRelatedFileResources, getByIdentifiable, getByIdentifier, getByIdentifier, getLanguages, setRelatedEntities, setRelatedFileResourcesMethods inherited from interface de.digitalcollections.cudami.server.backend.api.repository.PagingSortingFilteringRepository
findMethods inherited from interface de.digitalcollections.cudami.server.backend.api.repository.UniqueObjectRepository
count, create, delete, delete, deleteByUuid, deleteByUuids, getByExample, getByExampleAndFiltering, getByUuid, getByUuidAndFiltering, save, save, saveOrUpdate, update
-
Field Details
-
MAPPING_PREFIX
- See Also:
-
TABLE_ALIAS
- See Also:
-
TABLE_NAME
- See Also:
-
-
Constructor Details
-
EntityRepositoryImpl
@Autowired public EntityRepositoryImpl(org.jdbi.v3.core.Jdbi dbi, CudamiConfig cudamiConfig, IdentifierRepository identifierRepository, UrlAliasRepository urlAliasRepository) -
EntityRepositoryImpl
public EntityRepositoryImpl(org.jdbi.v3.core.Jdbi dbi, String tableName, String tableAlias, String mappingPrefix, Class<? extends de.digitalcollections.model.identifiable.entity.Entity> entityImplClass, int offsetForAlternativePaging, IdentifierRepository identifierRepository, UrlAliasRepository urlAliasRepository)
-
-
Method Details
-
addRelatedFileresource
public void addRelatedFileresource(UUID entityUuid, UUID fileResourceUuid) throws RepositoryException - Specified by:
addRelatedFileresourcein interfaceIdentifiableRepository<E extends de.digitalcollections.model.identifiable.entity.Entity>- Overrides:
addRelatedFileresourcein classIdentifiableRepositoryImpl<E extends de.digitalcollections.model.identifiable.entity.Entity>- Throws:
RepositoryException
-
findRelatedEntities
public de.digitalcollections.model.list.paging.PageResponse<de.digitalcollections.model.identifiable.entity.Entity> findRelatedEntities(UUID entityUuid, de.digitalcollections.model.list.paging.PageRequest pageRequest) throws RepositoryException - Specified by:
findRelatedEntitiesin interfaceIdentifiableRepository<E extends de.digitalcollections.model.identifiable.entity.Entity>- Overrides:
findRelatedEntitiesin classIdentifiableRepositoryImpl<E extends de.digitalcollections.model.identifiable.entity.Entity>- Throws:
RepositoryException
-
findRelatedFileResources
public de.digitalcollections.model.list.paging.PageResponse<de.digitalcollections.model.identifiable.resource.FileResource> findRelatedFileResources(UUID entityUuid, de.digitalcollections.model.list.paging.PageRequest pageRequest) throws RepositoryException - Specified by:
findRelatedFileResourcesin interfaceIdentifiableRepository<E extends de.digitalcollections.model.identifiable.entity.Entity>- Overrides:
findRelatedFileResourcesin classIdentifiableRepositoryImpl<E extends de.digitalcollections.model.identifiable.entity.Entity>- Throws:
RepositoryException
-
getAllowedOrderByFields
- Overrides:
getAllowedOrderByFieldsin classIdentifiableRepositoryImpl<E extends de.digitalcollections.model.identifiable.entity.Entity>- Returns:
- model properties names that are applicable for sorting, will be mapped to database column names using @see #getColumnName
-
getByRefId
- Specified by:
getByRefIdin interfaceEntityRepository<E extends de.digitalcollections.model.identifiable.entity.Entity>- Throws:
RepositoryException
-
getColumnName
- Overrides:
getColumnNamein classIdentifiableRepositoryImpl<E extends de.digitalcollections.model.identifiable.entity.Entity>- 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)
-
getJsonbFields
- Overrides:
getJsonbFieldsin classIdentifiableRepositoryImpl<E extends de.digitalcollections.model.identifiable.entity.Entity>- Returns:
- map containing name of jsonb field and function to get the field value
-
getRandom
- Specified by:
getRandomin interfaceUniqueObjectRepository<E extends de.digitalcollections.model.identifiable.entity.Entity>- Overrides:
getRandomin classIdentifiableRepositoryImpl<E extends de.digitalcollections.model.identifiable.entity.Entity>- Throws:
RepositoryException
-
getReturnedFieldsOnInsertUpdate
Description copied from class:UniqueObjectRepositoryImplOn insert or update these fields will be returned to be processed byUniqueObjectRepositoryImpl.insertUpdateCallback(UniqueObject, Map).- Overrides:
getReturnedFieldsOnInsertUpdatein classUniqueObjectRepositoryImpl<E extends de.digitalcollections.model.identifiable.entity.Entity>- Returns:
- modifiable list of fields, please do not return null
-
getSqlSelectAllFields
Description copied from class:IdentifiableRepositoryImplSQL-snippet for fields to be returned for complete field request.
If already all fields are returned with reduced fields request: just return reduced field set here, otherwise add additional fields to reduced set to get all fields.- Overrides:
getSqlSelectAllFieldsin classIdentifiableRepositoryImpl<E extends de.digitalcollections.model.identifiable.entity.Entity>- Returns:
- SQL snippet
-
getSqlInsertFields
- Overrides:
getSqlInsertFieldsin classIdentifiableRepositoryImpl<E extends de.digitalcollections.model.identifiable.entity.Entity>- Returns:
- SQL for field names for insert statement of
UniqueObject
-
getSqlInsertValues
Description copied from class:UniqueObjectRepositoryImplDo not change order! Must match order in getSqlInsertFields!!!- Overrides:
getSqlInsertValuesin classIdentifiableRepositoryImpl<E extends de.digitalcollections.model.identifiable.entity.Entity>- Returns:
- SQL for value mapping for field names for insert statement of
UniqueObject
-
getSqlSelectReducedFields
- Overrides:
getSqlSelectReducedFieldsin classIdentifiableRepositoryImpl<E extends de.digitalcollections.model.identifiable.entity.Entity>- Returns:
- SQL for fields of reduced field set of
UniqueObject
-
getSqlUpdateFieldValues
- Overrides:
getSqlUpdateFieldValuesin classIdentifiableRepositoryImpl<E extends de.digitalcollections.model.identifiable.entity.Entity>
-
hasSplitColumn
Description copied from class:JdbiRepositoryImplOverride this method for check of split fields that exist in the repository's context- Overrides:
hasSplitColumnin classIdentifiableRepositoryImpl<E extends de.digitalcollections.model.identifiable.entity.Entity>- Parameters:
propertyName- java property name- Returns:
- corresponding split-column for property exists
-
insertUpdateCallback
Description copied from class:UniqueObjectRepositoryImplAfter save and update the returned fields (declared inUniqueObjectRepositoryImpl.getReturnedFieldsOnInsertUpdate()) can be processed here.- Overrides:
insertUpdateCallbackin classUniqueObjectRepositoryImpl<E extends de.digitalcollections.model.identifiable.entity.Entity>- Parameters:
identifiable- the object that was passed to save/updatereturnedFields- returned fields in a map of column names to values
-
isRepoForNamedEntity
protected boolean isRepoForNamedEntity()Specify if this repository handles anEntitysubclass that implements the interfaceNamedEntityso the additional fields are being added properly. -
save
public void save(E entity, Map<String, Object> bindings, BiFunction<String, throws RepositoryExceptionMap<String, Object>, String> sqlModifier) - Overrides:
savein classIdentifiableRepositoryImpl<E extends de.digitalcollections.model.identifiable.entity.Entity>- Throws:
RepositoryException
-
setRelatedFileResources
public List<de.digitalcollections.model.identifiable.resource.FileResource> setRelatedFileResources(UUID entityUuid, List<de.digitalcollections.model.identifiable.resource.FileResource> fileResources) throws RepositoryException - Specified by:
setRelatedFileResourcesin interfaceIdentifiableRepository<E extends de.digitalcollections.model.identifiable.entity.Entity>- Overrides:
setRelatedFileResourcesin classIdentifiableRepositoryImpl<E extends de.digitalcollections.model.identifiable.entity.Entity>- Throws:
RepositoryException
-
update
- Specified by:
updatein interfaceUniqueObjectRepository<E extends de.digitalcollections.model.identifiable.entity.Entity>- Overrides:
updatein classUniqueObjectRepositoryImpl<E extends de.digitalcollections.model.identifiable.entity.Entity>- Throws:
RepositoryException
-
update
public void update(E entity, Map<String, Object> bindings, BiFunction<String, throws RepositoryExceptionMap<String, Object>, String> sqlModifier) - Overrides:
updatein classIdentifiableRepositoryImpl<E extends de.digitalcollections.model.identifiable.entity.Entity>- Throws:
RepositoryException
-