public class DefaultChangeDetectionService extends java.lang.Object implements ChangeDetectionService
| Modifier and Type | Field and Description |
|---|---|
protected static java.lang.String |
VERSION_MARKER_BY_PK |
protected static java.lang.String |
VERSION_MARKERS_FOR_STREAM_BY_PKS_QRY |
| Constructor and Description |
|---|
DefaultChangeDetectionService() |
| Modifier and Type | Method and Description |
|---|---|
void |
collectChangesForType(ComposedTypeModel composedType,
StreamConfiguration configuration,
ChangesCollector collector)
Detects all kind of changes (NEW, MODIFIED, DELETED) on items for the given composed type.
|
void |
collectChangesForType(ComposedTypeModel composedType,
java.lang.String streamId,
ChangesCollector collector)
Detects all kind of changes (NEW, MODIFIED, DELETED) on items for the given composed type.
|
void |
consumeChanges(java.util.List<ItemChangeDTO> allChanges)
Consumes all given changes.
|
protected int |
consumeChangesBatch(java.util.List<ItemChangeDTO> changes,
java.lang.String streamId) |
protected java.util.concurrent.Callable<java.lang.Integer> |
createConsumeBatchCallable(java.lang.String streamId,
java.util.List<ItemChangeDTO> changes,
int maxRetries) |
void |
deleteItemVersionMarkersForStream(java.lang.String streamId)
Deletes all item version markers belonging to the stream
|
protected void |
fillInitialVersionMarker(ItemVersionMarkerModel marker,
java.lang.Long itemPK,
java.util.Date version,
java.lang.String versionValue,
java.lang.String info,
ComposedTypeModel itemComposedType,
java.lang.String streamId) |
protected java.util.Map<java.lang.Long,ItemVersionMarkerModel> |
findItemVersionMarkersForStreamByPKs(java.lang.String streamId,
java.util.List<PK> PKs) |
protected ItemVersionMarkerModel |
findVersionMarkerByItemPK(java.lang.String streamId,
java.lang.Long itemPk)
Checks and returns existing item version marker for the item and stream.
|
ItemChangeDTO |
getChangeForExistingItem(ItemModel item,
java.lang.String streamId)
Detects change for a given existing item and stream.
|
ItemChangeDTO |
getChangeForRemovedItem(PK pk,
java.lang.String streamId)
Detects potential change for a an not existing item - (change type 'DELETED'), stored under
ItemVersionMarker referencing given item pk.
|
protected ItemChangeDTO |
getChangeFromRow(java.util.List<java.lang.Object> row,
java.lang.String streamId) |
java.util.List<ItemChangeDTO> |
getChangesForRemovedItems(java.lang.String streamId)
Detects changes for all items, which doesn't exist anymore (change type 'DELETED'), stored under
ItemVersionMarker referencing the not existing item pks.
|
protected java.util.List<ComposedTypeModel> |
getComposedTypesForStream(java.lang.String streamId) |
protected java.util.List<ItemVersionMarkerModel> |
getDeletedVersionMarkers(java.lang.String streamId) |
protected FlexibleSearchService |
getFlexibleSearchService() |
protected ModelService |
getModelService() |
protected java.util.List<ItemVersionMarkerModel> |
getNewOrModifiedVersionMarkers(java.lang.String streamId,
ComposedTypeModel model) |
protected java.util.Map<java.lang.String,java.util.List<java.util.List<ItemChangeDTO>>> |
getPartitionedBatchChangesByStreamId(java.util.List<ItemChangeDTO> allChanges) |
protected java.lang.String |
getQueryForDeletedItems(java.lang.String typePksAsQueryParams,
java.lang.String baseType,
java.lang.String itemSelector) |
protected java.lang.String |
getQueryForModifiedItems(java.lang.String typePksAsQueryParams,
java.lang.String baseType,
java.lang.String itemSelector,
java.lang.String versionValuePart) |
protected java.lang.String |
getQueryForNewItems(java.lang.String typePksAsQueryParams,
java.lang.String baseType,
java.lang.String itemSelector,
java.lang.String versionValuePart) |
protected ItemModel |
getSavedModel(PK pk) |
protected java.util.Optional<StreamConfigurationModel> |
getStreamById(java.lang.String streamId) |
protected TypeService |
getTypeService() |
protected java.util.List<ItemVersionMarkerModel> |
getVersionMarkersForRemovedItems(java.lang.String streamId) |
protected boolean |
isItemVersionMarkerActive(ItemVersionMarkerModel marker) |
protected boolean |
isNotSingleResult(java.util.List<ItemVersionMarkerModel> result) |
protected void |
logConsumedChanges(int numConsumed) |
protected java.lang.String |
parseInfoExpression(java.lang.Long itemPK,
StreamConfigurationModel streamConfiguration) |
protected java.util.Map<java.lang.Long,ItemVersionMarkerModel> |
preloadVersionMarkers(java.util.List<ItemChangeDTO> changes,
java.lang.String streamId) |
protected java.util.List<java.util.concurrent.Callable<java.lang.Integer>> |
prepareBatchExecutionCallables(java.util.List<ItemChangeDTO> allChanges) |
protected java.lang.String |
prepareQueryForFindingChangesByType(ComposedTypeModel composedType,
StreamConfiguration configuration) |
void |
resetStream(java.lang.String streamId)
Resets the stream.
|
void |
setFlexibleSearchService(FlexibleSearchService flexibleSearchService) |
void |
setModelService(ModelService modelService) |
void |
setTypeService(TypeService typeService) |
protected void |
updateVersionMarker(ItemVersionMarkerModel marker,
java.util.Date version,
java.lang.String versionValue,
java.lang.String info) |
protected static final java.lang.String VERSION_MARKERS_FOR_STREAM_BY_PKS_QRY
protected static final java.lang.String VERSION_MARKER_BY_PK
public ItemChangeDTO getChangeForExistingItem(ItemModel item, java.lang.String streamId)
ChangeDetectionServicegetChangeForExistingItem in interface ChangeDetectionServiceitem - the item to be checkedstreamId - the streamId for which the changes should be detectItemChangeDTO Object containing all the information about the changepublic ItemChangeDTO getChangeForRemovedItem(PK pk, java.lang.String streamId)
ChangeDetectionServicegetChangeForRemovedItem in interface ChangeDetectionServicepk - the pk of the item to be checkedstreamId - the streamId for which the change should be detectItemChangeDTO Object containing all the information about the changeprotected boolean isItemVersionMarkerActive(ItemVersionMarkerModel marker)
public java.util.List<ItemChangeDTO> getChangesForRemovedItems(java.lang.String streamId)
ChangeDetectionServicegetChangesForRemovedItems in interface ChangeDetectionServicestreamId - the streamId for which the change should be detectItemChangeDTO Objects containing all the information about the changespublic void collectChangesForType(ComposedTypeModel composedType, java.lang.String streamId, ChangesCollector collector)
ChangeDetectionServicecollectChangesForType in interface ChangeDetectionServicecomposedType - the type for which the change detection should be executed (including subtypes)streamId - the streamId for which the change should be detectcollector - responsible for collecting the changes in specified way, e.g. store them in memory or generate
csv file.public void collectChangesForType(ComposedTypeModel composedType, StreamConfiguration configuration, ChangesCollector collector)
ChangeDetectionServicecollectChangesForType in interface ChangeDetectionServicecomposedType - the type for which the change detection should be executed (including subtypes)configuration - the stream configuration defining which item should be included into the stream.collector - responsible for collecting the changes in specified way, e.g. store them in memory or generate csv file.StreamConfigurationprotected ItemChangeDTO getChangeFromRow(java.util.List<java.lang.Object> row, java.lang.String streamId)
protected java.lang.String prepareQueryForFindingChangesByType(ComposedTypeModel composedType, StreamConfiguration configuration)
protected java.lang.String getQueryForDeletedItems(java.lang.String typePksAsQueryParams,
java.lang.String baseType,
java.lang.String itemSelector)
protected java.lang.String getQueryForModifiedItems(java.lang.String typePksAsQueryParams,
java.lang.String baseType,
java.lang.String itemSelector,
java.lang.String versionValuePart)
protected java.lang.String getQueryForNewItems(java.lang.String typePksAsQueryParams,
java.lang.String baseType,
java.lang.String itemSelector,
java.lang.String versionValuePart)
protected java.util.Map<java.lang.Long,ItemVersionMarkerModel> preloadVersionMarkers(java.util.List<ItemChangeDTO> changes, java.lang.String streamId)
protected int consumeChangesBatch(java.util.List<ItemChangeDTO> changes, java.lang.String streamId)
public void consumeChanges(java.util.List<ItemChangeDTO> allChanges)
ChangeDetectionServiceItemChangeDTO objectsconsumeChanges in interface ChangeDetectionServiceallChanges - list of the changes to be consumed.protected void logConsumedChanges(int numConsumed)
protected java.util.Map<java.lang.String,java.util.List<java.util.List<ItemChangeDTO>>> getPartitionedBatchChangesByStreamId(java.util.List<ItemChangeDTO> allChanges)
protected java.util.List<java.util.concurrent.Callable<java.lang.Integer>> prepareBatchExecutionCallables(java.util.List<ItemChangeDTO> allChanges)
protected java.util.concurrent.Callable<java.lang.Integer> createConsumeBatchCallable(java.lang.String streamId,
java.util.List<ItemChangeDTO> changes,
int maxRetries)
public void deleteItemVersionMarkersForStream(java.lang.String streamId)
ChangeDetectionServicedeleteItemVersionMarkersForStream in interface ChangeDetectionServicestreamId - stream id for which item version markers should be deletedpublic void resetStream(java.lang.String streamId)
ChangeDetectionServiceresetStream in interface ChangeDetectionServicestreamId - stream id for which item version markers should be resetprotected java.util.Map<java.lang.Long,ItemVersionMarkerModel> findItemVersionMarkersForStreamByPKs(java.lang.String streamId, java.util.List<PK> PKs)
protected ItemVersionMarkerModel findVersionMarkerByItemPK(java.lang.String streamId, java.lang.Long itemPk)
protected boolean isNotSingleResult(java.util.List<ItemVersionMarkerModel> result)
protected java.util.List<ItemVersionMarkerModel> getNewOrModifiedVersionMarkers(java.lang.String streamId, ComposedTypeModel model)
protected java.util.List<ItemVersionMarkerModel> getDeletedVersionMarkers(java.lang.String streamId)
protected java.util.List<ComposedTypeModel> getComposedTypesForStream(java.lang.String streamId)
protected java.util.Optional<StreamConfigurationModel> getStreamById(java.lang.String streamId)
protected java.util.List<ItemVersionMarkerModel> getVersionMarkersForRemovedItems(java.lang.String streamId)
protected void fillInitialVersionMarker(ItemVersionMarkerModel marker, java.lang.Long itemPK, java.util.Date version, java.lang.String versionValue, java.lang.String info, ComposedTypeModel itemComposedType, java.lang.String streamId)
protected void updateVersionMarker(ItemVersionMarkerModel marker, java.util.Date version, java.lang.String versionValue, java.lang.String info)
protected java.lang.String parseInfoExpression(java.lang.Long itemPK,
StreamConfigurationModel streamConfiguration)
public void setFlexibleSearchService(FlexibleSearchService flexibleSearchService)
protected FlexibleSearchService getFlexibleSearchService()
public void setModelService(ModelService modelService)
protected ModelService getModelService()
public void setTypeService(TypeService typeService)
protected TypeService getTypeService()
Copyright © 2018 SAP SE. All Rights Reserved.