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

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

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

import java.sql.PreparedStatement;
import java.sql.SQLException;
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.SentenceSqlType;

public class SentenceSqlInsert extends AbstractSentenceSqlUpdate {

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

	public SentenceSqlInsert(String name, String table, List methods, List required,
			List optional, String outputName) {
		super(name, table, methods, required, optional, outputName);
	}

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

	@Override
	String buildSqlSentence(String table, Map context, String[] required, String[] optional) {
		StringBuilder principal = new StringBuilder();
		StringBuilder auxiliar = new StringBuilder();
		principal.append("INSERT INTO ").append(table).append('(');
		auxiliar.append(") VALUES(");

		for (String parameter : required) {
			if (context.containsKey(parameter)) {
				principal.append(parameter).append(',');
				auxiliar.append('?').append(',');
			} else {
				return null;
			}
		}

		for (String parameter : optional) {
			if (context.containsKey(parameter)) {
				principal.append(parameter).append(',');
				auxiliar.append('?').append(',');
			}
		}

		int index = principal.length() - 1;
		if (principal.charAt(index) == ',') {
			principal.setLength(index);
			auxiliar.setLength(auxiliar.length() - 1);
		} else {
			// Empty sentence?
			return null;
		}

		return principal.append(auxiliar).append(')').toString();
	}

	@Override
	void parameters(PreparedStatement statement, Map context, String[] required, String[] optional)
			throws SQLException {
		int position = 1;
		for (String parameter : required) {
			LOGGER.trace(parameter);
			if (context.containsKey(parameter)) {
				Object value = context.get(parameter);
				if (LOGGER.isTraceEnabled()) {
					LOGGER.trace("{}: {}", parameter, value.getClass().getName());
				}
				statement.setObject(position, value);
				position += 1;
			}
		}
		for (String parameter : optional) {
			if (context.containsKey(parameter)) {
				statement.setObject(position, context.get(parameter));
				position += 1;
			}
		}
	}

}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy