Class MapAttributeFlusher<E,V extends Map<?,?>>
java.lang.Object
com.blazebit.persistence.view.impl.update.flush.AttributeFetchGraphNode<X>
com.blazebit.persistence.view.impl.update.flush.AbstractPluralAttributeFlusher<MapAttributeFlusher<E,V>,MapAction<?>,RecordingMap<?,?,?>,E,V>
com.blazebit.persistence.view.impl.update.flush.MapAttributeFlusher<E,V>
- All Implemented Interfaces:
DirtyChecker<V>,MapDirtyChecker<V,,Object, E> PluralDirtyChecker<V,,E> DirtyAttributeFlusher<MapAttributeFlusher<E,,V>, E, V> FetchGraphNode<MapAttributeFlusher<E,V>>
public class MapAttributeFlusher<E,V extends Map<?,?>>
extends AbstractPluralAttributeFlusher<MapAttributeFlusher<E,V>,MapAction<?>,RecordingMap<?,?,?>,E,V>
implements DirtyAttributeFlusher<MapAttributeFlusher<E,V>,E,V>, MapDirtyChecker<V,Object,E>
- Since:
- 1.2.0
- Author:
- Christian Beikov
-
Nested Class Summary
Nested classes/interfaces inherited from class com.blazebit.persistence.view.impl.update.flush.AbstractPluralAttributeFlusher
AbstractPluralAttributeFlusher.DeepEqualityChecker, AbstractPluralAttributeFlusher.EntityIdWithViewIdEqualityChecker, AbstractPluralAttributeFlusher.EntityWithViewEqualityChecker, AbstractPluralAttributeFlusher.EntryState, AbstractPluralAttributeFlusher.EqualityChecker, AbstractPluralAttributeFlusher.EqualsEqualityChecker, AbstractPluralAttributeFlusher.IdentityEqualityChecker, AbstractPluralAttributeFlusher.PluralFlushOperationNested classes/interfaces inherited from interface com.blazebit.persistence.view.impl.change.DirtyChecker
DirtyChecker.DirtyKind -
Field Summary
Fields inherited from class com.blazebit.persistence.view.impl.update.flush.AbstractPluralAttributeFlusher
cascadeDeleteListener, collectionActions, collectionUpdatable, elementDescriptor, elementDirtyChecker, elementEqualityChecker, elementFlusher, elementFlushers, entityAttributeAccessor, flushOperation, flushStrategy, jpaProviderDeletesCollection, optimisticLockProtected, ownerEntityClass, ownerIdAttributeName, ownerIdBindFragments, ownerIdFlusher, ownerIdWhereFragment, ownerMapping, removeListener, replaceWithReferenceContents, supportsCollectionDml, viewAttributeAccessor, viewOnlyDeleteCascadedFields inherited from class com.blazebit.persistence.view.impl.update.flush.AttributeFetchGraphNode
attributeName, fetch, mapping -
Constructor Summary
ConstructorsModifierConstructorDescriptionprotectedMapAttributeFlusher(MapAttributeFlusher original, boolean fetch) protectedMapAttributeFlusher(MapAttributeFlusher original, boolean fetch, boolean upsert, AbstractPluralAttributeFlusher.PluralFlushOperation flushOperation, List<? extends MapAction<?>> collectionActions, List<CollectionElementAttributeFlusher<E, V>> elementFlushers) MapAttributeFlusher(String attributeName, String mapping, Class<?> ownerEntityClass, String ownerIdAttributeName, String ownerMapping, DirtyAttributeFlusher<?, ?, ?> ownerIdFlusher, DirtyAttributeFlusher<?, ?, ?> elementFlusher, boolean supportsCollectionDml, FlushStrategy flushStrategy, AttributeAccessor attributeMapper, InitialValueAttributeAccessor viewAttributeAccessor, boolean optimisticLockProtected, boolean collectionUpdatable, CollectionRemoveListener keyCascadeDeleteListener, CollectionRemoveListener elementCascadeDeleteListener, CollectionRemoveListener keyRemoveListener, CollectionRemoveListener elementRemoveListener, boolean viewOnlyDeleteCascaded, boolean jpaProviderDeletesCollection, TypeDescriptor keyDescriptor, TypeDescriptor elementDescriptor, MapViewToEntityMapper mapper, MapViewToEntityMapper loadOnlyMapper, MapInstantiatorImplementor<?, ?> mapInstantiator) -
Method Summary
Modifier and TypeMethodDescriptionprotected voidaddElements(UpdateContext context, Object ownerView, Object view, Map<Object, Object> removedAllObjects, boolean flushAtOnce, V value, Map<Object, Object> embeddablesToUpdate, FusedMapActions fusedCollectionActions, boolean initialKnown) protected voidaddFlatViewElementFlushActions(UpdateContext context, TypeDescriptor typeDescriptor, List<MapAction<?>> actions, V current) appendRemoveSpecific(UpdateContext context, DeleteCriteriaBuilder<?> deleteCb, FusedMapActions fusedCollectionActions) protected booleanprotected booleancollectionEquals(V initial, V current) protected final DeleteCriteriaBuilder<?>createCollectionDeleter(UpdateContext context) protected Vprotected VcreateJpaMap(int size) protected VcreateMap(int size) protected CollectionElementAttributeFlusher<E,V> createMergeFlusher(TypeDescriptor typeDescriptor, Object element) protected CollectionElementAttributeFlusher<E,V> createPersistFlusher(TypeDescriptor typeDescriptor, Object element) protected RecordingMap<?,?, ?> createRecordingMap(int size) protected booleandeleteElements(UpdateContext context, Object ownerView, Object view, V value, boolean removeSpecific, FusedMapActions fusedCollectionActions, boolean deleteAll) determineCollectionActions(UpdateContext context, V initial, V current, AbstractPluralAttributeFlusher.EqualityChecker equalityChecker) protected DirtyAttributeFlusher<MapAttributeFlusher<E,V>, E, V> determineDirtyFlusherForNewCollection(UpdateContext context, V initial, V current) determineJpaCollectionActions(UpdateContext context, V initial, V current, AbstractPluralAttributeFlusher.EqualityChecker equalityChecker) protected voidflushCollectionOperations(UpdateContext context, Object ownerView, Object view, V initial, V value, Map<Object, Object> embeddablesToUpdate, FusedMapActions fusedCollectionActions, boolean initialKnown) booleanflushEntity(UpdateContext context, E entity, Object ownerView, Object view, V value, Runnable postReplaceListener) javax.persistence.QueryflushQuery(UpdateContext context, String parameterPrefix, UpdateQueryFactory queryFactory, javax.persistence.Query query, Object ownerView, Object view, V current, UnmappedOwnerAwareDeleter ownerAwareDeleter, DirtyAttributeFlusher<?, ?, ?> ownerFlusher) getDirtyFlusher(UpdateContext context, Object view, Object initial, Object current) protected DirtyAttributeFlusher<MapAttributeFlusher<E,V>, E, V> getDirtyFlusherForRecordingCollection(UpdateContext context, RecordingMap<?, ?, ?> collection) getDirtyKind(V initial, V current) Returns the dirty kind of the objects.getElementDirtyChecker(E element) protected List<CollectionElementAttributeFlusher<E,V>> getElementFlushers(UpdateContext context, V current, List<? extends MapAction<?>> actions) protected FusedMapActionsgetFusedOperations(List<? extends MapAction<?>> collectionActions) getKeyDirtyChecker(Object element) <X> DirtyChecker<X>[]getNestedCheckers(V current) getNewInitialValue(UpdateContext context, V clonedValue, V currentValue) protected voidinvokeCollectionAction(UpdateContext context, Object ownerView, Object view, V targetCollection, Object value, List<? extends MapAction<?>> collectionActions) protected booleanbooleanbooleanprotected booleanmergeCollectionElements(UpdateContext context, Object ownerView, Object view, E entity, V value) protected MapAttributeFlusher<E,V> partialFlusher(boolean fetch, boolean upsert, AbstractPluralAttributeFlusher.PluralFlushOperation operation, List<? extends MapAction<?>> collectionActions, List<CollectionElementAttributeFlusher<E, V>> elementFlushers) protected MapAttributeFlusher<E,V> partialFlusher(boolean fetch, AbstractPluralAttributeFlusher.PluralFlushOperation operation, List<? extends MapAction<?>> collectionActions, List<CollectionElementAttributeFlusher<E, V>> elementFlushers) protected final <X> XpersistOrMergeKey(UpdateContext context, javax.persistence.EntityManager em, X object) remove(UpdateContext context, E entity, Object view, V value) voidremove(UpdateContext context, Object id) removeByOwnerId(UpdateContext context, Object id) voidremoveFromEntity(UpdateContext context, E entity) replaceActions(V value) protected voidreplaceCollection(UpdateContext context, Object ownerView, Object view, E entity, V value, FlushStrategy flushStrategy) protected VreplaceWithRecordingCollection(UpdateContext context, Object view, V value, List<? extends MapAction<?>> actions) booleanMethods inherited from class com.blazebit.persistence.view.impl.update.flush.AbstractPluralAttributeFlusher
appendUpdateQueryFragment, determineElementFlushers, getElementIdAttributeName, getElementOnlyFlusher, getEntityAttributeAccessor, getEntityAttributeValue, getLockOwner, getMapping, getNestedGraphNode, getReplaceOrMergeAndElementFlusher, getReplaceOrMergeOnlyFlusher, getReplayAndElementFlusher, getReplayOnlyFlusher, getViewAttributeAccessor, getViewElement, identityContains, invokeFlushOperation, isOptimisticLockProtected, loadForEntityFlush, persistIfNeeded, persistOrMerge, persistOrMerge, requiresDeferredFlush, requiresFlushAfterPersist, supportsQueryFlushMethods inherited from class com.blazebit.persistence.view.impl.update.flush.AttributeFetchGraphNode
appendFetchJoinQueryFragment, getAttributeName, mergeWithMethods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, waitMethods inherited from interface com.blazebit.persistence.view.impl.update.flush.DirtyAttributeFlusher
appendFetchJoinQueryFragment, appendUpdateQueryFragment, getElementIdAttributeName, getEntityAttributeAccessor, getLockOwner, getViewAttributeAccessor, isOptimisticLockProtected, loadForEntityFlush, requiresDeferredFlush, requiresFlushAfterPersist, supportsQueryFlushMethods inherited from interface com.blazebit.persistence.view.impl.update.flush.FetchGraphNode
getAttributeName, getMapping, mergeWith
-
Constructor Details
-
MapAttributeFlusher
public MapAttributeFlusher(String attributeName, String mapping, Class<?> ownerEntityClass, String ownerIdAttributeName, String ownerMapping, DirtyAttributeFlusher<?, ?, ?> ownerIdFlusher, DirtyAttributeFlusher<?, ?, ?> elementFlusher, boolean supportsCollectionDml, FlushStrategy flushStrategy, AttributeAccessor attributeMapper, InitialValueAttributeAccessor viewAttributeAccessor, boolean optimisticLockProtected, boolean collectionUpdatable, CollectionRemoveListener keyCascadeDeleteListener, CollectionRemoveListener elementCascadeDeleteListener, CollectionRemoveListener keyRemoveListener, CollectionRemoveListener elementRemoveListener, boolean viewOnlyDeleteCascaded, boolean jpaProviderDeletesCollection, TypeDescriptor keyDescriptor, TypeDescriptor elementDescriptor, MapViewToEntityMapper mapper, MapViewToEntityMapper loadOnlyMapper, MapInstantiatorImplementor<?, ?> mapInstantiator) -
MapAttributeFlusher
-
MapAttributeFlusher
protected MapAttributeFlusher(MapAttributeFlusher original, boolean fetch, boolean upsert, AbstractPluralAttributeFlusher.PluralFlushOperation flushOperation, List<? extends MapAction<?>> collectionActions, List<CollectionElementAttributeFlusher<E, V>> elementFlushers)
-
-
Method Details
-
createMap
-
createJpaMap
-
createJpaCollection
- Specified by:
createJpaCollectionin classAbstractPluralAttributeFlusher<MapAttributeFlusher<E,V extends Map<?, ?>>, MapAction<?>, RecordingMap<?, ?, ?>, E, V extends Map<?, ?>>
-
createRecordingMap
-
cloneDeep
- Specified by:
cloneDeepin interfaceDirtyAttributeFlusher<MapAttributeFlusher<E,V extends Map<?, ?>>, E, V extends Map<?, ?>>
-
getNewInitialValue
- Specified by:
getNewInitialValuein interfaceDirtyAttributeFlusher<MapAttributeFlusher<E,V extends Map<?, ?>>, E, V extends Map<?, ?>>
-
isPassThrough
public boolean isPassThrough()- Specified by:
isPassThroughin interfaceDirtyAttributeFlusher<MapAttributeFlusher<E,V extends Map<?, ?>>, E, V extends Map<?, ?>> - Overrides:
isPassThroughin classAbstractPluralAttributeFlusher<MapAttributeFlusher<E,V extends Map<?, ?>>, MapAction<?>, RecordingMap<?, ?, ?>, E, V extends Map<?, ?>>
-
isIndexed
protected boolean isIndexed()- Specified by:
isIndexedin classAbstractPluralAttributeFlusher<MapAttributeFlusher<E,V extends Map<?, ?>>, MapAction<?>, RecordingMap<?, ?, ?>, E, V extends Map<?, ?>>
-
addFlatViewElementFlushActions
protected void addFlatViewElementFlushActions(UpdateContext context, TypeDescriptor typeDescriptor, List<MapAction<?>> actions, V current) - Specified by:
addFlatViewElementFlushActionsin classAbstractPluralAttributeFlusher<MapAttributeFlusher<E,V extends Map<?, ?>>, MapAction<?>, RecordingMap<?, ?, ?>, E, V extends Map<?, ?>>
-
invokeCollectionAction
protected void invokeCollectionAction(UpdateContext context, Object ownerView, Object view, V targetCollection, Object value, List<? extends MapAction<?>> collectionActions) - Specified by:
invokeCollectionActionin classAbstractPluralAttributeFlusher<MapAttributeFlusher<E,V extends Map<?, ?>>, MapAction<?>, RecordingMap<?, ?, ?>, E, V extends Map<?, ?>>
-
replaceWithRecordingCollection
protected V replaceWithRecordingCollection(UpdateContext context, Object view, V value, List<? extends MapAction<?>> actions) - Specified by:
replaceWithRecordingCollectionin classAbstractPluralAttributeFlusher<MapAttributeFlusher<E,V extends Map<?, ?>>, MapAction<?>, RecordingMap<?, ?, ?>, E, V extends Map<?, ?>>
-
flushQuery
public javax.persistence.Query flushQuery(UpdateContext context, String parameterPrefix, UpdateQueryFactory queryFactory, javax.persistence.Query query, Object ownerView, Object view, V current, UnmappedOwnerAwareDeleter ownerAwareDeleter, DirtyAttributeFlusher<?, ?, ?> ownerFlusher) - Specified by:
flushQueryin interfaceDirtyAttributeFlusher<MapAttributeFlusher<E,V extends Map<?, ?>>, E, V extends Map<?, ?>> - Overrides:
flushQueryin classAbstractPluralAttributeFlusher<MapAttributeFlusher<E,V extends Map<?, ?>>, MapAction<?>, RecordingMap<?, ?, ?>, E, V extends Map<?, ?>>
-
createCollectionDeleter
-
appendRemoveSpecific
protected Map<Object,Object> appendRemoveSpecific(UpdateContext context, DeleteCriteriaBuilder<?> deleteCb, FusedMapActions fusedCollectionActions) -
deleteElements
protected boolean deleteElements(UpdateContext context, Object ownerView, Object view, V value, boolean removeSpecific, FusedMapActions fusedCollectionActions, boolean deleteAll) -
addElements
-
flushCollectionOperations
protected void flushCollectionOperations(UpdateContext context, Object ownerView, Object view, V initial, V value, Map<Object, Object> embeddablesToUpdate, FusedMapActions fusedCollectionActions, boolean initialKnown) -
flushEntity
public boolean flushEntity(UpdateContext context, E entity, Object ownerView, Object view, V value, Runnable postReplaceListener) - Specified by:
flushEntityin interfaceDirtyAttributeFlusher<MapAttributeFlusher<E,V extends Map<?, ?>>, E, V extends Map<?, ?>>
-
replaceActions
-
remove
- Specified by:
removein interfaceDirtyAttributeFlusher<MapAttributeFlusher<E,V extends Map<?, ?>>, E, V extends Map<?, ?>>
-
removeByOwnerId
- Specified by:
removeByOwnerIdin interfaceDirtyAttributeFlusher<MapAttributeFlusher<E,V extends Map<?, ?>>, E, V extends Map<?, ?>>
-
remove
- Specified by:
removein interfaceDirtyAttributeFlusher<MapAttributeFlusher<E,V extends Map<?, ?>>, E, V extends Map<?, ?>>
-
removeFromEntity
- Specified by:
removeFromEntityin interfaceDirtyAttributeFlusher<MapAttributeFlusher<E,V extends Map<?, ?>>, E, V extends Map<?, ?>>
-
canFlushSeparateCollectionOperations
protected boolean canFlushSeparateCollectionOperations()- Specified by:
canFlushSeparateCollectionOperationsin classAbstractPluralAttributeFlusher<MapAttributeFlusher<E,V extends Map<?, ?>>, MapAction<?>, RecordingMap<?, ?, ?>, E, V extends Map<?, ?>>
-
requiresDeleteCascadeAfterRemove
public boolean requiresDeleteCascadeAfterRemove()- Specified by:
requiresDeleteCascadeAfterRemovein interfaceDirtyAttributeFlusher<MapAttributeFlusher<E,V extends Map<?, ?>>, E, V extends Map<?, ?>>
-
isViewOnlyDeleteCascaded
public boolean isViewOnlyDeleteCascaded()- Specified by:
isViewOnlyDeleteCascadedin interfaceDirtyAttributeFlusher<MapAttributeFlusher<E,V extends Map<?, ?>>, E, V extends Map<?, ?>>
-
persistOrMergeKey
protected final <X> X persistOrMergeKey(UpdateContext context, javax.persistence.EntityManager em, X object) -
mergeCollectionElements
protected boolean mergeCollectionElements(UpdateContext context, Object ownerView, Object view, E entity, V value) - Specified by:
mergeCollectionElementsin classAbstractPluralAttributeFlusher<MapAttributeFlusher<E,V extends Map<?, ?>>, MapAction<?>, RecordingMap<?, ?, ?>, E, V extends Map<?, ?>>
-
replaceCollection
protected void replaceCollection(UpdateContext context, Object ownerView, Object view, E entity, V value, FlushStrategy flushStrategy) - Specified by:
replaceCollectionin classAbstractPluralAttributeFlusher<MapAttributeFlusher<E,V extends Map<?, ?>>, MapAction<?>, RecordingMap<?, ?, ?>, E, V extends Map<?, ?>>
-
getNestedCheckers
- Specified by:
getNestedCheckersin interfaceDirtyChecker<E>
-
getDirtyKind
Description copied from interface:DirtyCheckerReturns the dirty kind of the objects.- Specified by:
getDirtyKindin interfaceDirtyChecker<E>- Returns:
- The dirty kind
-
getElementDirtyChecker
- Specified by:
getElementDirtyCheckerin interfacePluralDirtyChecker<E,V extends Map<?, ?>>
-
getKeyDirtyChecker
- Specified by:
getKeyDirtyCheckerin interfaceMapDirtyChecker<V extends Map<?,?>, Object, E>
-
getDirtyFlusher
public DirtyAttributeFlusher<MapAttributeFlusher<E,V>, getDirtyFlusherE, V> (UpdateContext context, Object view, Object initial, Object current) - Specified by:
getDirtyFlusherin interfaceDirtyAttributeFlusher<MapAttributeFlusher<E,V extends Map<?, ?>>, E, V extends Map<?, ?>>
-
determineDirtyFlusherForNewCollection
protected DirtyAttributeFlusher<MapAttributeFlusher<E,V>, determineDirtyFlusherForNewCollectionE, V> (UpdateContext context, V initial, V current) -
determineJpaCollectionActions
protected List<MapAction<Map<Object,Object>>> determineJpaCollectionActions(UpdateContext context, V initial, V current, AbstractPluralAttributeFlusher.EqualityChecker equalityChecker) -
determineCollectionActions
protected List<MapAction<Map<Object,Object>>> determineCollectionActions(UpdateContext context, V initial, V current, AbstractPluralAttributeFlusher.EqualityChecker equalityChecker) -
createPersistFlusher
protected CollectionElementAttributeFlusher<E,V> createPersistFlusher(TypeDescriptor typeDescriptor, Object element) - Specified by:
createPersistFlusherin classAbstractPluralAttributeFlusher<MapAttributeFlusher<E,V extends Map<?, ?>>, MapAction<?>, RecordingMap<?, ?, ?>, E, V extends Map<?, ?>>
-
createMergeFlusher
protected CollectionElementAttributeFlusher<E,V> createMergeFlusher(TypeDescriptor typeDescriptor, Object element) - Specified by:
createMergeFlusherin classAbstractPluralAttributeFlusher<MapAttributeFlusher<E,V extends Map<?, ?>>, MapAction<?>, RecordingMap<?, ?, ?>, E, V extends Map<?, ?>>
-
getElementFlushers
protected List<CollectionElementAttributeFlusher<E,V>> getElementFlushers(UpdateContext context, V current, List<? extends MapAction<?>> actions) - Specified by:
getElementFlushersin classAbstractPluralAttributeFlusher<MapAttributeFlusher<E,V extends Map<?, ?>>, MapAction<?>, RecordingMap<?, ?, ?>, E, V extends Map<?, ?>>
-
partialFlusher
protected MapAttributeFlusher<E,V> partialFlusher(boolean fetch, AbstractPluralAttributeFlusher.PluralFlushOperation operation, List<? extends MapAction<?>> collectionActions, List<CollectionElementAttributeFlusher<E, V>> elementFlushers) - Specified by:
partialFlusherin classAbstractPluralAttributeFlusher<MapAttributeFlusher<E,V extends Map<?, ?>>, MapAction<?>, RecordingMap<?, ?, ?>, E, V extends Map<?, ?>>
-
partialFlusher
protected MapAttributeFlusher<E,V> partialFlusher(boolean fetch, boolean upsert, AbstractPluralAttributeFlusher.PluralFlushOperation operation, List<? extends MapAction<?>> collectionActions, List<CollectionElementAttributeFlusher<E, V>> elementFlushers) -
collectionEquals
- Specified by:
collectionEqualsin classAbstractPluralAttributeFlusher<MapAttributeFlusher<E,V extends Map<?, ?>>, MapAction<?>, RecordingMap<?, ?, ?>, E, V extends Map<?, ?>>
-
getDirtyFlusherForRecordingCollection
protected DirtyAttributeFlusher<MapAttributeFlusher<E,V>, getDirtyFlusherForRecordingCollectionE, V> (UpdateContext context, RecordingMap<?, ?, ?> collection) - Specified by:
getDirtyFlusherForRecordingCollectionin classAbstractPluralAttributeFlusher<MapAttributeFlusher<E,V extends Map<?, ?>>, MapAction<?>, RecordingMap<?, ?, ?>, E, V extends Map<?, ?>>
-
getFusedOperations
-