Class BaseSync<T,​U extends BaseSyncStatistics,​V extends BaseSyncOptions>

    • Constructor Summary

      Constructors 
      Modifier Constructor Description
      protected BaseSync​(U statistics, V syncOptions)  
    • Method Summary

      All Methods Static Methods Instance Methods Abstract Methods Concrete Methods 
      Modifier and Type Method 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.
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    • Constructor Detail

      • BaseSync

        protected BaseSync​(@Nonnull
                           U statistics,
                           @Nonnull
                           V syncOptions)
    • Method Detail

      • process

        protected abstract java.util.concurrent.CompletionStage<U> process​(@Nonnull
                                                                           java.util.List<T> resourceDrafts)
        Given a list of resource (e.g. categories, products, etc..) drafts. This method compares each new resource in this list with it's corresponding old resource in a given CTP project, and in turn it either issues update actions on the existing resource if it exists or create it if it doesn't.
        Parameters:
        resourceDrafts - the list of new resources as drafts.
        Returns:
        an instance of 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.
      • sync

        public java.util.concurrent.CompletionStage<U> sync​(@Nonnull
                                                            java.util.List<T> resourceDrafts)
        Given a list of resource (e.g. categories, products, etc..) drafts. This method compares each new resource in this list with it's corresponding old resource in a given CTP project, and in turn it either issues update actions on the existing resource if it exists or create it if it doesn't.

        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.

        Parameters:
        resourceDrafts - the list of new resources as drafts.
        Returns:
        an instance of 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.
      • getStatistics

        @Nonnull
        public 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.
        Returns:
        a statistics object for the sync process.
      • getSyncOptions

        public V getSyncOptions()
      • syncBatches

        protected java.util.concurrent.CompletionStage<U> syncBatches​(@Nonnull
                                                                      java.util.List<java.util.List<T>> batches,
                                                                      @Nonnull
                                                                      java.util.concurrent.CompletionStage<U> result)
        Given a list of resource (e.g. categories, products, etc.. batches represented by a 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.
        Parameters:
        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.
        Returns:
        an instance of 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.
      • processBatch

        protected abstract java.util.concurrent.CompletionStage<U> processBatch​(@Nonnull
                                                                                java.util.List<T> batch)
      • executeSupplierIfConcurrentModificationException

        protected static <S> S executeSupplierIfConcurrentModificationException​(@Nonnull
                                                                                java.lang.Throwable sphereException,
                                                                                @Nonnull
                                                                                java.util.function.Supplier<S> onConcurrentModificationSupplier,
                                                                                @Nonnull
                                                                                java.util.function.Supplier<S> onOtherExceptionSupplier)
        This method checks if the supplied 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.
        Type Parameters:
        S - the type of the result of the suppliers and this method.
        Parameters:
        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.
        Returns:
        the result of the executed supplier.