All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.clinia.utils.CliniaIterableHelper Maven / Gradle / Ivy

package com.clinia.utils;

import java.util.Iterator;
import java.util.function.BooleanSupplier;
import java.util.function.Supplier;

public class CliniaIterableHelper {

  private CliniaIterableHelper() {
    // Empty.
  }

  public static  Iterable createIterable(Supplier> executeQuery, BooleanSupplier hasNext) {
    return () ->
      new Iterator() {
        private boolean isFirstRequest = true;
        private Iterator currentIterator = null;

        @Override
        public boolean hasNext() {
          if (isFirstRequest || (hasNext.getAsBoolean() && !currentIterator.hasNext())) {
            currentIterator = executeQuery.get();
            isFirstRequest = false;
          }
          return currentIterator != null && currentIterator.hasNext();
        }

        @Override
        public T next() {
          if (currentIterator == null || !currentIterator.hasNext()) {
            currentIterator = executeQuery.get();
            isFirstRequest = false;
          }
          return currentIterator.next();
        }
      };
  }
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy