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

fr.lirmm.boreal.util.evaluator.MultiEvaluator Maven / Gradle / Ivy

There is a newer version: 1.6.3
Show newest version
package fr.lirmm.boreal.util.evaluator;

import java.util.Collection;
import java.util.function.BiFunction;
import java.util.function.Function;

import org.slf4j.Logger;

import fr.lirmm.boreal.util.externalHaltingConditions.ExternalAlgorithmHaltingConditions;

public abstract class MultiEvaluator {

	protected static Logger LOG;

	private final Collection input;
	private final Function batchFunction;
	private final Function lazyFunction;

	private final ExternalAlgorithmHaltingConditions externalHaltingConditions;

	private final BiFunction outputIfTimeout;

	/**
	 * @param input
	 * @param function
	 * @param externalHaltingConditions
	 * @param outputIfTimeout
	 */
	public MultiEvaluator(Collection input, Function function,
			ExternalAlgorithmHaltingConditions externalHaltingConditions,
			BiFunction outputIfTimeout) {
		this.input = input;
		this.batchFunction = function;
		this.lazyFunction = function;
		this.outputIfTimeout = outputIfTimeout;
		this.externalHaltingConditions = externalHaltingConditions;
	}

	/**
	 * @param input
	 * @param batchFunction
	 * @param lazyFunction
	 * @param externalHaltingConditions
	 * @param outputIfTimeout
	 */
	public MultiEvaluator(Collection input, Function batchFunction,
			Function lazyFunction, ExternalAlgorithmHaltingConditions externalHaltingConditions,
			BiFunction outputIfTimeout) {
		this.input = input;
		this.batchFunction = batchFunction;
		this.lazyFunction = lazyFunction;
		this.externalHaltingConditions = externalHaltingConditions;
		this.outputIfTimeout = outputIfTimeout;
	}

	/**
	 * Evaluates all queries in a batch and returns a list of QueryEvaluationOutput.
	 *
	 * @return A list of QueryEvaluationOutput, each containing a query and its
	 *         corresponding iterator of substitutions.
	 */
	public final Iterable batchEvaluate() {
		return new BatchProcessor<>(input, batchFunction, externalHaltingConditions, outputIfTimeout).processBatch();
	}

	/**
	 * Provides lazy evaluation for the queries, yielding QueryEvaluationOutput for
	 * each query.
	 *
	 * @return An iterable for lazy evaluation of query results, each as a
	 *         QueryEvaluationOutput.
	 */
	public final Iterable lazyEvaluate() {
		return new LazyIterator<>(input, lazyFunction);
	}

}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy