/**
 * 
 */
package com.ejie.m62fb.utils.sql;

import java.math.BigDecimal;

import org.springframework.jdbc.core.simple.SimpleJdbcTemplate;

/**
 * <p>
 * Clase abstracta con funciones para tratar secuencias
 * </p>
 * 
XXXX
 * 
 */
public abstract class SequenceUtils {

	/**
	 * <p>
	 * Incrementa la secuencia pasada en el par&aacute;metro
	 * <code>sequenceName</code> y devuelve el valor tomado
	 * </p>
	 * 
	 * @param jdbcTemplate
	 *            Conexi&oacute;n con la base de datos
	 * @param sequenceName
	 *            Nombre de la secuencia
	 * @return Siguiente valor de la secuencia
	 */
	public static BigDecimal getNextSequenceValue(
			final SimpleJdbcTemplate jdbcTemplate, final String sequenceName) {

		String sequenceQuery = "SELECT " + sequenceName + ".nextval FROM dual";

		return new BigDecimal(jdbcTemplate.queryForLong(sequenceQuery));

	}

	/**
	 * <p>
	 * Devuelve el valor actual de la secuencia pasada en el par&aacute;metro
	 * <code>sequenceName</code>
	 * </p>
	 * 
	 * @param jdbcTemplate
	 *            Conexi&oacute;n con la base de datos
	 * @param sequenceName
	 *            Nombre de la secuencia
	 * @return Valor actual de la secuencia
	 */
	public static BigDecimal getCurrSequenceValue(
			final SimpleJdbcTemplate jdbcTemplate, final String sequenceName) {

		String sequenceQuery = "SELECT " + sequenceName + ".currval FROM dual";

		return new BigDecimal(jdbcTemplate.queryForLong(sequenceQuery));

	}
}
