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 abstract 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 abstract 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.