public abstract class BaseSync<T,U extends BaseSyncStatistics,V extends BaseSyncOptions>
extends java.lang.Object
Modifier and Type | Field and Description |
---|---|
protected U |
statistics |
protected V |
syncOptions |
Modifier | Constructor and Description |
---|---|
protected |
BaseSync(U statistics,
V syncOptions) |
Modifier and Type | Method and Description |
---|---|
protected static <S> S |
executeSupplierIfConcurrentModificationException(java.lang.Throwable sphereException,
java.util.function.Supplier<S> onConcurrentModificationSupplier,
java.util.function.Supplier<S> onOtherExceptionSupplier)
This method checks if the supplied
sphereException is an instance of ConcurrentModificationException . |
U |
getStatistics()
Returns an instance of type U which is a subclass of
BaseSyncStatistics containing all
the stats of the sync process; which includes a report message, the total number of update,
created, failed, processed resources and the processing time of the sync in different time
units and in a human readable format. |
V |
getSyncOptions() |
protected abstract java.util.concurrent.CompletionStage<U> |
process(java.util.List<T> resourceDrafts)
Given a list of resource (e.g.
|
protected abstract java.util.concurrent.CompletionStage<U> |
processBatch(java.util.List<T> batch) |
java.util.concurrent.CompletionStage<U> |
sync(java.util.List<T> resourceDrafts)
Given a list of resource (e.g.
|
protected java.util.concurrent.CompletionStage<U> |
syncBatches(java.util.List<java.util.List<T>> batches,
java.util.concurrent.CompletionStage<U> result)
Given a list of resource (e.g.
|
protected final U extends BaseSyncStatistics statistics
protected final V extends BaseSyncOptions syncOptions
protected abstract java.util.concurrent.CompletionStage<U> process(@Nonnull java.util.List<T> resourceDrafts)
resourceDrafts
- the list of new resources as drafts.CompletionStage
<U
> which contains as a result an
instance of U
which is a subclass of BaseSyncStatistics
representing the
statistics
instance attribute of this
BaseSync
.public java.util.concurrent.CompletionStage<U> sync(@Nonnull java.util.List<T> resourceDrafts)
The time before and after the actual sync process starts is recorded in the BaseSyncStatistics
container so that the total processing time is computed in the statistics.
resourceDrafts
- the list of new resources as drafts.CompletionStage
<U
> which contains as a result an
instance of U
which is a subclass of BaseSyncStatistics
representing the
statistics
instance attribute of this
BaseSync
.@Nonnull public U getStatistics()
BaseSyncStatistics
containing all
the stats of the sync process; which includes a report message, the total number of update,
created, failed, processed resources and the processing time of the sync in different time
units and in a human readable format.public V getSyncOptions()
protected java.util.concurrent.CompletionStage<U> syncBatches(@Nonnull java.util.List<java.util.List<T>> batches, @Nonnull java.util.concurrent.CompletionStage<U> result)
List
<List
> of resources, this method recursively calls processBatch(List)
on each batch, then removes it, until there are no more batches, in other
words, all batches have been synced.batches
- the batches of resources to sync.result
- in the first call of this recursive method, this result is normally a completed
future, it used from within the method to recursively sync each batch once the previous
batch has finished syncing.CompletionStage
<U
> which contains as a result an
instance of BaseSyncStatistics
representing the statistics
of the sync
process executed on the given list of batches.protected abstract java.util.concurrent.CompletionStage<U> processBatch(@Nonnull java.util.List<T> batch)
protected static <S> S executeSupplierIfConcurrentModificationException(@Nonnull java.lang.Throwable sphereException, @Nonnull java.util.function.Supplier<S> onConcurrentModificationSupplier, @Nonnull java.util.function.Supplier<S> onOtherExceptionSupplier)
sphereException
is an instance of ConcurrentModificationException
. If it is, then it executes the supplied onConcurrentModificationSupplier
Supplier
. Otherwise, if it is not an instance of a
ConcurrentModificationException
then it executes the other onOtherExceptionSupplier
Supplier
. Regardless, which supplier is executed the results
of either is the result of this method.S
- the type of the result of the suppliers and this method.sphereException
- the sphere exception to check if is ConcurrentModificationException
.onConcurrentModificationSupplier
- the supplier to execute if the sphereException
is a ConcurrentModificationException
.onOtherExceptionSupplier
- the supplier to execute if the sphereException
is not a
ConcurrentModificationException
.