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

net.sf.aguacate.context.spi.sql.impl.SentenceSqlArrayIterator Maven / Gradle / Ivy

package net.sf.aguacate.context.spi.sql.impl;

import java.sql.Connection;
import java.sql.SQLException;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

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

import net.sf.aguacate.context.spi.sql.SentenceExecutionResult;
import net.sf.aguacate.context.spi.sql.SentenceSql;
import net.sf.aguacate.context.spi.sql.SentenceSqlType;

public class SentenceSqlArrayIterator extends AbstractBasicSentenceSql {

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

	private final SentenceSql[] sentences;

	private final String initialContext;

	private final String[] complement;

	public SentenceSqlArrayIterator(String name, List methods, List required, List optional,
			List sentences) {
		super(name, methods);
		this.sentences = sentences.toArray(new SentenceSql[sentences.size()]);
		initialContext = optional.get(0);
		if (optional.size() == 1) {
			complement = new String[0];
		} else {
			List temp = optional.subList(1, optional.size());
			complement = temp.toArray(new String[temp.size()]);
		}
	}

	@Override
	public String outputName() {
		return null;
	}

	@Override
	public SentenceSqlType getType() {
		return SentenceSqlType.ARRAY_ITERATOR;
	}

	@Override
	public SentenceExecutionResult execute(Connection connection, Map context) throws SQLException {
		@SuppressWarnings("unchecked")
		List> list = (List>) context.get(initialContext);
		LOGGER.trace("initialContext: {}", list);
		for (Map temp : list) {
			Map subcontext = new HashMap<>(temp);
			for (String name : complement) {
				subcontext.put(name, context.get(name));
			}
			LOGGER.trace("subcontext: {}", subcontext);
			for (SentenceSql sentence : sentences) {
				SentenceExecutionResult result = sentence.execute(connection, subcontext);
				if (!result.isSuccess()) {
					return result;
				}
			}
		}
		return new SentenceExecutionResult(true);
	}

}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy