/*
* Copyright 2021 E.J.I.E., S.A.
*
* Licencia con arreglo a la EUPL, Versión 1.1 exclusivamente (la «Licencia»);
* Solo podrá usarse esta obra si se respeta la Licencia.
* Puede obtenerse una copia de la Licencia en
*
* http://ec.europa.eu/idabc/eupl.html
*
* Salvo cuando lo exija la legislación aplicable o se acuerde por escrito,
* el programa distribuido con arreglo a la Licencia se distribuye «TAL CUAL»,
* SIN GARANT�?AS NI CONDICIONES DE NINGÚN TIPO, ni expresas ni implícitas.
* Véase la Licencia en el idioma concreto que rige los permisos y limitaciones
* que establece la Licencia.
*/
package com.ejie.ad74a.dao.iml;

import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.List;

import javax.annotation.Resource;
import javax.sql.DataSource;

import org.springframework.dao.support.DataAccessUtils;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.jdbc.core.RowMapper;
import org.springframework.stereotype.Repository;
import org.springframework.transaction.annotation.Transactional;

import com.ejie.ad74a.dao.EjerciciosDao;
import com.ejie.ad74a.model.Ejercicios;
import com.ejie.ad74a.util.UtilSQL;


/**
 * EjerciciosDaoImpl generated by UDA, 24-oct-2023 13:37:08.
 * 
 * @author UDA
 */

@Repository
@Transactional
public class EjerciciosDaoImpl implements EjerciciosDao {

	/**
	 * StringBuilder initilization value
	 */
	public static final int STRING_BUILDER_INIT = 4096;

	protected static final String[] ORDER_BY_WHITE_LIST = new String[] { "EJERCICIO08", "INDABIERTO08", "USUALTA08",
			"FALTA08", "USUMODIF08", "FMODIF08" };

	private JdbcTemplate jdbcTemplate;

	/*
	 * ROW_MAPPERS
	 */
	
	private RowMapper<Ejercicios> rwMap = new RowMapper<Ejercicios>() {
		public Ejercicios mapRow(ResultSet resultSet, int rowNum) throws SQLException {
			return new Ejercicios(UtilSQL.getLong(resultSet, "EJERCICIO08"), UtilSQL.getInt(resultSet, "INDABIERTO08"),
					resultSet.getString("USUALTA08"), resultSet.getDate("FALTA08"), resultSet.getString("USUMODIF08"),
					resultSet.getDate("FMODIF08"));
		}
	};

	/**
	 * Method use to set the datasource.
	 *
	 * @param dataSource DataSource
	 *
	 * @return
	 */
	@Resource
	public void setDataSource(DataSource dataSource) {
		this.jdbcTemplate = new JdbcTemplate(dataSource);
	}

	/*
	 * OPERACIONES CRUD
	 */


	/**
	 * Finds a single row in the Ejercicios table.
	 *
	 * @param ejercicios Ejercicios
	 *
	 * @return Ejercicios
	 */
	@Transactional(readOnly = true)
	public Ejercicios findEjercicioAbierto(Ejercicios ejercicios) {
		String query = "SELECT t1.EJERCICIO_08 EJERCICIO08, IND_ABIERTO_08 INDABIERTO08, t1.USU_ALTA_08 USUALTA08, t1.F_ALTA_08 FALTA08, t1.USU_MODIF_08 USUMODIF08, t1.F_MODIF_08 FMODIF08 FROM AE01B.AE01B08T00@AE01B_DBL0.BATERA.EUSKADI.EUS t1  WHERE t1.IND_ABIERTO_08 = ? ORDER BY EJERCICIO_08 DESC ";

		List<Ejercicios> ejerciciosList = this.jdbcTemplate.query(query, this.rwMap, ejercicios.getIndAbierto08());
		return DataAccessUtils.uniqueResult(ejerciciosList);
	}
}
