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

net.sf.aguacate.function.spi.impl.FunctionArrayIterator Maven / Gradle / Ivy

package net.sf.aguacate.function.spi.impl;

import java.util.Collection;
import java.util.List;
import java.util.Map;

import javax.sql.DataSource;

import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;

import net.sf.aguacate.function.Function;
import net.sf.aguacate.function.FunctionEvalResult;
import net.sf.aguacate.function.Parameter;
import net.sf.aguacate.function.spi.AbstractFunction;

public class FunctionArrayIterator extends AbstractFunction {

	private static final Logger LOGGER = LogManager.getLogger(FunctionArrayIterator.class);

	private final Function[] functions;

	public FunctionArrayIterator(Collection methods, String name, List parameters, String outputName,
			List list) {
		super(methods, name, parameters, outputName);
		this.functions = list.toArray(new Function[list.size()]);
	}

	@Override
	public FunctionEvalResult evaluate(DataSource dataSource, Map context) {
		Parameter parameter = getParameters()[0];
		String parameterName = parameter.getName();
		LOGGER.trace(parameterName);
		@SuppressWarnings("unchecked")
		List> data = (List>) context.get(parameterName);
		for (Map subcontext : data) {
			LOGGER.trace("before subcontext: {}", subcontext);
			for (Function function : functions) {
				FunctionEvalResult result = function.evaluate(dataSource, subcontext);
				if (result.isSuccess()) {
					String outputName = function.getOutputName();
					if (outputName != null) {
						subcontext.put(outputName, result.getValue());
					}
				} else {
					return result;
				}
				LOGGER.trace("in subcontext: {}", subcontext);
			}
			LOGGER.trace("aferter subcontext: {}", subcontext);
		}
		return new FunctionEvalResult(null, null);
	}

}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy