package com.ejie.ab63.dao;

import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

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

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.jdbc.core.RowMapper;
import org.springframework.jdbc.core.namedparam.MapSqlParameterSource;
import org.springframework.jdbc.core.namedparam.SqlParameterSource;
import org.springframework.jdbc.core.simple.SimpleJdbcCall;
import org.springframework.stereotype.Repository;
import org.springframework.transaction.annotation.Transactional;

import com.ejie.ab63.comun.Constantes;
import com.ejie.ab63.model.AgenciaData;
import com.ejie.ab63.model.Categoria;
import com.ejie.ab63.model.DispensaEstablecimiento;
import com.ejie.ab63.model.Especialidad;
import com.ejie.ab63.model.Establecimiento;
import com.ejie.ab63.model.EstablecimientoData;
import com.ejie.ab63.model.Grupo;
import com.ejie.ab63.model.Modalidad;
import com.ejie.ab63.model.Recurso;
import com.ejie.ab63.model.TipoEstablecimiento;
import com.ejie.ab63.model.TipoFranquicia;
import com.ejie.ab63.model.inicio.InitForm;
import com.ejie.ab63.model.terceros.DatosDirecciones;
import com.ejie.ab63.model.terceros.DatosTerceros;
import com.ejie.ab63.util.PermisosXLNETS;
import com.ejie.x38.dao.RowNumResultSetExtractor;
import com.ejie.x38.dto.JQGridManager;
import com.ejie.x38.dto.JQGridManagerJerarquia;
import com.ejie.x38.dto.JQGridRequestDto;
import com.ejie.x38.dto.JerarquiaDto;
import com.ejie.x38.dto.TableRowDto;

/**
 * Ab6301s00DaoImpl  
 * 
 *  
 */

@Repository
@Transactional
public class EstablecimientoDaoImpl implements EstablecimientoDao {
	private static final Log logger = LogFactory.getLog(EstablecimientoDaoImpl.class);

	public static final String[] ORDER_BY_WHITE_LIST = new String[] { "IDESTABLECIMIENTO",
			"IDENTIFICADORESTABLECIMIENTO", "DESCNOMBRE", "VISIBLEWEB", "TEMPORADA", "URLWEB", "IDDEFECTOS",
			"NUMUNIDADESALOJAMIENTO", "OBSERVACIONES", "FECHAAPERTURA", "FECHABAJA", "FECHAINICIERRETEMP",
			"FECHAFINCIERRETEMP", "FECHAVCTOCIERRE", "FECHAULTNOTIFICACION", "FECHAULTINSPECCION", "FECHAPROINSPECCION",
			"FECHAULTACTUALIZACION", "FECHACLAUSURA", "FECHAULTREFORMA", "ELIMINADO", "EXPEDIENTEB29", "IDPORTALS41",
			"URLPORTALS41", "FECHACONTROLS41", "NUMINSTALACIONANTERIOR", "FECHAINSCRIPCION", "NUMINSTALACIONWZ",
			"OBSERVACIONES2", "NOTASMIGRACION", "AGRUPACION", "REFCATASTRAL", "OBSSEGRESPCIVIL", "FECHAREGISTRO",
			"USUARIOREGISTRO", "FECHAULTMODIFICACION", "USUARIOULTMODIFICACION", "RECURSOIDRECURSO",
			"RECURSOTIPORECURSO", "RECURSODESCNOMBRE", "RECURSOFECHABAJA", "RECURSONUMREGISTRO", "RECURSOFECHAREGISTRO",
			"RECURSOUSUARIOREGISTRO", "RECURSOFECHAULTMODIFICACION", "RECURSOUSUARIOULTMODIFICACION",
			"TIPOESTIDTIPOESTABLECIMIENTO", "TIPOESTDESCTIPOES", "TIPOESTFECHAMODIFICACION", "TIPOESTNOMUSUARIO",
			"TIPOESTBAJA", "TIPOESTDESCTIPOEU", "TIPOESTORDENACION", "TIPOESTTIPIFICACION", "TIPOESTFECHAREGISTRO",
			"TIPOESTUSUARIOREGISTRO", "TIPOESTFECHAULTMODIFICACION", "TIPOESTUSUARIOULTMODIFICACION", "GRUPOIDGRUPO",
			"GRUPODESCGRUPOES", "GRUPOFECHAMODIFICACION", "GRUPONOMUSUARIO", "GRUPOBAJA", "GRUPODESCGRUPOEU",
			"GRUPOFECHAREGISTRO", "GRUPOUSUARIOREGISTRO", "GRUPOFECHAULTMODIFICACION", "GRUPOUSUARIOULTMODIFICACION",
			"CATEGIDCATEGORIAS", "CATEGDESCCATEGORIAES", "CATEGFECHAMODIFICACION", "CATEGNOMUSUARIO", "CATEGBAJA",
			"CATEGDESCCATEGORIAEU", "CATEGFECHAREGISTRO", "CATEGUSUARIOREGISTRO", "CATEGFECHAULTMODIFICACION",
			"CATEGUSUARIOULTMODIFICACION", "ESPIDESPECIALIDAD", "ESPDESCCATEGORIAES", "ESPFECHAMODIFICACION",
			"ESPNOMUSUARIO", "ESPBAJA", "ESPDESCCATEGORIAEU", "ESPFECHAREGISTRO", "ESPUSUARIOREGISTRO",
			"ESPFECHAULTMODIFICACION", "ESPUSUARIOULTMODIFICACION", "MODAIDMODALIDAD", "MODADESCMODALIDADES",
			"MODAFECHAMODIFICACION", "MODANOMUSUARIO", "MODABAJA", "MODADESCMODALIDADEU", "MODAFECHAREGISTRO",
			"MODAUSUARIOREGISTRO", "MODAFECHAULTMODIFICACION", "MODAUSUARIOULTMODIFICACION", "DATAESTIDESTABLECIMIENTO",
			"DATAESTFECHAANOCONSTRUCCION", "DATAESTFECHAANORENOVACION", "DATAESTDERECHOCOCINA",
			"DATAESTSERVICIOCOMEDOR", "DATAESTNUMSALONES", "DATAESTNUMSALONESCOMEDOR", "DATAESTNUMCOMEDORES",
			"DATAESTNUMBAÑOSGENERALES", "DATAESTNUMCONJUNTOS", "DATAESTNUMESTUDIOS", "DATAESTNUMHABDOBLE",
			"DATAESTNUMHABINDIVIDUALES", "DATAESTNUMMAXIMOSUPLETORIAS", "DATAESTNUMPLAZAS", "DATAESTEDIFICIOCATALOGADO",
			"DATAESTNUMHABMAS4", "DATAESTNUMHABMENOS4", "DATAESTCOMPARTEVIVIENDAS", "DATAESTNUMHABDOBLECS",
			"DATAESTNUMAPARTAMENTOS", "DATAESTNUMSUITES", "DATAESTCOMPARTEINSTAL", "DATAESTNUMINSTALCOMPARTE",
			"DATAESTNUMSUPACAMPADA", "DATAESTBAR", "DATAESTRESTAURANTE", "DATAESTPISCINA", "DATAESTNUMTOTPARCELAS",
			"DATAESTNUMPARCELASANF", "DATAESTNUMPARCELASAF", "DATAESTNUMPARCELASSA", "DATAESTINDICADORIA",
			"DATAESTFECHACONTROLIA", "DATAESTREQUISITOS", "DATAESTNUMCONTROL", "DATAESTFECHAANTCONTROL",
			"DATAESTNUMHABITACIONES", "DATAESTNUMRESIDENTESPERM", "DATAESTSUPTOTHABITAC", "DATAESTSUPRESTODEPEN",
			"DATAESTFECHAREGISTRO", "DATAESTUSUARIOREGISTRO", "DATAESTFECHAULTMODIFICACION",
			"DATAESTUSUARIOULTMODIFICACION", "FRANQIDESTABLECIMIENTO", "FRANQFRANQUICIA", "AB6336S00IDFRANQUICIA",
			"AB6336S00DESCFRANQUICIAES", "AB6336S00DESCFRANQUICIAEU", "AB6336S00BAJA", "FRANQINDONLINE",
			"FRANQIDINSTALOFIPRINCIPAL", "FRANQIDORIGENOFIPRINCIPAL", "FRANQIDTIPOCIE", "FRANQETIQUETACIE",
			"FRANQREGISTROFIANZA", "FRANQOBSERVFIANZA", "FRANQOBSERVSRC", "FRANQIDPRIMERASUCURSAL", "FRANQNUMCIE",
			"FRANQFECHAREGISTRO", "FRANQUSUARIOREGISTRO", "FRANQFECHAULTMODIFICACION", "FRANQUSUARIOULTMODIFICACION",
			"AB6312S00IDTIPOESTABLECIMIENTO", "AB6313S00IDTIPOESTABLECIMIENTO", "AB6315S00IDTIPOESTABLECIMIENTO",
			"AB6314S00IDTIPOESTABLECIMIENTO", "IDPAIS", "DESCRIPCIONPROVINCIAEXTR", "DESCRIPCIONCIUDADEXTR",
			"PERIODOPUENTES", "PERIODOVACACIONES", "PERIODOVERANO", "SINPERIODOPREF", "DISPONECOCINA", "DISPONESALON",
			"IDDISPENSASESTAB", "FECHADISPENSA", "DESCDISPENSA", "FECHAULTMODIF", "USUARIOULTMODIF", "IDESTABDISPENSA",
			"FECHAREGDISPENSA", "USUARIOREGDISPENSA", "TELEFPROMO", "SUPTOTAL", "MODIF_ESENCIAL", "MUNICIPIODSO",
			"FOLDERID", "FOLDERNUMBER", "NUMDORMRESID", "NUMDORMUSUARIO", "APELLIDO1INTERESADO", "APELLIDO2INTERESADO",
			"NOMBREINTERESADO", "NIFINTERESADO", "DIRECCION", "DISPENSADO", "NUMSUPCOCINA" };

	private JdbcTemplate jdbcTemplate;

	/*
	 * ROW_MAPPERS
	 */
	private RowMapper<Establecimiento> rwMap = new RowMapper<Establecimiento>() {
		public Establecimiento mapRow(ResultSet resultSet, int rowNum) throws SQLException {

			return new Establecimiento(resultSet.getInt("IDESTABLECIMIENTO"),
					resultSet.getString("IDENTIFICADORESTABLECIMIENTO"), resultSet.getString("DESCNOMBRE"),
					resultSet.getString("VISIBLEWEB"), resultSet.getString("TEMPORADA"), resultSet.getString("URLWEB"),
					resultSet.getString("IDDEFECTOS"), resultSet.getInt("NUMUNIDADESALOJAMIENTO"),
					resultSet.getString("OBSERVACIONES"), resultSet.getDate("FECHAAPERTURA"),
					resultSet.getDate("FECHABAJA"), resultSet.getDate("FECHAINICIERRETEMP"),
					resultSet.getDate("FECHAFINCIERRETEMP"), resultSet.getDate("FECHAVCTOCIERRE"),
					resultSet.getDate("FECHAULTNOTIFICACION"), resultSet.getDate("FECHAULTINSPECCION"),
					resultSet.getDate("FECHAPROINSPECCION"), resultSet.getDate("FECHAULTACTUALIZACION"),
					resultSet.getDate("FECHACLAUSURA"), resultSet.getDate("FECHAULTREFORMA"),
					resultSet.getString("ELIMINADO"), resultSet.getString("EXPEDIENTEB29"),
					resultSet.getLong("IDPORTALS41"), resultSet.getString("URLPORTALS41"),
					resultSet.getDate("FECHACONTROLS41"), resultSet.getString("NUMINSTALACIONANTERIOR"),
					resultSet.getDate("FECHAINSCRIPCION"), resultSet.getString("NUMINSTALACIONWZ"),
					resultSet.getString("OBSERVACIONES2"), resultSet.getString("NOTASMIGRACION"),
					resultSet.getString("AGRUPACION"), resultSet.getString("REFCATASTRAL"),
					resultSet.getString("OBSSEGRESPCIVIL"), resultSet.getDate("FECHAREGISTRO"),
					resultSet.getString("USUARIOREGISTRO"), resultSet.getDate("FECHAULTMODIFICACION"),
					resultSet.getString("USUARIOULTMODIFICACION"), resultSet.getString("TELEFONO"),
					resultSet.getString("EMAIL"), resultSet.getString("IDEXPEDIENTE"),
					resultSet.getString("IDESTABLECIMIENTOPADRE"), resultSet.getString("TIPO_REGISTRO"),
					resultSet.getString("IDESTABSOLIC"), resultSet.getString("PERIODOPUENTES"),
					resultSet.getString("PERIODOVACACIONES"), resultSet.getString("PERIODOVERANO"),
					resultSet.getString("SINPERIODOPREF"), resultSet.getString("TELEFPROMO"),
					resultSet.getString("MODIFESENCIAL"),
					new DatosTerceros(resultSet.getInt("AB6339S00IDTERCERO"), resultSet.getString("NIFINTERESADO"),
							null, resultSet.getString("NOMBREINTERESADO"), resultSet.getString("APELLIDO1INTERESADO"),
							resultSet.getString("APELLIDO2INTERESADO"), null, resultSet.getLong("TELEFONOINTERESADO"),
							resultSet.getString("EMAILINTERESADO"), null, null, null, null, null, null),
					new DatosDirecciones(resultSet.getInt("ID_DIRECCION"), null, resultSet.getString("DIRECCION"),
							resultSet.getString("NUMERO"), resultSet.getString("ESCALERA"), resultSet.getString("PISO"),
							resultSet.getString("LETRA"), resultSet.getString("CODIGO_POSTAL"),
							resultSet.getLong("IDPAIS"), resultSet.getLong("ID_PROVINCIA"),
							resultSet.getLong("ID_MUNICIPIO"), resultSet.getLong("ID_LOCALIDAD"),
							resultSet.getString("DESCRIPCIONPROVINCIAEXTR"),
							resultSet.getString("DESCRIPCIONCIUDADEXTR"), null, null, null, null, null, null, null,
							resultSet.getString("MUNICIPIODSO")),
					new Recurso(resultSet.getString("RECURSOIDRECURSO"), resultSet.getString("RECURSOTIPORECURSO"),
							resultSet.getString("RECURSODESCNOMBRE"), resultSet.getDate("RECURSOFECHABAJA"),
							resultSet.getString("RECURSONUMREGISTRO"), resultSet.getDate("RECURSOFECHAREGISTRO"),
							resultSet.getString("RECURSOUSUARIOREGISTRO"),
							resultSet.getDate("RECURSOFECHAULTMODIFICACION"),
							resultSet.getString("RECURSOUSUARIOULTMODIFICACION")),
					new TipoEstablecimiento(resultSet.getString("TIPOESTIDTIPOESTABLECIMIENTO"),
							resultSet.getString("TIPOESTDESCTIPOES"), resultSet.getDate("TIPOESTFECHAMODIFICACION"),
							resultSet.getString("TIPOESTNOMUSUARIO"), resultSet.getInt("TIPOESTBAJA"),
							resultSet.getString("TIPOESTDESCTIPOEU"), resultSet.getString("TIPOESTORDENACION"),
							resultSet.getString("TIPOESTTIPIFICACION"), resultSet.getDate("TIPOESTFECHAREGISTRO"),
							resultSet.getString("TIPOESTUSUARIOREGISTRO"),
							resultSet.getDate("TIPOESTFECHAULTMODIFICACION"),
							resultSet.getString("TIPOESTUSUARIOULTMODIFICACION"), null, null, null, null),
					new Grupo(resultSet.getString("GRUPOIDGRUPO"), resultSet.getString("GRUPODESCGRUPOES"),
							resultSet.getDate("GRUPOFECHAMODIFICACION"), resultSet.getString("GRUPONOMUSUARIO"),
							resultSet.getInt("GRUPOBAJA"), resultSet.getString("GRUPODESCGRUPOEU"),
							resultSet.getDate("GRUPOFECHAREGISTRO"), resultSet.getString("GRUPOUSUARIOREGISTRO"),
							resultSet.getDate("GRUPOFECHAULTMODIFICACION"),
							resultSet.getString("GRUPOUSUARIOULTMODIFICACION"),
							new TipoEstablecimiento(resultSet.getString("AB6312S00IDTIPOESTABLECIMIENTO"), null, null,
									null, null, null, null, null, null, null, null, null, null, null, null, null,
									null)),
					new Categoria(resultSet.getString("CATEGIDCATEGORIAS"), resultSet.getString("CATEGDESCCATEGORIAES"),
							resultSet.getDate("CATEGFECHAMODIFICACION"), resultSet.getString("CATEGNOMUSUARIO"),
							resultSet.getInt("CATEGBAJA"), resultSet.getString("CATEGDESCCATEGORIAEU"),
							resultSet.getDate("CATEGFECHAREGISTRO"), resultSet.getString("CATEGUSUARIOREGISTRO"),
							resultSet.getDate("CATEGFECHAULTMODIFICACION"),
							resultSet.getString("CATEGUSUARIOULTMODIFICACION"),
							new TipoEstablecimiento(resultSet.getString("Ab6313s00IDTIPOESTABLECIMIENTO"), null, null,
									null, null, null, null, null, null, null, null, null, null, null, null, null,
									null)),
					new Especialidad(resultSet.getString("ESPIDESPECIALIDAD"),
							resultSet.getString("ESPDESCCATEGORIAES"), resultSet.getDate("ESPFECHAMODIFICACION"),
							resultSet.getString("ESPNOMUSUARIO"), resultSet.getInt("ESPBAJA"),
							resultSet.getString("ESPDESCCATEGORIAEU"), resultSet.getDate("ESPFECHAREGISTRO"),
							resultSet.getString("ESPUSUARIOREGISTRO"), resultSet.getDate("ESPFECHAULTMODIFICACION"),
							resultSet.getString("ESPUSUARIOULTMODIFICACION"),
							new TipoEstablecimiento(resultSet.getString("Ab6315s00IDTIPOESTABLECIMIENTO"), null, null,
									null, null, null, null, null, null, null, null, null, null, null, null, null,
									null)),
					new Modalidad(resultSet.getString("MODAIDMODALIDAD"), resultSet.getString("MODADESCMODALIDADES"),
							resultSet.getDate("MODAFECHAMODIFICACION"), resultSet.getString("MODANOMUSUARIO"),
							resultSet.getInt("MODABAJA"), resultSet.getString("MODADESCMODALIDADEU"),
							resultSet.getDate("MODAFECHAREGISTRO"), resultSet.getString("MODAUSUARIOREGISTRO"),
							resultSet.getDate("MODAFECHAULTMODIFICACION"),
							resultSet.getString("MODAUSUARIOULTMODIFICACION"),
							new TipoEstablecimiento(resultSet.getString("Ab6314s00IDTIPOESTABLECIMIENTO"), null, null,
									null, null, null, null, null, null, null, null, null, null, null, null, null,
									null)),
					new EstablecimientoData(resultSet.getInt("DATAESTIDESTABLECIMIENTO"),
							resultSet.getLong("DATAESTFECHAANOCONSTRUCCION"),
							resultSet.getLong("DATAESTFECHAANORENOVACION"), resultSet.getInt("DATAESTDERECHOCOCINA"),
							resultSet.getInt("DATAESTSERVICIOCOMEDOR"), resultSet.getLong("DATAESTNUMSALONES"),
							resultSet.getLong("DATAESTNUMSALONESCOMEDOR"), resultSet.getLong("DATAESTNUMCOMEDORES"),
							resultSet.getLong("DATAESTNUMBAÑOSGENERALES"), resultSet.getLong("DATAESTNUMCONJUNTOS"),
							resultSet.getLong("DATAESTNUMESTUDIOS"), resultSet.getLong("DATAESTNUMHABDOBLE"),
							resultSet.getLong("DATAESTNUMHABINDIVIDUALES"),
							resultSet.getLong("DATAESTNUMMAXIMOSUPLETORIAS"), resultSet.getLong("DATAESTNUMPLAZAS"),
							resultSet.getInt("DATAESTEDIFICIOCATALOGADO"), resultSet.getLong("DATAESTNUMHABMAS4"),
							resultSet.getLong("DATAESTNUMHABMENOS4"), resultSet.getInt("DATAESTCOMPARTEVIVIENDAS"),
							resultSet.getLong("DATAESTNUMHABDOBLECS"), resultSet.getLong("DATAESTNUMAPARTAMENTOS"),
							resultSet.getLong("DATAESTNUMSUITES"), resultSet.getInt("DATAESTCOMPARTEINSTAL"),
							resultSet.getString("DATAESTNUMINSTALCOMPARTE"),
							resultSet.getBigDecimal("DATAESTNUMSUPACAMPADA"), resultSet.getInt("DATAESTBAR"),
							resultSet.getInt("DATAESTRESTAURANTE"), resultSet.getInt("DATAESTPISCINA"),
							resultSet.getLong("DATAESTNUMTOTPARCELAS"), resultSet.getLong("DATAESTNUMPARCELASANF"),
							resultSet.getLong("DATAESTNUMPARCELASAF"), resultSet.getLong("DATAESTNUMPARCELASSA"),
							resultSet.getInt("DATAESTINDICADORIA"), resultSet.getDate("DATAESTFECHACONTROLIA"),
							resultSet.getString("DATAESTREQUISITOS"), resultSet.getLong("DATAESTNUMCONTROL"),
							resultSet.getDate("DATAESTFECHAANTCONTROL"), resultSet.getString("DATAESTNUMHABITACIONES"),
							resultSet.getString("DATAESTNUMRESIDENTESPERM"),
							resultSet.getString("DATAESTSUPTOTHABITAC"),
							resultSet.getBigDecimal("DATAESTSUPRESTODEPEN"), resultSet.getDate("DATAESTFECHAREGISTRO"),
							resultSet.getString("DATAESTUSUARIOREGISTRO"),
							resultSet.getDate("DATAESTFECHAULTMODIFICACION"),
							resultSet.getString("DATAESTUSUARIOULTMODIFICACION"), resultSet.getInt("DISPONECOCINA"),
							resultSet.getInt("DISPONESALON"), resultSet.getString("NUMDORMUSUARIO"),
							resultSet.getString("NUMDORMRESID"),
							new DispensaEstablecimiento(resultSet.getInt("IDDISPENSASESTAB"),
									resultSet.getDate("FECHADISPENSA"), resultSet.getString("OBSERVACIONESDESCES"),
									resultSet.getString("OBSERVACIONESDESCEU"), resultSet.getDate("FECHAREGDISPENSA"),
									resultSet.getString("USUARIOREGDISPENSA"), resultSet.getDate("FECHAULTMODIF"),
									resultSet.getString("USUARIOULTMODIF"),
									new Establecimiento(resultSet.getInt("IDESTABDISPENSA")),
									resultSet.getString("FOLDERID"), resultSet.getString("FOLDERNUMBER"),
									resultSet.getString("DISPENSADO")),
							resultSet.getBigDecimal("SUPTOTAL"), resultSet.getBigDecimal("NUMSUPCOCINA")),
					new AgenciaData(resultSet.getInt("FRANQIDESTABLECIMIENTO"), resultSet.getInt("FRANQFRANQUICIA"),
							new TipoFranquicia(resultSet.getLong("AB6336S00IDFRANQUICIA"),
									resultSet.getString("AB6336S00DESCFRANQUICIAES"),
									resultSet.getString("AB6336S00DESCFRANQUICIAEU"), resultSet.getInt("AB6336S00BAJA"),
									null, null, null, null),
							resultSet.getInt("FRANQINDONLINE"), resultSet.getString("FRANQIDINSTALOFIPRINCIPAL"),
							resultSet.getString("FRANQIDORIGENOFIPRINCIPAL"), resultSet.getString("FRANQIDTIPOCIE"),
							resultSet.getString("FRANQETIQUETACIE"), resultSet.getString("FRANQREGISTROFIANZA"),
							resultSet.getString("FRANQOBSERVFIANZA"), resultSet.getString("FRANQOBSERVSRC"),
							resultSet.getString("FRANQIDPRIMERASUCURSAL"), resultSet.getString("FRANQNUMCIE"),
							resultSet.getDate("FRANQFECHAREGISTRO"), resultSet.getString("FRANQUSUARIOREGISTRO"),
							resultSet.getDate("FRANQFECHAULTMODIFICACION"),
							resultSet.getString("FRANQUSUARIOULTMODIFICACION")));
		}
	};

	private RowMapper<Establecimiento> rwMapEstRelAgencias = new RowMapper<Establecimiento>() {
		public Establecimiento mapRow(ResultSet resultSet, int rowNum) throws SQLException {

			Establecimiento establecimiento = new Establecimiento();
			AgenciaData agenciaData = new AgenciaData();

			establecimiento.setIdEstablecimiento(resultSet.getInt("IDESTABLECIMIENTO"));
			establecimiento.setIdentificadorEstablecimiento(resultSet.getString("IDENTIFICADORESTABLECIMIENTO"));
			establecimiento.setDescrNombre(resultSet.getString("DESCNOMBRE"));
			establecimiento.setFechaBaja(resultSet.getDate("FECHABAJA"));

			agenciaData.setRegistroFianza(resultSet.getString("FRANQREGISTROFIANZA"));
			agenciaData.setIdPrimeraSucursal(resultSet.getString("IDPRIMERASUCURSAL"));
			establecimiento.setFranquicia(agenciaData);

			DatosDirecciones datosDirecciones = new DatosDirecciones(resultSet.getInt("ID_DIRECCION"), null,
					resultSet.getString("DIRECCION"), resultSet.getString("NUMERO"), resultSet.getString("ESCALERA"),
					resultSet.getString("PISO"), resultSet.getString("LETRA"), resultSet.getString("CODIGO_POSTAL"),
					resultSet.getLong("IDPAIS"), resultSet.getLong("ID_PROVINCIA"), resultSet.getLong("ID_MUNICIPIO"),
					resultSet.getLong("ID_LOCALIDAD"), null, null, null, null, null, null, null, null, null, null);

			establecimiento.setDatosDirecciones(datosDirecciones);

			return establecimiento;
		}
	};

	private RowMapper<Establecimiento> rwMapDatosOficinaPpalAAVV = new RowMapper<Establecimiento>() {
		public Establecimiento mapRow(ResultSet resultSet, int rowNum) throws SQLException {

			Establecimiento establecimiento = new Establecimiento();

			establecimiento.setIdEstablecimiento(resultSet.getInt("ID_ESTABLECIMIENTO"));
			establecimiento.setDescrNombre(resultSet.getString("DESC_NOMBRE"));
			establecimiento.setIdentificadorEstablecimiento(resultSet.getString("IDENTIFICADOR_ESTABLECIMIENTO"));

			DatosDirecciones datosDirecciones = new DatosDirecciones(null, null, resultSet.getString("DIRECCION"),
					resultSet.getString("NUMERO"), resultSet.getString("ESCALERA"), resultSet.getString("PISO"),
					resultSet.getString("LETRA"), resultSet.getString("CODIGO_POSTAL"), null, null, null, null, null,
					null, null, null, null, null, null, null, null, resultSet.getString("MUNICIPIODSO"));

			establecimiento.setDatosDirecciones(datosDirecciones);

			return establecimiento;
		}
	};
	private RowMapper<Establecimiento> rwMapSucursales = new RowMapper<Establecimiento>() {
		public Establecimiento mapRow(ResultSet resultSet, int rowNum) throws SQLException {
			Establecimiento establecimiento = new Establecimiento(resultSet.getInt("ID_ESTABLECIMIENTO"));
			return establecimiento;
		}
	};

	private RowMapper<Establecimiento> rwMapPK = new RowMapper<Establecimiento>() {
		public Establecimiento mapRow(ResultSet resultSet, int rowNum) throws SQLException {
			return new Establecimiento(resultSet.getInt("IDESTABLECIMIENTO"));
		}
	};

	private RowMapper<String> rwMapCanMod = new RowMapper<String>() {
		public String mapRow(ResultSet resultSet, int rowNum) throws SQLException {
			return new String(resultSet.getString("CANMODNUMREG"));
		}
	};

	/**
	 * Rowmapper para JerarquÃ­a
	 *
	 * @param dataSource
	 *            DataSource
	 * @return
	 */
	private RowMapper<JerarquiaDto<Establecimiento>> rwMapJerarquia = new RowMapper<JerarquiaDto<Establecimiento>>() {
		public JerarquiaDto<Establecimiento> mapRow(ResultSet resultSet, int rowNum) throws SQLException {

			Establecimiento ab6301s00 = new Establecimiento(resultSet.getInt("IDESTABLECIMIENTO"),
					resultSet.getString("IDENTIFICADORESTABLECIMIENTO"), resultSet.getString("DESCNOMBRE"),
					resultSet.getString("VISIBLEWEB"), resultSet.getString("TEMPORADA"), resultSet.getString("URLWEB"),
					resultSet.getString("IDDEFECTOS"), resultSet.getInt("NUMUNIDADESALOJAMIENTO"),
					resultSet.getString("OBSERVACIONES"), resultSet.getDate("FECHAAPERTURA"),
					resultSet.getDate("FECHABAJA"), resultSet.getDate("FECHAINICIERRETEMP"),
					resultSet.getDate("FECHAFINCIERRETEMP"), resultSet.getDate("FECHAVCTOCIERRE"),
					resultSet.getDate("FECHAULTNOTIFICACION"), resultSet.getDate("FECHAULTINSPECCION"),
					resultSet.getDate("FECHAPROINSPECCION"), resultSet.getDate("FECHAULTACTUALIZACION"),
					resultSet.getDate("FECHACLAUSURA"), resultSet.getDate("FECHAULTREFORMA"),
					resultSet.getString("ELIMINADO"), resultSet.getString("EXPEDIENTEB29"),
					resultSet.getLong("IDPORTALS41"), resultSet.getString("URLPORTALS41"),
					resultSet.getDate("FECHACONTROLS41"), resultSet.getString("NUMINSTALACIONANTERIOR"),
					resultSet.getDate("FECHAINSCRIPCION"), resultSet.getString("NUMINSTALACIONWZ"),
					resultSet.getString("OBSERVACIONES2"), resultSet.getString("NOTASMIGRACION"),
					resultSet.getString("AGRUPACION"), resultSet.getString("REFCATASTRAL"),
					resultSet.getString("OBSSEGRESPCIVIL"), resultSet.getDate("FECHAREGISTRO"),
					resultSet.getString("USUARIOREGISTRO"), resultSet.getDate("FECHAULTMODIFICACION"),
					resultSet.getString("USUARIOULTMODIFICACION"), resultSet.getString("TELEFONO"),
					resultSet.getString("EMAIL"), resultSet.getString("IDEXPEDIENTE"),
					resultSet.getString("IDESTABLECIMIENTOPADRE"), resultSet.getString("TIPO_REGISTRO"),
					resultSet.getString("IDESTABSOLIC"), resultSet.getString("TELEFNOPROMO"),
					resultSet.getString("MODIFESENCIAL"), null, null, null, null,
					new DatosTerceros(resultSet.getInt("AB6339S00IDTERCERO"), resultSet.getString("NIFINTERESADO"),
							null, resultSet.getString("NOMBREINTERESADO"), null, null, null,
							resultSet.getLong("TELEFONOINTERESADO"), resultSet.getString("EMAILINTERESADO"), null, null,
							null, null, null, null),
					new DatosDirecciones(resultSet.getInt("ID_DIRECCION"), null, resultSet.getString("DIRECCION"),
							resultSet.getString("NUMERO"), resultSet.getString("ESCALERA"), resultSet.getString("PISO"),
							resultSet.getString("LETRA"), resultSet.getString("CODIGO_POSTAL"),
							resultSet.getLong("IDPAIS"), resultSet.getLong("ID_PROVINCIA"),
							resultSet.getLong("ID_MUNICIPIO"), resultSet.getLong("ID_LOCALIDAD"),
							resultSet.getString("DESCRIPCIONPROVINCIAEXTR"),
							resultSet.getString("DESCRIPCIONCIUDADEXTR"), null, null, null, null, null, null, null,
							null),
					new Recurso(resultSet.getString("Ab6300s00IDRECURSO"), resultSet.getString("Ab6300s00TIPORECURSO"),
							resultSet.getString("Ab6300s00DESCNOMBRE"), resultSet.getDate("Ab6300s00FECHABAJA"),
							resultSet.getString("Ab6300s00NUMREGISTRO"), resultSet.getDate("Ab6300s00FECHAREGISTRO"),
							resultSet.getString("Ab6300s00USUARIOREGISTRO"),
							resultSet.getDate("Ab6300s00FECHAULTMODIFICACION"),
							resultSet.getString("Ab6300s00USUARIOULTMODIFI")),
					new TipoEstablecimiento(resultSet.getString("Ab6311s00IDTIPOESTABLECIMIENTO"),
							resultSet.getString("Ab6311s00DESCTIPOES"), resultSet.getDate("Ab6311s00FECHAMODIFICACION"),
							resultSet.getString("Ab6311s00NOMUSUARIO"), resultSet.getInt("Ab6311s00BAJA"),
							resultSet.getString("Ab6311s00DESCTIPOEU"), resultSet.getString("Ab6311s00ORDENACION"),
							resultSet.getString("Ab6311s00TIPIFICACION"), resultSet.getDate("Ab6311s00FECHAREGISTRO"),
							resultSet.getString("Ab6311s00USUARIOREGISTRO"),
							resultSet.getDate("Ab6311s00FECHAULTMODIFICACION"),
							resultSet.getString("Ab6311s00USUARIOULTMODIFI"), null, null, null, null),
					new Grupo(resultSet.getString("Ab6312s00IDGRUPO"), resultSet.getString("Ab6312s00DESCGRUPOES"),
							resultSet.getDate("Ab6312s00FECHAMODIFICACION"), resultSet.getString("Ab6312s00NOMUSUARIO"),
							resultSet.getInt("Ab6312s00BAJA"), resultSet.getString("Ab6312s00DESCGRUPOEU"),
							resultSet.getDate("Ab6312s00FECHAREGISTRO"),
							resultSet.getString("Ab6312s00USUARIOREGISTRO"),
							resultSet.getDate("Ab6312s00FECHAULTMODIFICACION"),
							resultSet.getString("Ab6312s00USUARIOULTMODIFI"),
							new TipoEstablecimiento(resultSet.getString("Ab6312s00IDTIPOESTAB"), null, null, null, null,
									null, null, null, null, null, null, null, null, null, null, null, null)),
					new Categoria(resultSet.getString("Ab6313s00IDCATEGORIAS"),
							resultSet.getString("Ab6313s00DESCCATEGORIAES"),
							resultSet.getDate("Ab6313s00FECHAMODIFICACION"), resultSet.getString("Ab6313s00NOMUSUARIO"),
							resultSet.getInt("Ab6313s00BAJA"), resultSet.getString("Ab6313s00DESCCATEGORIAEU"),
							resultSet.getDate("Ab6313s00FECHAREGISTRO"),
							resultSet.getString("Ab6313s00USUARIOREGISTRO"),
							resultSet.getDate("Ab6313s00FECHAULTMODIFICACION"),
							resultSet.getString("Ab6313s00USUARIOULTMODIFI"),
							new TipoEstablecimiento(resultSet.getString("AB6313S00IDTIPOESTAB"), null, null, null, null,
									null, null, null, null, null, null, null, null, null, null, null, null)),
					new Especialidad(resultSet.getString("Ab6315s00IDESPECIALIDAD"),
							resultSet.getString("Ab6315s00DESCCATEGORIAES"),
							resultSet.getDate("Ab6315s00FECHAMODIFICACION"), resultSet.getString("Ab6315s00NOMUSUARIO"),
							resultSet.getInt("Ab6315s00BAJA"), resultSet.getString("Ab6315s00DESCCATEGORIAEU"),
							resultSet.getDate("Ab6315s00FECHAREGISTRO"),
							resultSet.getString("Ab6315s00USUARIOREGISTRO"),
							resultSet.getDate("Ab6315s00FECHAULTMODIFICACION"),
							resultSet.getString("Ab6315s00USUARIOULTMODIFI"),
							new TipoEstablecimiento(resultSet.getString("ab6315s00idtipoestab"), null, null, null, null,
									null, null, null, null, null, null, null, null, null, null, null, null)),
					new Modalidad(resultSet.getString("Ab6314s00IDMODALIDAD"),
							resultSet.getString("Ab6314s00DESCMODALIDADES"),
							resultSet.getDate("Ab6314s00FECHAMODIFICACION"), resultSet.getString("Ab6314s00NOMUSUARIO"),
							resultSet.getInt("Ab6314s00BAJA"), resultSet.getString("Ab6314s00DESCMODALIDADEU"),
							resultSet.getDate("Ab6314s00FECHAREGISTRO"),
							resultSet.getString("Ab6314s00USUARIOREGISTRO"),
							resultSet.getDate("Ab6314s00FECHAULTMODIFICACION"),
							resultSet.getString("Ab6314s00USUARIOULTMODIFI"),
							new TipoEstablecimiento(resultSet.getString("AB6314S00IDTIPOESTAB"), null, null, null, null,
									null, null, null, null, null, null, null, null, null, null, null, null)),
					new EstablecimientoData(resultSet.getInt("Ab6321s00IDESTABLECIMIENTO"),
							resultSet.getLong("Ab6321s00FECHAANOCONSTRUCCION"),
							resultSet.getLong("Ab6321s00FECHAANORENOVACION"),
							resultSet.getInt("Ab6321s00DERECHOCOCINA"), resultSet.getInt("Ab6321s00SERVICIOCOMEDOR"),
							resultSet.getLong("Ab6321s00NUMSALONES"), resultSet.getLong("Ab6321s00NUMSALONESCOMEDOR"),
							resultSet.getLong("Ab6321s00NUMCOMEDORES"), resultSet.getLong("Ab6321s00NUMBAÑOSGENERALES"),
							resultSet.getLong("Ab6321s00NUMCONJUNTOS"), resultSet.getLong("Ab6321s00NUMESTUDIOS"),
							resultSet.getLong("Ab6321s00NUMHABDOBLE"), resultSet.getLong("Ab6321s00NUMHABINDIVIDUALES"),
							resultSet.getLong("Ab6321s00NUMMAXIMOSUPLETORIAS"), resultSet.getLong("Ab6321s00NUMPLAZAS"),
							resultSet.getInt("Ab6321s00EDIFICIOCATALOGADO"), resultSet.getLong("Ab6321s00NUMHABMAS4"),
							resultSet.getLong("Ab6321s00NUMHABMENOS4"), resultSet.getInt("Ab6321s00COMPARTEVIVIENDAS"),
							resultSet.getLong("Ab6321s00NUMHABDOBLECS"), resultSet.getLong("Ab6321s00NUMAPARTAMENTOS"),
							resultSet.getLong("Ab6321s00NUMSUITES"), resultSet.getInt("Ab6321s00COMPARTEINSTAL"),
							resultSet.getString("Ab6321s00NUMINSTALCOMPARTE"),
							resultSet.getBigDecimal("Ab6321s00NUMSUPACAMPADA"), resultSet.getInt("Ab6321s00BAR"),
							resultSet.getInt("Ab6321s00RESTAURANTE"), resultSet.getInt("Ab6321s00PISCINA"),
							resultSet.getLong("Ab6321s00NUMTOTPARCELAS"), resultSet.getLong("Ab6321s00NUMPARCELASANF"),
							resultSet.getLong("Ab6321s00NUMPARCELASAF"), resultSet.getLong("Ab6321s00NUMPARCELASSA"),
							resultSet.getInt("Ab6321s00INDICADORIA"), resultSet.getDate("Ab6321s00FECHACONTROLIA"),
							resultSet.getString("Ab6321s00REQUISITOS"), resultSet.getLong("Ab6321s00NUMCONTROL"),
							resultSet.getDate("Ab6321s00FECHAANTCONTROL"),
							resultSet.getString("Ab6321s00NUMHABITACIONES"),
							resultSet.getString("Ab6321s00NUMRESIDENTESPERM"),
							resultSet.getString("Ab6321s00SUPTOTHABITAC"),
							resultSet.getBigDecimal("Ab6321s00SUPRESTODEPEN"),
							resultSet.getDate("Ab6321s00FECHAREGISTRO"),
							resultSet.getString("Ab6321s00USUARIOREGISTRO"),
							resultSet.getDate("Ab6321s00FECHAULTMODIFICACION"),
							resultSet.getString("Ab6321s00USUARIOULTMODIFI"), null, null,
							resultSet.getString("NUMDORMRESID"), resultSet.getString("NUMDORMUSUARIO"), null,
							resultSet.getBigDecimal("SUPTOTAL"), resultSet.getBigDecimal("NUMSUPCOCINA")),
					new AgenciaData(resultSet.getInt("Ab6335s00IDESTABLECIMIENTO"),
							resultSet.getInt("Ab6335s00FRANQUICIA"),
							new TipoFranquicia(resultSet.getLong("AB6336S00IDFRANQUICIA"),
									resultSet.getString("AB6336S00DESCFRANQUICIAES"),
									resultSet.getString("AB6336S00DESCFRANQUICIAEU"), resultSet.getInt("AB6336S00BAJA"),
									null, null, null, null),
							resultSet.getInt("Ab6335s00INDONLINE"),
							resultSet.getString("Ab6335s00IDINSTALOFIPRINCIPAL"),
							resultSet.getString("Ab6335s00IDORIGENOFIPRINCIPAL"),
							resultSet.getString("Ab6335s00IDTIPOCIE"), resultSet.getString("Ab6335s00ETIQUETACIE"),
							resultSet.getString("Ab6335s00REGISTROFIANZA"),
							resultSet.getString("Ab6335s00OBSERVFIANZA"), resultSet.getString("Ab6335s00OBSERVSRC"),
							resultSet.getString("Ab6335s00IDPRIMERASUCURSAL"), resultSet.getString("Ab6335s00NUMCIE"),
							resultSet.getDate("Ab6335s00FECHAREGISTRO"),
							resultSet.getString("Ab6335s00USUARIOREGISTRO"),
							resultSet.getDate("Ab6335s00FECHAULTMODIFICACION"),
							resultSet.getString("Ab6335s00USUARIOULTMODIFI")));

			JerarquiaDto<Establecimiento> jerarquia = new JerarquiaDto<Establecimiento>();
			jerarquia.setModel(ab6301s00);
			jerarquia.setLevel(resultSet.getBigDecimal("LEVEL").intValue());
			jerarquia.setParentNodes(resultSet.getString("PARENTNODES"));
			jerarquia.setIsLeaf(Boolean.parseBoolean(resultSet.getString("ISLEAF")));
			jerarquia.setFilter(Boolean.parseBoolean(resultSet.getString("FILTER")));
			return jerarquia;
		}
	};

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

	/*
	 * OPERACIONES CRUD
	 */

	/**
	 * Inserts a single row in the Ab6301s00 table.
	 *
	 * @param ab6301s00
	 *            Ab6301s00
	 * @return Ab6301s00
	 */
	public Establecimiento add(Establecimiento ab6301s00) {
		String query = "INSERT INTO AB6301S00 (ID_ESTABLECIMIENTO, ID_ESTABLECIMIENTO_PADRE, IDENTIFICADOR_ESTABLECIMIENTO, DESC_NOMBRE, VISIBLEWEB, TEMPORADA, URLWEB, ID_DEFECTOS, NUM_UNIDADES_ALOJAMIENTO, OBSERVACIONES, FECHA_APERTURA, FECHA_BAJA, FECHA_INICIERRETEMP, FECHA_FINCIERRETEMP, FECHA_VCTO_CIERRE, FECHA_ULT_NOTIFICACION, FECHA_ULT_INSPECCION, FECHA_PRO_INSPECCION, FECHA_ULT_ACTUALIZACION, FECHA_CLAUSURA, FECHA_ULT_REFORMA, ELIMINADO, EXPEDIENTEB29, ID_PORTAL_S41, URL_PORTAL_S41, FECHA_CONTROL_S41, NUM_INSTALACION_ANTERIOR, FECHA_INSCRIPCION, NUM_INSTALACION_WZ, OBSERVACIONES2, NOTAS_MIGRACION, AGRUPACION, ID_RECURSO, ID_ESPECIALIDAD, ID_TIPO_ESTABLECIMIENTO, ID_MODALIDAD, ID_CATEGORIAS, ID_GRUPO, REF_CATASTRAL, OBS_SEGRESPCIVIL, TELEFONO, EMAIL, TELEF_PROMO, PERIODO_PUENTES, PERIODO_VACACIONES, PERIODO_VERANO, SIN_PERIODO_PREF, FECHA_REGISTRO, USUARIO_REGISTRO, FECHA_ULTMODIFICACION, USUARIO_ULTMODIFICACION, TIPO_REGISTRO, ID_EXPEDIENTE, IDESTAB_SOLIC, TH_ACTIVIDAD, MODIF_ESENCIAL, CAN_MOD_IDESTAB_SOLIC) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,SYSDATE,?,?,?,?,?,?,?,?,?)";

		if (null == ab6301s00.getIdEstablecimiento()) {
			String nVQuery = "SELECT AB63.AB6301Q00.NEXTVAL AS NEXTVAL FROM DUAL";
			int nextVal = this.jdbcTemplate.queryForObject(nVQuery, null, Integer.class);
			ab6301s00.setIdEstablecimiento(nextVal);
		}
		Object getAb6300s00IdRecursoAux = null;
		if (ab6301s00.getRecurso() != null && ab6301s00.getRecurso().getIdRecurso() != null) {
			getAb6300s00IdRecursoAux = ab6301s00.getRecurso().getIdRecurso();
		}
		Object getAb6311s00IdTipoEstablecimientoAux = null;
		if (ab6301s00.getTipoEstablecimiento() != null
				&& ab6301s00.getTipoEstablecimiento().getIdTipoEstablecimiento() != null) {
			getAb6311s00IdTipoEstablecimientoAux = ab6301s00.getTipoEstablecimiento().getIdTipoEstablecimiento();
		}
		Object getAb6312s00IdGrupoAux = null;
		if (ab6301s00.getGrupo() != null && ab6301s00.getGrupo().getIdGrupo() != null) {
			getAb6312s00IdGrupoAux = ab6301s00.getGrupo().getIdGrupo();
		}
		Object getAb6313s00IdCategoriasAux = null;
		if (ab6301s00.getCategoria() != null && ab6301s00.getCategoria().getIdCategorias() != null) {
			getAb6313s00IdCategoriasAux = ab6301s00.getCategoria().getIdCategorias();
		}
		Object getAb6315s00IdEspecialidadAux = null;
		if (ab6301s00.getEspecialidad() != null && ab6301s00.getEspecialidad().getIdEspecialidad() != null) {
			getAb6315s00IdEspecialidadAux = ab6301s00.getEspecialidad().getIdEspecialidad();
		}
		Object getAb6314s00IdModalidadAux = null;
		if (ab6301s00.getModalidad() != null && ab6301s00.getModalidad().getIdModalidad() != null) {
			getAb6314s00IdModalidadAux = ab6301s00.getModalidad().getIdModalidad();
		}

		this.jdbcTemplate.update(query, ab6301s00.getIdEstablecimiento(), ab6301s00.getIdEstablecimientoPadre(),
				ab6301s00.getIdentificadorEstablecimiento(), ab6301s00.getDescrNombre(), ab6301s00.getVisibleweb(),
				ab6301s00.getTemporada(), ab6301s00.getUrlweb(), ab6301s00.getIdDefectos(),
				ab6301s00.getNumUnidadesAlojamiento(), ab6301s00.getObservaciones(), ab6301s00.getFechaApertura(),
				ab6301s00.getFechaBaja(), ab6301s00.getFechaInicierretemp(), ab6301s00.getFechaFincierretemp(),
				ab6301s00.getFechaVctoCierre(), ab6301s00.getFechaUltNotificacion(), ab6301s00.getFechaUltInspeccion(),
				ab6301s00.getFechaProInspeccion(), ab6301s00.getFechaUltActualizacion(), ab6301s00.getFechaClausura(),
				ab6301s00.getFechaUltReforma(), ab6301s00.getEliminado(), ab6301s00.getExpedienteb29(),
				ab6301s00.getIdPortalS41(), ab6301s00.getUrlPortalS41(), ab6301s00.getFechaControlS41(),
				ab6301s00.getNumInstalacionAnterior(), ab6301s00.getFechaInscripcion(), ab6301s00.getNumInstalacionWz(),
				ab6301s00.getObservaciones2(), ab6301s00.getNotasMigracion(), ab6301s00.getAgrupacion(),
				getAb6300s00IdRecursoAux, getAb6315s00IdEspecialidadAux, getAb6311s00IdTipoEstablecimientoAux,
				getAb6314s00IdModalidadAux, getAb6313s00IdCategoriasAux, getAb6312s00IdGrupoAux,
				ab6301s00.getRefCatastral(), ab6301s00.getObsSegrespcivil(), ab6301s00.getTelefono(),
				ab6301s00.getCorreoElectronico(), ab6301s00.getTelefonoPromo(), ab6301s00.getPeriodoPuentes(),
				ab6301s00.getPeriodoVacaciones(), ab6301s00.getPeriodoVerano(), ab6301s00.getSinPeriodoPref(),
				PermisosXLNETS.getUserConnected(), ab6301s00.getFechaUltmodificacion(),
				ab6301s00.getUsuarioUltmodificacion(), ab6301s00.getTipoRegistro(), ab6301s00.getIdExpediente(),
				ab6301s00.getIdestabSolic(), ab6301s00.getThActividad(), ab6301s00.getModifEsencial(),
				ab6301s00.getCanModIdestabSolic());
		return ab6301s00;
	}

	/**
	 * Updates a single row in the Ab6301s00 table.
	 *
	 * @param establecimiento
	 *            Ab6301s00
	 * @return Ab6301s00
	 */
	public Establecimiento update(Establecimiento establecimiento) {
		String query = "UPDATE AB6301T00 SET ID_RECURSO=?, ID_TIPO_ESTABLECIMIENTO=?, ID_GRUPO=?, ID_CATEGORIAS=?, ID_ESPECIALIDAD=?, ID_MODALIDAD=?, IDENTIFICADOR_ESTABLECIMIENTO=?, DESC_NOMBRE=?, VISIBLEWEB=?, TEMPORADA=?, URLWEB=?, ID_DEFECTOS=?, NUM_UNIDADES_ALOJAMIENTO=?, OBSERVACIONES=?, FECHA_APERTURA=?, FECHA_BAJA=?, FECHA_INICIERRETEMP=?, FECHA_FINCIERRETEMP=?, FECHA_VCTO_CIERRE=?, FECHA_ULT_NOTIFICACION=?, FECHA_ULT_INSPECCION=?, FECHA_PRO_INSPECCION=?, FECHA_ULT_ACTUALIZACION=?, FECHA_CLAUSURA=?, FECHA_ULT_REFORMA=?, ELIMINADO=?, EXPEDIENTEB29=?, ID_PORTAL_S41=?, URL_PORTAL_S41=?, FECHA_CONTROL_S41=?, NUM_INSTALACION_ANTERIOR=?, FECHA_INSCRIPCION=?, NUM_INSTALACION_WZ=?, OBSERVACIONES2=?, NOTAS_MIGRACION=?, AGRUPACION=?, REF_CATASTRAL=?, OBS_SEGRESPCIVIL=?, FECHA_REGISTRO=?, USUARIO_REGISTRO=?, FECHA_ULTMODIFICACION=?, USUARIO_ULTMODIFICACION=?,EMAIL=?, TELEFONO=?, ID_EXPEDIENTE=?, ID_ESTABLECIMIENTO_PADRE =?,TIPO_REGISTRO=?, IDESTAB_SOLIC=?, PERIODO_PUENTES=?, PERIODO_VACACIONES=?, PERIODO_VERANO=?, SIN_PERIODO_PREF=?, TELEF_PROMO=? WHERE ID_ESTABLECIMIENTO=?";
		Object getRecursoIdRecursoAux = null;
		if (establecimiento.getRecurso() != null && establecimiento.getRecurso().getIdRecurso() != null) {
			getRecursoIdRecursoAux = establecimiento.getRecurso().getIdRecurso();
		}
		Object getIdTipoEstablecimientoAux = null;
		if (establecimiento.getTipoEstablecimiento() != null
				&& establecimiento.getTipoEstablecimiento().getIdTipoEstablecimiento() != null) {
			getIdTipoEstablecimientoAux = establecimiento.getTipoEstablecimiento().getIdTipoEstablecimiento();
		}
		Object getIdGrupoAux = null;
		if (establecimiento.getGrupo() != null && establecimiento.getGrupo().getIdGrupo() != null) {
			getIdGrupoAux = establecimiento.getGrupo().getIdGrupo();
		}
		Object getIdCategoriasAux = null;
		if (establecimiento.getCategoria() != null && establecimiento.getCategoria().getIdCategorias() != null) {
			getIdCategoriasAux = establecimiento.getCategoria().getIdCategorias();
		}
		Object getIdEspecialidadAux = null;
		if (establecimiento.getEspecialidad() != null
				&& establecimiento.getEspecialidad().getIdEspecialidad() != null) {
			getIdEspecialidadAux = establecimiento.getEspecialidad().getIdEspecialidad();
		}
		Object getIdModalidadAux = null;
		if (establecimiento.getModalidad() != null && establecimiento.getModalidad().getIdModalidad() != null) {
			getIdModalidadAux = establecimiento.getModalidad().getIdModalidad();
		}
		this.jdbcTemplate.update(query, getRecursoIdRecursoAux, getIdTipoEstablecimientoAux, getIdGrupoAux,
				getIdCategoriasAux, getIdEspecialidadAux, getIdModalidadAux,
				establecimiento.getIdentificadorEstablecimiento(), establecimiento.getDescrNombre(),
				establecimiento.getVisibleweb(), establecimiento.getTemporada(), establecimiento.getUrlweb(),
				establecimiento.getIdDefectos(), establecimiento.getNumUnidadesAlojamiento(),
				establecimiento.getObservaciones(), establecimiento.getFechaApertura(), establecimiento.getFechaBaja(),
				establecimiento.getFechaInicierretemp(), establecimiento.getFechaFincierretemp(),
				establecimiento.getFechaVctoCierre(), establecimiento.getFechaUltNotificacion(),
				establecimiento.getFechaUltInspeccion(), establecimiento.getFechaProInspeccion(),
				establecimiento.getFechaUltActualizacion(), establecimiento.getFechaClausura(),
				establecimiento.getFechaUltReforma(), establecimiento.getEliminado(),
				establecimiento.getExpedienteb29(), establecimiento.getIdPortalS41(), establecimiento.getUrlPortalS41(),
				establecimiento.getFechaControlS41(), establecimiento.getNumInstalacionAnterior(),
				establecimiento.getFechaInscripcion(), establecimiento.getNumInstalacionWz(),
				establecimiento.getObservaciones2(), establecimiento.getNotasMigracion(),
				establecimiento.getAgrupacion(), establecimiento.getRefCatastral(),
				establecimiento.getObsSegrespcivil(), establecimiento.getFechaRegistro(),
				establecimiento.getUsuarioRegistro(), establecimiento.getFechaUltmodificacion(),
				establecimiento.getUsuarioUltmodificacion(), establecimiento.getCorreoElectronico(),
				establecimiento.getTelefono(), establecimiento.getIdExpediente(),
				establecimiento.getIdEstablecimientoPadre(), establecimiento.getTipoRegistro(),
				establecimiento.getIdentificadorSolicitud(), establecimiento.getPeriodoPuentes(),
				establecimiento.getPeriodoVacaciones(), establecimiento.getPeriodoVerano(),
				establecimiento.getSinPeriodoPref(), establecimiento.getTelefonoPromo(),
				establecimiento.getIdEstablecimiento());
		return establecimiento;
	}

	/**
	 * Finds a single row in the Ab6301s00 table.
	 *
	 * @param ab6301s00
	 *            Ab6301s00
	 * @return Ab6301s00
	 */
	@Transactional(readOnly = true)
	public Establecimiento find(Establecimiento filter) {
		String query = "SELECT T1.ID_ESTABLECIMIENTO IDESTABLECIMIENTO, T1.IDENTIFICADOR_ESTABLECIMIENTO IDENTIFICADORESTABLECIMIENTO, T1.DESC_NOMBRE DESCNOMBRE, T1.VISIBLEWEB VISIBLEWEB, T1.TEMPORADA TEMPORADA, T1.URLWEB URLWEB, T1.ID_DEFECTOS IDDEFECTOS, T1.NUM_UNIDADES_ALOJAMIENTO NUMUNIDADESALOJAMIENTO, T1.OBSERVACIONES OBSERVACIONES, T1.FECHA_APERTURA FECHAAPERTURA, T1.FECHA_BAJA FECHABAJA, T1.FECHA_INICIERRETEMP FECHAINICIERRETEMP, T1.FECHA_FINCIERRETEMP FECHAFINCIERRETEMP, T1.FECHA_VCTO_CIERRE FECHAVCTOCIERRE, T1.FECHA_ULT_NOTIFICACION FECHAULTNOTIFICACION, T1.FECHA_ULT_INSPECCION FECHAULTINSPECCION, T1.FECHA_PRO_INSPECCION FECHAPROINSPECCION, T1.FECHA_ULT_ACTUALIZACION FECHAULTACTUALIZACION, T1.FECHA_CLAUSURA FECHACLAUSURA, T1.FECHA_ULT_REFORMA FECHAULTREFORMA, T1.ELIMINADO ELIMINADO, T1.EXPEDIENTEB29 EXPEDIENTEB29, T1.ID_PORTAL_S41 IDPORTALS41, T1.URL_PORTAL_S41 URLPORTALS41, T1.FECHA_CONTROL_S41 FECHACONTROLS41, T1.NUM_INSTALACION_ANTERIOR NUMINSTALACIONANTERIOR, T1.FECHA_INSCRIPCION FECHAINSCRIPCION, T1.NUM_INSTALACION_WZ NUMINSTALACIONWZ, T1.OBSERVACIONES2 OBSERVACIONES2, T1.NOTAS_MIGRACION NOTASMIGRACION, T1.AGRUPACION AGRUPACION, T1.REF_CATASTRAL REFCATASTRAL, T1.OBS_SEGRESPCIVIL OBSSEGRESPCIVIL, T1.FECHA_REGISTRO FECHAREGISTRO, T1.USUARIO_REGISTRO USUARIOREGISTRO, T1.FECHA_ULTMODIFICACION FECHAULTMODIFICACION, T1.USUARIO_ULTMODIFICACION USUARIOULTMODIFICACION, T1.EMAIL EMAIL, T1.TELEFONO TELEFONO, T1.TELEF_PROMO TELEFPROMO, T1.MODIF_ESENCIAL MODIFESENCIAL, T2.ID_RECURSO RECURSOIDRECURSO, T2.TIPO_RECURSO RECURSOTIPORECURSO, T2.DESC_NOMBRE RECURSODESCNOMBRE, T2.FECHA_BAJA RECURSOFECHABAJA, T2.NUM_REGISTRO RECURSONUMREGISTRO, T2.FECHA_REGISTRO RECURSOFECHAREGISTRO, T2.USUARIO_REGISTRO RECURSOUSUARIOREGISTRO, T2.FECHA_ULTMODIFICACION RECURSOFECHAULTMODIFICACION, T2.USUARIO_ULTMODIFICACION RECURSOUSUARIOULTMODIFICACION, T3.ID_TIPO_ESTABLECIMIENTO TIPOESTIDTIPOESTABLECIMIENTO, T3.DESC_TIPO_ES TIPOESTDESCTIPOES, T3.FECHA_MODIFICACION TIPOESTFECHAMODIFICACION, T3.NOM_USUARIO TIPOESTNOMUSUARIO, T3.BAJA TIPOESTBAJA, T3.DESC_TIPO_EU TIPOESTDESCTIPOEU, T3.ORDENACION TIPOESTORDENACION, T3.TIPIFICACION TIPOESTTIPIFICACION, T3.FECHA_REGISTRO TIPOESTFECHAREGISTRO, T3.USUARIO_REGISTRO TIPOESTUSUARIOREGISTRO, T3.FECHA_ULTMODIFICACION TIPOESTFECHAULTMODIFICACION, T3.USUARIO_ULTMODIFICACION TIPOESTUSUARIOULTMODIFICACION, T4.ID_GRUPO GRUPOIDGRUPO, T4.DESC_GRUPO_ES GRUPODESCGRUPOES, T4.FECHA_MODIFICACION GRUPOFECHAMODIFICACION, T4.NOM_USUARIO GRUPONOMUSUARIO, T4.BAJA GRUPOBAJA, T4.DESC_GRUPO_EU GRUPODESCGRUPOEU, T4.FECHA_REGISTRO GRUPOFECHAREGISTRO, T4.USUARIO_REGISTRO GRUPOUSUARIOREGISTRO, T4.FECHA_ULTMODIFICACION GRUPOFECHAULTMODIFICACION, T4.USUARIO_ULTMODIFICACION GRUPOUSUARIOULTMODIFICACION, T5.ID_CATEGORIAS CATEGIDCATEGORIAS, T5.DESC_CATEGORIA_ES CATEGDESCCATEGORIAES, T5.FECHA_MODIFICACION CATEGFECHAMODIFICACION, T5.NOM_USUARIO CATEGNOMUSUARIO, T5.BAJA CATEGBAJA, T5.DESC_CATEGORIA_EU CATEGDESCCATEGORIAEU, T5.FECHA_REGISTRO CATEGFECHAREGISTRO, T5.USUARIO_REGISTRO CATEGUSUARIOREGISTRO, T5.FECHA_ULTMODIFICACION CATEGFECHAULTMODIFICACION, T5.USUARIO_ULTMODIFICACION CATEGUSUARIOULTMODIFICACION, T6.ID_ESPECIALIDAD ESPIDESPECIALIDAD, T6.DESC_CATEGORIA_ES ESPDESCCATEGORIAES, T6.FECHA_MODIFICACION ESPFECHAMODIFICACION, T6.NOM_USUARIO ESPNOMUSUARIO, T6.BAJA ESPBAJA, T6.DESC_CATEGORIA_EU ESPDESCCATEGORIAEU, T6.FECHA_REGISTRO ESPFECHAREGISTRO, T6.USUARIO_REGISTRO ESPUSUARIOREGISTRO, T6.FECHA_ULTMODIFICACION ESPFECHAULTMODIFICACION, T6.USUARIO_ULTMODIFICACION ESPUSUARIOULTMODIFICACION, T7.ID_MODALIDAD MODAIDMODALIDAD, T7.DESC_MODALIDAD_ES MODADESCMODALIDADES, T7.FECHA_MODIFICACION MODAFECHAMODIFICACION, T7.NOM_USUARIO MODANOMUSUARIO, T7.BAJA MODABAJA, T7.DESC_MODALIDAD_EU MODADESCMODALIDADEU, T7.FECHA_REGISTRO MODAFECHAREGISTRO, T7.USUARIO_REGISTRO MODAUSUARIOREGISTRO, T7.FECHA_ULTMODIFICACION MODAFECHAULTMODIFICACION, T7.USUARIO_ULTMODIFICACION MODAUSUARIOULTMODIFICACION, T8.ID_ESTABLECIMIENTO DATAESTIDESTABLECIMIENTO, T8.FECHA_ANO_CONSTRUCCION DATAESTFECHAANOCONSTRUCCION, T8.FECHA_ANO_RENOVACION DATAESTFECHAANORENOVACION, T8.DERECHO_COCINA DATAESTDERECHOCOCINA, T8.SERVICIO_COMEDOR DATAESTSERVICIOCOMEDOR, T8.NUM_SALONES DATAESTNUMSALONES, T8.NUM_SALONES_COMEDOR DATAESTNUMSALONESCOMEDOR, T8.NUM_COMEDORES DATAESTNUMCOMEDORES, T8.NUM_BAÑOS_GENERALES DATAESTNUMBAÑOSGENERALES, T8.NUM_CONJUNTOS DATAESTNUMCONJUNTOS, T8.NUM_ESTUDIOS DATAESTNUMESTUDIOS, T8.NUM_HAB_DOBLE DATAESTNUMHABDOBLE, T8.NUM_HAB_INDIVIDUALES DATAESTNUMHABINDIVIDUALES, T8.NUM_MAXIMO_SUPLETORIAS DATAESTNUMMAXIMOSUPLETORIAS, T8.NUM_PLAZAS DATAESTNUMPLAZAS, T8.EDIFICIO_CATALOGADO DATAESTEDIFICIOCATALOGADO, T8.NUM_HAB_MAS_4 DATAESTNUMHABMAS4, T8.NUM_HAB_MENOS_4 DATAESTNUMHABMENOS4, T8.COMPARTE_VIVIENDAS DATAESTCOMPARTEVIVIENDAS, T8.NUM_HAB_DOBLE_CS DATAESTNUMHABDOBLECS, T8.NUM_APARTAMENTOS DATAESTNUMAPARTAMENTOS, T8.NUM_SUITES DATAESTNUMSUITES, T8.COMPARTE_INSTAL DATAESTCOMPARTEINSTAL, T8.NUM_INSTAL_COMPARTE DATAESTNUMINSTALCOMPARTE, T8.NUM_SUP_ACAMPADA DATAESTNUMSUPACAMPADA, T8.BAR DATAESTBAR, T8.RESTAURANTE DATAESTRESTAURANTE, T8.PISCINA DATAESTPISCINA, T8.NUM_TOT_PARCELAS DATAESTNUMTOTPARCELAS, T8.NUM_PARCELAS_ANF DATAESTNUMPARCELASANF, T8.NUM_PARCELAS_AF DATAESTNUMPARCELASAF, T8.NUM_PARCELAS_SA DATAESTNUMPARCELASSA, T8.INDICADOR_IA DATAESTINDICADORIA, T8.FECHA_CONTROL_IA DATAESTFECHACONTROLIA, T8.REQUISITOS DATAESTREQUISITOS, T8.NUM_CONTROL DATAESTNUMCONTROL, T8.FECHA_ANT_CONTROL DATAESTFECHAANTCONTROL, T8.NUM_HABITACIONES DATAESTNUMHABITACIONES, T8.NUM_RESIDENTES_PERM DATAESTNUMRESIDENTESPERM, T8.SUP_TOT_HABITAC DATAESTSUPTOTHABITAC, T8.SUP_RESTO_DEPEN DATAESTSUPRESTODEPEN, T8.FECHA_REGISTRO DATAESTFECHAREGISTRO, T8.USUARIO_REGISTRO DATAESTUSUARIOREGISTRO, T8.FECHA_ULTMODIFICACION DATAESTFECHAULTMODIFICACION, T8.USUARIO_ULTMODIFICACION DATAESTUSUARIOULTMODIFICACION, T8.DISPONE_COCINA DISPONECOCINA, T8.DISPONE_SALON DISPONESALON, T9.ID_ESTABLECIMIENTO FRANQIDESTABLECIMIENTO, T9.FRANQUICIA FRANQFRANQUICIA, T12.ID_FRANQUICIA AB6336S00IDFRANQUICIA, T12.DESC_FRANQUICIA_ES AB6336S00DESCFRANQUICIAES, T12.DESC_FRANQUICIA_EU AB6336S00DESCFRANQUICIAEU, T12.BAJA AB6336S00BAJA, T9.INDONLINE FRANQINDONLINE, T9.ID_INSTAL_OFI_PRINCIPAL FRANQIDINSTALOFIPRINCIPAL, T9.ID_ORIGEN_OFI_PRINCIPAL FRANQIDORIGENOFIPRINCIPAL, T9.ID_TIPO_CIE FRANQIDTIPOCIE, T9.ETIQUETA_CIE FRANQETIQUETACIE, T9.REGISTRO_FIANZA FRANQREGISTROFIANZA, T9.OBSERV_FIANZA FRANQOBSERVFIANZA, T9.OBSERV_SRC FRANQOBSERVSRC, T9.ID_PRIMERA_SUCURSAL FRANQIDPRIMERASUCURSAL, T9.NUM_CIE FRANQNUMCIE, T9.FECHA_REGISTRO FRANQFECHAREGISTRO, T9.USUARIO_REGISTRO FRANQUSUARIOREGISTRO, T9.FECHA_ULTMODIFICACION FRANQFECHAULTMODIFICACION, T9.USUARIO_ULTMODIFICACION FRANQUSUARIOULTMODIFICACION, T4.ID_TIPO_ESTABLECIMIENTO AB6312S00IDTIPOESTABLECIMIENTO, T5.ID_TIPO_ESTABLECIMIENTO AB6313S00IDTIPOESTABLECIMIENTO, T6.ID_TIPO_ESTABLECIMIENTO AB6315S00IDTIPOESTABLECIMIENTO, T7.ID_TIPO_ESTABLECIMIENTO AB6314S00IDTIPOESTABLECIMIENTO, VS10.ID_ESTABLECIMIENTO AB6339S00IDESTAB, VS10.ID_TERCERO AB6339S00IDTERCERO, VS10.DOCUMENTO NIFINTERESADO, VS10.NOMBRE NOMBREINTERESADO, VS10.APELLIDO1 APELLIDO1INTERESADO, VS10.APELLIDO2 APELLIDO2INTERESADO, VS10.EMAIL EMAILINTERESADO, VS10.TELEFONO TELEFONOINTERESADO, T36.ID_DIRECCION, T36.ID_PROVINCIA, T36.ID_MUNICIPIO, T36.ID_LOCALIDAD, T36.DIRECCION, T36.NUMERO, T36.ESCALERA, T36.PISO, T36.LETRA, T36.CODIGO_POSTAL, T36.IDPAIS, T36.DESCRIPCIONPROVINCIAEXTR, T36.DESCRIPCIONCIUDADEXTR, T1.ID_EXPEDIENTE IDEXPEDIENTE, T1.ID_ESTABLECIMIENTO_PADRE IDESTABLECIMIENTOPADRE, T1.TIPO_REGISTRO TIPO_REGISTRO, T1.IDESTAB_SOLIC IDESTABSOLIC, T1.PERIODO_PUENTES PERIODOPUENTES, T1.PERIODO_VACACIONES PERIODOVACACIONES, T1.PERIODO_VERANO PERIODOVERANO, T1.SIN_PERIODO_PREF SINPERIODOPREF, T20.ID_DISPENSAS_ESTAB IDDISPENSASESTAB, T20.FECHA_DISPENSA FECHADISPENSA, T20.OBSERVACIONES_DESC_ES OBSERVACIONESDESCES, T20.OBSERVACIONES_DESC_EU OBSERVACIONESDESCEU, T20.ID_ESTABLECIMIENTO IDESTABDISPENSA, T20.FECHA_REGISTRO FECHAREGDISPENSA, T20.USUARIO_REGISTRO USUARIOREGDISPENSA, T20.FECHA_ULTMODIFICACION FECHAULTMODIF, T20.USUARIO_ULTMODIFICACION USUARIOULTMODIF, T20.FOLDER_ID FOLDERID, T20.FOLDER_NUMBER FOLDERNUMBER, T20.DISPENSADO DISPENSADO, T8.NUM_DORM_RESID NUMDORMRESID, T8.NUM_DORM_USUARIO NUMDORMUSUARIO, T8.SUPERFICIE_TOTAL SUPTOTAL, T36.MUNICIPIODSO, T8.NUM_SUP_COCINA NUMSUPCOCINA FROM AB6301S00 T1, AB6300S00 T2, AB6311S00 T3, AB6312S00 T4, AB6313S00 T5, AB6315S00 T6, AB6314S00 T7, AB6321S00 T8, AB6335S00 T9, ( SELECT VS39.ID_ESTABLECIMIENTO, VS35.* FROM ( SELECT VS39.ID_ESTABLECIMIENTO, VS39.ID_TIPO_TERCERO ID_TIPO_TERCERO, MAX(VS39.ID_TERCERO) ID_TERCERO FROM AB6339S00 VS39 WHERE VS39.ID_TIPO_TERCERO = 9 AND VS39.BAJA = 0 GROUP BY VS39.ID_ESTABLECIMIENTO, ID_TIPO_TERCERO ) VS39, DATOS_TERCERO VS35 WHERE VS39.ID_TERCERO = VS35.ID_TERCERO AND VS39.ID_TIPO_TERCERO = 9 ) VS10, ( SELECT DISPENSADO, FECHA_DISPENSA, FECHA_REGISTRO, FECHA_ULTMODIFICACION, FOLDER_ID, FOLDER_NUMBER, ID_DISPENSAS_ESTAB, ID_ESTABLECIMIENTO, OBSERVACIONES_DESC_ES, OBSERVACIONES_DESC_EU, USUARIO_REGISTRO, USUARIO_ULTMODIFICACION FROM AB6320S00 WHERE DISPENSADO = '1' ) T20, ( SELECT VT39.ID_ESTABLECIMIENTO, DIR.ID_DIRECCION, DIR.ID_TERCERO, DIR.ID_PROVINCIA, DIR.ID_MUNICIPIO, DIR.ID_LOCALIDAD, DIR.DIRECCION, DIR.NUMERO, DIR.ESCALERA, DIR.PISO, DIR.LETRA, DIR.CODIGO_POSTAL, DIR.ID_PAIS IDPAIS, DIR.DESCRIPCION_PROVINCIA DESCRIPCIONPROVINCIAEXTR, DIR.DESCRIPCION_CIUDAD DESCRIPCIONCIUDADEXTR, T17.DS_O MUNICIPIODSO FROM DATOS_DIRECCIONES DIR, MUNICIPIOS T17, AB6339S00 VT39 WHERE DIR.ID_TIPO_DIRECCION = 2 AND DIR.ID_PROVINCIA = T17.PROVINCIA_ID (+) AND DIR.ID_MUNICIPIO = T17.ID (+) AND DIR.ID_TERCERO = VT39.ID_TERCERO ) T36, AB6336S00 T12 WHERE 1 = 1 AND T1.ID_ESTABLECIMIENTO = T20.ID_ESTABLECIMIENTO (+) AND T1.ID_RECURSO = T2.ID_RECURSO (+) AND T1.ID_TIPO_ESTABLECIMIENTO = T3.ID_TIPO_ESTABLECIMIENTO AND ( T1.ID_GRUPO = T4.ID_GRUPO (+) AND T4.ID_TIPO_ESTABLECIMIENTO (+) = T1.ID_TIPO_ESTABLECIMIENTO ) AND ( T1.ID_CATEGORIAS = T5.ID_CATEGORIAS (+) AND T5.ID_TIPO_ESTABLECIMIENTO (+) = T1.ID_TIPO_ESTABLECIMIENTO ) AND ( T1.ID_ESPECIALIDAD = T6.ID_ESPECIALIDAD (+) AND T6.ID_TIPO_ESTABLECIMIENTO (+) = T1.ID_TIPO_ESTABLECIMIENTO ) AND ( T1.ID_MODALIDAD = T7.ID_MODALIDAD (+) AND T7.ID_TIPO_ESTABLECIMIENTO (+) = T1.ID_TIPO_ESTABLECIMIENTO ) AND T1.ID_ESTABLECIMIENTO = T8.ID_ESTABLECIMIENTO (+) AND T1.ID_ESTABLECIMIENTO = T9.ID_ESTABLECIMIENTO (+) AND T9.ID_FRANQUICIA = T12.ID_FRANQUICIA (+) AND T1.ID_ESTABLECIMIENTO = T36.ID_ESTABLECIMIENTO (+) AND T1.ID_ESTABLECIMIENTO = T9.ID_ESTABLECIMIENTO (+) AND T1.ID_ESTABLECIMIENTO = VS10.ID_ESTABLECIMIENTO (+) AND T1.ID_ESTABLECIMIENTO = ?";

		List<Establecimiento> establecimientoList = this.jdbcTemplate.query(query, this.rwMap,
				filter.getIdEstablecimiento());
		if (!establecimientoList.isEmpty()) {
			return establecimientoList.get(0);
		}
		return new Establecimiento();
	}

	/**
	 * Finds a single row in the Ab6301s00 table.
	 *
	 * @param filter
	 *            Ab6301s00
	 * @return Ab6301s00
	 */
	@Transactional(readOnly = true)
	public Establecimiento findByIdenticadorEstablecimiento(Establecimiento filter) {
		String query = "SELECT T1.ID_ESTABLECIMIENTO IDESTABLECIMIENTO, T1.IDENTIFICADOR_ESTABLECIMIENTO IDENTIFICADORESTABLECIMIENTO, T1.DESC_NOMBRE DESCNOMBRE, T1.VISIBLEWEB VISIBLEWEB, T1.TEMPORADA TEMPORADA, T1.URLWEB URLWEB, T1.ID_DEFECTOS IDDEFECTOS, T1.NUM_UNIDADES_ALOJAMIENTO NUMUNIDADESALOJAMIENTO, T1.OBSERVACIONES OBSERVACIONES, T1.FECHA_APERTURA FECHAAPERTURA, T1.FECHA_BAJA FECHABAJA, T1.FECHA_INICIERRETEMP FECHAINICIERRETEMP, T1.FECHA_FINCIERRETEMP FECHAFINCIERRETEMP, T1.FECHA_VCTO_CIERRE FECHAVCTOCIERRE, T1.FECHA_ULT_NOTIFICACION FECHAULTNOTIFICACION, T1.FECHA_ULT_INSPECCION FECHAULTINSPECCION, T1.FECHA_PRO_INSPECCION FECHAPROINSPECCION, T1.FECHA_ULT_ACTUALIZACION FECHAULTACTUALIZACION, T1.FECHA_CLAUSURA FECHACLAUSURA, T1.FECHA_ULT_REFORMA FECHAULTREFORMA, T1.ELIMINADO ELIMINADO, T1.EXPEDIENTEB29 EXPEDIENTEB29, T1.ID_PORTAL_S41 IDPORTALS41, T1.URL_PORTAL_S41 URLPORTALS41, T1.FECHA_CONTROL_S41 FECHACONTROLS41, T1.NUM_INSTALACION_ANTERIOR NUMINSTALACIONANTERIOR, T1.FECHA_INSCRIPCION FECHAINSCRIPCION, T1.NUM_INSTALACION_WZ NUMINSTALACIONWZ, T1.OBSERVACIONES2 OBSERVACIONES2, T1.NOTAS_MIGRACION NOTASMIGRACION, T1.AGRUPACION AGRUPACION, T1.REF_CATASTRAL REFCATASTRAL, T1.OBS_SEGRESPCIVIL OBSSEGRESPCIVIL, T1.FECHA_REGISTRO FECHAREGISTRO, T1.USUARIO_REGISTRO USUARIOREGISTRO, T1.FECHA_ULTMODIFICACION FECHAULTMODIFICACION, T1.USUARIO_ULTMODIFICACION USUARIOULTMODIFICACION, T1.EMAIL EMAIL, T1.TELEFONO TELEFONO, T1.TELEF_PROMO TELEFPROMO, T1.MODIF_ESENCIAL MODIFESENCIAL, T2.ID_RECURSO RECURSOIDRECURSO, T2.TIPO_RECURSO RECURSOTIPORECURSO, T2.DESC_NOMBRE RECURSODESCNOMBRE, T2.FECHA_BAJA RECURSOFECHABAJA, T2.NUM_REGISTRO RECURSONUMREGISTRO, T2.FECHA_REGISTRO RECURSOFECHAREGISTRO, T2.USUARIO_REGISTRO RECURSOUSUARIOREGISTRO, T2.FECHA_ULTMODIFICACION RECURSOFECHAULTMODIFICACION, T2.USUARIO_ULTMODIFICACION RECURSOUSUARIOULTMODIFICACION, T3.ID_TIPO_ESTABLECIMIENTO TIPOESTIDTIPOESTABLECIMIENTO, T3.DESC_TIPO_ES TIPOESTDESCTIPOES, T3.FECHA_MODIFICACION TIPOESTFECHAMODIFICACION, T3.NOM_USUARIO TIPOESTNOMUSUARIO, T3.BAJA TIPOESTBAJA, T3.DESC_TIPO_EU TIPOESTDESCTIPOEU, T3.ORDENACION TIPOESTORDENACION, T3.TIPIFICACION TIPOESTTIPIFICACION, T3.FECHA_REGISTRO TIPOESTFECHAREGISTRO, T3.USUARIO_REGISTRO TIPOESTUSUARIOREGISTRO, T3.FECHA_ULTMODIFICACION TIPOESTFECHAULTMODIFICACION, T3.USUARIO_ULTMODIFICACION TIPOESTUSUARIOULTMODIFICACION, T4.ID_GRUPO GRUPOIDGRUPO, T4.DESC_GRUPO_ES GRUPODESCGRUPOES, T4.FECHA_MODIFICACION GRUPOFECHAMODIFICACION, T4.NOM_USUARIO GRUPONOMUSUARIO, T4.BAJA GRUPOBAJA, T4.DESC_GRUPO_EU GRUPODESCGRUPOEU, T4.FECHA_REGISTRO GRUPOFECHAREGISTRO, T4.USUARIO_REGISTRO GRUPOUSUARIOREGISTRO, T4.FECHA_ULTMODIFICACION GRUPOFECHAULTMODIFICACION, T4.USUARIO_ULTMODIFICACION GRUPOUSUARIOULTMODIFICACION, T5.ID_CATEGORIAS CATEGIDCATEGORIAS, T5.DESC_CATEGORIA_ES CATEGDESCCATEGORIAES, T5.FECHA_MODIFICACION CATEGFECHAMODIFICACION, T5.NOM_USUARIO CATEGNOMUSUARIO, T5.BAJA CATEGBAJA, T5.DESC_CATEGORIA_EU CATEGDESCCATEGORIAEU, T5.FECHA_REGISTRO CATEGFECHAREGISTRO, T5.USUARIO_REGISTRO CATEGUSUARIOREGISTRO, T5.FECHA_ULTMODIFICACION CATEGFECHAULTMODIFICACION, T5.USUARIO_ULTMODIFICACION CATEGUSUARIOULTMODIFICACION, T6.ID_ESPECIALIDAD ESPIDESPECIALIDAD, T6.DESC_CATEGORIA_ES ESPDESCCATEGORIAES, T6.FECHA_MODIFICACION ESPFECHAMODIFICACION, T6.NOM_USUARIO ESPNOMUSUARIO, T6.BAJA ESPBAJA, T6.DESC_CATEGORIA_EU ESPDESCCATEGORIAEU, T6.FECHA_REGISTRO ESPFECHAREGISTRO, T6.USUARIO_REGISTRO ESPUSUARIOREGISTRO, T6.FECHA_ULTMODIFICACION ESPFECHAULTMODIFICACION, T6.USUARIO_ULTMODIFICACION ESPUSUARIOULTMODIFICACION, T7.ID_MODALIDAD MODAIDMODALIDAD, T7.DESC_MODALIDAD_ES MODADESCMODALIDADES, T7.FECHA_MODIFICACION MODAFECHAMODIFICACION, T7.NOM_USUARIO MODANOMUSUARIO, T7.BAJA MODABAJA, T7.DESC_MODALIDAD_EU MODADESCMODALIDADEU, T7.FECHA_REGISTRO MODAFECHAREGISTRO, T7.USUARIO_REGISTRO MODAUSUARIOREGISTRO, T7.FECHA_ULTMODIFICACION MODAFECHAULTMODIFICACION, T7.USUARIO_ULTMODIFICACION MODAUSUARIOULTMODIFICACION, T8.ID_ESTABLECIMIENTO DATAESTIDESTABLECIMIENTO, T8.FECHA_ANO_CONSTRUCCION DATAESTFECHAANOCONSTRUCCION, T8.FECHA_ANO_RENOVACION DATAESTFECHAANORENOVACION, T8.DERECHO_COCINA DATAESTDERECHOCOCINA, T8.SERVICIO_COMEDOR DATAESTSERVICIOCOMEDOR, T8.NUM_SALONES DATAESTNUMSALONES, T8.NUM_SALONES_COMEDOR DATAESTNUMSALONESCOMEDOR, T8.NUM_COMEDORES DATAESTNUMCOMEDORES, T8.NUM_BAÑOS_GENERALES DATAESTNUMBAÑOSGENERALES, T8.NUM_CONJUNTOS DATAESTNUMCONJUNTOS, T8.NUM_ESTUDIOS DATAESTNUMESTUDIOS, T8.NUM_HAB_DOBLE DATAESTNUMHABDOBLE, T8.NUM_HAB_INDIVIDUALES DATAESTNUMHABINDIVIDUALES, T8.NUM_MAXIMO_SUPLETORIAS DATAESTNUMMAXIMOSUPLETORIAS, T8.NUM_PLAZAS DATAESTNUMPLAZAS, T8.EDIFICIO_CATALOGADO DATAESTEDIFICIOCATALOGADO, T8.NUM_HAB_MAS_4 DATAESTNUMHABMAS4, T8.NUM_HAB_MENOS_4 DATAESTNUMHABMENOS4, T8.COMPARTE_VIVIENDAS DATAESTCOMPARTEVIVIENDAS, T8.NUM_HAB_DOBLE_CS DATAESTNUMHABDOBLECS, T8.NUM_APARTAMENTOS DATAESTNUMAPARTAMENTOS, T8.NUM_SUITES DATAESTNUMSUITES, T8.COMPARTE_INSTAL DATAESTCOMPARTEINSTAL, T8.NUM_INSTAL_COMPARTE DATAESTNUMINSTALCOMPARTE, T8.NUM_SUP_ACAMPADA DATAESTNUMSUPACAMPADA, T8.BAR DATAESTBAR, T8.RESTAURANTE DATAESTRESTAURANTE, T8.PISCINA DATAESTPISCINA, T8.NUM_TOT_PARCELAS DATAESTNUMTOTPARCELAS, T8.NUM_PARCELAS_ANF DATAESTNUMPARCELASANF, T8.NUM_PARCELAS_AF DATAESTNUMPARCELASAF, T8.NUM_PARCELAS_SA DATAESTNUMPARCELASSA, T8.INDICADOR_IA DATAESTINDICADORIA, T8.FECHA_CONTROL_IA DATAESTFECHACONTROLIA, T8.REQUISITOS DATAESTREQUISITOS, T8.NUM_CONTROL DATAESTNUMCONTROL, T8.FECHA_ANT_CONTROL DATAESTFECHAANTCONTROL, T8.NUM_HABITACIONES DATAESTNUMHABITACIONES, T8.NUM_RESIDENTES_PERM DATAESTNUMRESIDENTESPERM, T8.SUP_TOT_HABITAC DATAESTSUPTOTHABITAC, T8.SUP_RESTO_DEPEN DATAESTSUPRESTODEPEN, T8.FECHA_REGISTRO DATAESTFECHAREGISTRO, T8.USUARIO_REGISTRO DATAESTUSUARIOREGISTRO, T8.FECHA_ULTMODIFICACION DATAESTFECHAULTMODIFICACION, T8.USUARIO_ULTMODIFICACION DATAESTUSUARIOULTMODIFICACION, T8.DISPONE_COCINA DISPONECOCINA, T8.DISPONE_SALON DISPONESALON, T9.ID_ESTABLECIMIENTO FRANQIDESTABLECIMIENTO, T9.FRANQUICIA FRANQFRANQUICIA, T12.ID_FRANQUICIA AB6336S00IDFRANQUICIA, T12.DESC_FRANQUICIA_ES AB6336S00DESCFRANQUICIAES, T12.DESC_FRANQUICIA_EU AB6336S00DESCFRANQUICIAEU, T12.BAJA AB6336S00BAJA, T9.INDONLINE FRANQINDONLINE, T9.ID_INSTAL_OFI_PRINCIPAL FRANQIDINSTALOFIPRINCIPAL, T9.ID_ORIGEN_OFI_PRINCIPAL FRANQIDORIGENOFIPRINCIPAL, T9.ID_TIPO_CIE FRANQIDTIPOCIE, T9.ETIQUETA_CIE FRANQETIQUETACIE, T9.REGISTRO_FIANZA FRANQREGISTROFIANZA, T9.OBSERV_FIANZA FRANQOBSERVFIANZA, T9.OBSERV_SRC FRANQOBSERVSRC, T9.ID_PRIMERA_SUCURSAL FRANQIDPRIMERASUCURSAL, T9.NUM_CIE FRANQNUMCIE, T9.FECHA_REGISTRO FRANQFECHAREGISTRO, T9.USUARIO_REGISTRO FRANQUSUARIOREGISTRO, T9.FECHA_ULTMODIFICACION FRANQFECHAULTMODIFICACION, T9.USUARIO_ULTMODIFICACION FRANQUSUARIOULTMODIFICACION, T4.ID_TIPO_ESTABLECIMIENTO AB6312S00IDTIPOESTABLECIMIENTO, T5.ID_TIPO_ESTABLECIMIENTO AB6313S00IDTIPOESTABLECIMIENTO, T6.ID_TIPO_ESTABLECIMIENTO AB6315S00IDTIPOESTABLECIMIENTO, T7.ID_TIPO_ESTABLECIMIENTO AB6314S00IDTIPOESTABLECIMIENTO, VS10.ID_ESTABLECIMIENTO AB6339S00IDESTAB, VS10.ID_TERCERO AB6339S00IDTERCERO, VS10.DOCUMENTO NIFINTERESADO, VS10.NOMBRE NOMBREINTERESADO, VS10.APELLIDO1 APELLIDO1INTERESADO, VS10.APELLIDO2 APELLIDO2INTERESADO, VS10.EMAIL EMAILINTERESADO, VS10.TELEFONO TELEFONOINTERESADO, T36.ID_DIRECCION, T36.ID_PROVINCIA, T36.ID_MUNICIPIO, T36.ID_LOCALIDAD, T36.DIRECCION, T36.NUMERO, T36.ESCALERA, T36.PISO, T36.LETRA, T36.CODIGO_POSTAL, T36.IDPAIS, T36.DESCRIPCIONPROVINCIAEXTR, T36.DESCRIPCIONCIUDADEXTR, T1.ID_EXPEDIENTE IDEXPEDIENTE, T1.ID_ESTABLECIMIENTO_PADRE IDESTABLECIMIENTOPADRE, T1.TIPO_REGISTRO TIPO_REGISTRO, T1.IDESTAB_SOLIC IDESTABSOLIC, T1.PERIODO_PUENTES PERIODOPUENTES, T1.PERIODO_VACACIONES PERIODOVACACIONES, T1.PERIODO_VERANO PERIODOVERANO, T1.SIN_PERIODO_PREF SINPERIODOPREF, T20.ID_DISPENSAS_ESTAB IDDISPENSASESTAB, T20.FECHA_DISPENSA FECHADISPENSA, T20.OBSERVACIONES_DESC_ES OBSERVACIONESDESCES, T20.OBSERVACIONES_DESC_EU OBSERVACIONESDESCEU, T20.ID_ESTABLECIMIENTO IDESTABDISPENSA, T20.FECHA_REGISTRO FECHAREGDISPENSA, T20.USUARIO_REGISTRO USUARIOREGDISPENSA, T20.FECHA_ULTMODIFICACION FECHAULTMODIF, T20.USUARIO_ULTMODIFICACION USUARIOULTMODIF, T20.FOLDER_ID FOLDERID, T20.FOLDER_NUMBER FOLDERNUMBER, T20.DISPENSADO DISPENSADO, T8.NUM_DORM_RESID NUMDORMRESID, T8.NUM_DORM_USUARIO NUMDORMUSUARIO, T8.SUPERFICIE_TOTAL SUPTOTAL, T36.MUNICIPIODSO, T8.NUM_SUP_COCINA NUMSUPCOCINA FROM AB6301S00 T1, AB6300S00 T2, AB6311S00 T3, AB6312S00 T4, AB6313S00 T5, AB6315S00 T6, AB6314S00 T7, AB6321S00 T8, AB6335S00 T9, ( SELECT VS39.ID_ESTABLECIMIENTO, VS35.* FROM ( SELECT VS39.ID_ESTABLECIMIENTO, VS39.ID_TIPO_TERCERO ID_TIPO_TERCERO, MAX(VS39.ID_TERCERO) ID_TERCERO FROM AB6339S00 VS39 WHERE VS39.ID_TIPO_TERCERO = 9 AND VS39.BAJA = 0 GROUP BY VS39.ID_ESTABLECIMIENTO, ID_TIPO_TERCERO ) VS39, DATOS_TERCERO VS35 WHERE VS39.ID_TERCERO = VS35.ID_TERCERO AND VS39.ID_TIPO_TERCERO = 9 ) VS10, ( SELECT DISPENSADO, FECHA_DISPENSA, FECHA_REGISTRO, FECHA_ULTMODIFICACION, FOLDER_ID, FOLDER_NUMBER, ID_DISPENSAS_ESTAB, ID_ESTABLECIMIENTO, OBSERVACIONES_DESC_ES, OBSERVACIONES_DESC_EU, USUARIO_REGISTRO, USUARIO_ULTMODIFICACION FROM AB6320S00 WHERE DISPENSADO = '1' ) T20, ( SELECT VT39.ID_ESTABLECIMIENTO, DIR.ID_DIRECCION, DIR.ID_TERCERO, DIR.ID_PROVINCIA, DIR.ID_MUNICIPIO, DIR.ID_LOCALIDAD, DIR.DIRECCION, DIR.NUMERO, DIR.ESCALERA, DIR.PISO, DIR.LETRA, DIR.CODIGO_POSTAL, DIR.ID_PAIS IDPAIS, DIR.DESCRIPCION_PROVINCIA DESCRIPCIONPROVINCIAEXTR, DIR.DESCRIPCION_CIUDAD DESCRIPCIONCIUDADEXTR, T17.DS_O MUNICIPIODSO FROM DATOS_DIRECCIONES DIR, MUNICIPIOS T17, AB6339S00 VT39 WHERE DIR.ID_TIPO_DIRECCION = 2 AND DIR.ID_PROVINCIA = T17.PROVINCIA_ID (+) AND DIR.ID_MUNICIPIO = T17.ID (+) AND DIR.ID_TERCERO = VT39.ID_TERCERO ) T36, AB6336S00 T12 WHERE 1 = 1 AND T1.ID_ESTABLECIMIENTO = T20.ID_ESTABLECIMIENTO (+) AND T1.ID_RECURSO = T2.ID_RECURSO (+) AND T1.ID_TIPO_ESTABLECIMIENTO = T3.ID_TIPO_ESTABLECIMIENTO AND ( T1.ID_GRUPO = T4.ID_GRUPO (+) AND T4.ID_TIPO_ESTABLECIMIENTO (+) = T1.ID_TIPO_ESTABLECIMIENTO ) AND ( T1.ID_CATEGORIAS = T5.ID_CATEGORIAS (+) AND T5.ID_TIPO_ESTABLECIMIENTO (+) = T1.ID_TIPO_ESTABLECIMIENTO ) AND ( T1.ID_ESPECIALIDAD = T6.ID_ESPECIALIDAD (+) AND T6.ID_TIPO_ESTABLECIMIENTO (+) = T1.ID_TIPO_ESTABLECIMIENTO ) AND ( T1.ID_MODALIDAD = T7.ID_MODALIDAD (+) AND T7.ID_TIPO_ESTABLECIMIENTO (+) = T1.ID_TIPO_ESTABLECIMIENTO ) AND T1.ID_ESTABLECIMIENTO = T8.ID_ESTABLECIMIENTO (+) AND T1.ID_ESTABLECIMIENTO = T9.ID_ESTABLECIMIENTO (+) AND T9.ID_FRANQUICIA = T12.ID_FRANQUICIA (+) AND T1.ID_ESTABLECIMIENTO = T36.ID_ESTABLECIMIENTO (+) AND T1.ID_ESTABLECIMIENTO = T9.ID_ESTABLECIMIENTO (+) AND T1.ID_ESTABLECIMIENTO = VS10.ID_ESTABLECIMIENTO (+) AND UPPER(T1.IDENTIFICADOR_ESTABLECIMIENTO) = UPPER(?)";
		List<Establecimiento> establecimientoList = this.jdbcTemplate.query(query, this.rwMap,
				filter.getIdentificadorEstablecimiento());
		if (!establecimientoList.isEmpty()) {
			return establecimientoList.get(0);
		}
		return new Establecimiento();
	}

	/**
	 * Removes a single row in the Ab6301s00 table.
	 *
	 * @param ab6301s00
	 *            Ab6301s00
	 * @return
	 */
	public void remove(Establecimiento ab6301s00) {
		String query = "DELETE FROM AB6301S00 WHERE ID_ESTABLECIMIENTO=?";
		this.jdbcTemplate.update(query, ab6301s00.getIdEstablecimiento());
	}

	/**
	 * Finds a list of rows in the Ab6301s00 table.
	 *
	 * @param ab6301s00
	 *            Ab6301s00
	 * @param jqGridRequestDto
	 *            JQGridRequestDto
	 * @return List<Ab6301s00>
	 */
	@Transactional(readOnly = true)
	public List<Establecimiento> findAll(Establecimiento ab6301s00, JQGridRequestDto jqGridRequestDto) {
		StringBuilder query = new StringBuilder(
				"SELECT T1.ID_ESTABLECIMIENTO IDESTABLECIMIENTO, T1.IDENTIFICADOR_ESTABLECIMIENTO IDENTIFICADORESTABLECIMIENTO, T1.DESC_NOMBRE DESCNOMBRE, T1.VISIBLEWEB VISIBLEWEB, T1.TEMPORADA TEMPORADA, T1.URLWEB URLWEB, T1.ID_DEFECTOS IDDEFECTOS, T1.NUM_UNIDADES_ALOJAMIENTO NUMUNIDADESALOJAMIENTO, T1.OBSERVACIONES OBSERVACIONES, T1.FECHA_APERTURA FECHAAPERTURA, T1.FECHA_BAJA FECHABAJA, T1.FECHA_INICIERRETEMP FECHAINICIERRETEMP, T1.FECHA_FINCIERRETEMP FECHAFINCIERRETEMP, T1.FECHA_VCTO_CIERRE FECHAVCTOCIERRE, T1.FECHA_ULT_NOTIFICACION FECHAULTNOTIFICACION, T1.FECHA_ULT_INSPECCION FECHAULTINSPECCION, T1.FECHA_PRO_INSPECCION FECHAPROINSPECCION, T1.FECHA_ULT_ACTUALIZACION FECHAULTACTUALIZACION, T1.FECHA_CLAUSURA FECHACLAUSURA, T1.FECHA_ULT_REFORMA FECHAULTREFORMA, T1.ELIMINADO ELIMINADO, T1.EXPEDIENTEB29 EXPEDIENTEB29, T1.ID_PORTAL_S41 IDPORTALS41, T1.URL_PORTAL_S41 URLPORTALS41, T1.FECHA_CONTROL_S41 FECHACONTROLS41, T1.NUM_INSTALACION_ANTERIOR NUMINSTALACIONANTERIOR, T1.FECHA_INSCRIPCION FECHAINSCRIPCION, T1.NUM_INSTALACION_WZ NUMINSTALACIONWZ, T1.OBSERVACIONES2 OBSERVACIONES2, T1.NOTAS_MIGRACION NOTASMIGRACION, T1.AGRUPACION AGRUPACION, T1.REF_CATASTRAL REFCATASTRAL, T1.OBS_SEGRESPCIVIL OBSSEGRESPCIVIL, T1.FECHA_REGISTRO FECHAREGISTRO, T1.USUARIO_REGISTRO USUARIOREGISTRO, T1.FECHA_ULTMODIFICACION FECHAULTMODIFICACION, T1.USUARIO_ULTMODIFICACION USUARIOULTMODIFICACION, T1.EMAIL EMAIL, T1.TELEFONO TELEFONO, T1.TELEF_PROMO TELEFPROMO, T1.MODIF_ESENCIAL MODIFESENCIAL, T2.ID_RECURSO RECURSOIDRECURSO, T2.TIPO_RECURSO RECURSOTIPORECURSO, T2.DESC_NOMBRE RECURSODESCNOMBRE, T2.FECHA_BAJA RECURSOFECHABAJA, T2.NUM_REGISTRO RECURSONUMREGISTRO, T2.FECHA_REGISTRO RECURSOFECHAREGISTRO, T2.USUARIO_REGISTRO RECURSOUSUARIOREGISTRO, T2.FECHA_ULTMODIFICACION RECURSOFECHAULTMODIFICACION, T2.USUARIO_ULTMODIFICACION RECURSOUSUARIOULTMODIFICACION, T3.ID_TIPO_ESTABLECIMIENTO TIPOESTIDTIPOESTABLECIMIENTO, T3.DESC_TIPO_ES TIPOESTDESCTIPOES, T3.FECHA_MODIFICACION TIPOESTFECHAMODIFICACION, T3.NOM_USUARIO TIPOESTNOMUSUARIO, T3.BAJA TIPOESTBAJA, T3.DESC_TIPO_EU TIPOESTDESCTIPOEU, T3.ORDENACION TIPOESTORDENACION, T3.TIPIFICACION TIPOESTTIPIFICACION, T3.FECHA_REGISTRO TIPOESTFECHAREGISTRO, T3.USUARIO_REGISTRO TIPOESTUSUARIOREGISTRO, T3.FECHA_ULTMODIFICACION TIPOESTFECHAULTMODIFICACION, T3.USUARIO_ULTMODIFICACION TIPOESTUSUARIOULTMODIFICACION, T4.ID_GRUPO GRUPOIDGRUPO, T4.DESC_GRUPO_ES GRUPODESCGRUPOES, T4.FECHA_MODIFICACION GRUPOFECHAMODIFICACION, T4.NOM_USUARIO GRUPONOMUSUARIO, T4.BAJA GRUPOBAJA, T4.DESC_GRUPO_EU GRUPODESCGRUPOEU, T4.FECHA_REGISTRO GRUPOFECHAREGISTRO, T4.USUARIO_REGISTRO GRUPOUSUARIOREGISTRO, T4.FECHA_ULTMODIFICACION GRUPOFECHAULTMODIFICACION, T4.USUARIO_ULTMODIFICACION GRUPOUSUARIOULTMODIFICACION, T5.ID_CATEGORIAS CATEGIDCATEGORIAS, T5.DESC_CATEGORIA_ES CATEGDESCCATEGORIAES, T5.FECHA_MODIFICACION CATEGFECHAMODIFICACION, T5.NOM_USUARIO CATEGNOMUSUARIO, T5.BAJA CATEGBAJA, T5.DESC_CATEGORIA_EU CATEGDESCCATEGORIAEU, T5.FECHA_REGISTRO CATEGFECHAREGISTRO, T5.USUARIO_REGISTRO CATEGUSUARIOREGISTRO, T5.FECHA_ULTMODIFICACION CATEGFECHAULTMODIFICACION, T5.USUARIO_ULTMODIFICACION CATEGUSUARIOULTMODIFICACION, T6.ID_ESPECIALIDAD ESPIDESPECIALIDAD, T6.DESC_CATEGORIA_ES ESPDESCCATEGORIAES, T6.FECHA_MODIFICACION ESPFECHAMODIFICACION, T6.NOM_USUARIO ESPNOMUSUARIO, T6.BAJA ESPBAJA, T6.DESC_CATEGORIA_EU ESPDESCCATEGORIAEU, T6.FECHA_REGISTRO ESPFECHAREGISTRO, T6.USUARIO_REGISTRO ESPUSUARIOREGISTRO, T6.FECHA_ULTMODIFICACION ESPFECHAULTMODIFICACION, T6.USUARIO_ULTMODIFICACION ESPUSUARIOULTMODIFICACION, T7.ID_MODALIDAD MODAIDMODALIDAD, T7.DESC_MODALIDAD_ES MODADESCMODALIDADES, T7.FECHA_MODIFICACION MODAFECHAMODIFICACION, T7.NOM_USUARIO MODANOMUSUARIO, T7.BAJA MODABAJA, T7.DESC_MODALIDAD_EU MODADESCMODALIDADEU, T7.FECHA_REGISTRO MODAFECHAREGISTRO, T7.USUARIO_REGISTRO MODAUSUARIOREGISTRO, T7.FECHA_ULTMODIFICACION MODAFECHAULTMODIFICACION, T7.USUARIO_ULTMODIFICACION MODAUSUARIOULTMODIFICACION, T8.ID_ESTABLECIMIENTO DATAESTIDESTABLECIMIENTO, T8.FECHA_ANO_CONSTRUCCION DATAESTFECHAANOCONSTRUCCION, T8.FECHA_ANO_RENOVACION DATAESTFECHAANORENOVACION, T8.DERECHO_COCINA DATAESTDERECHOCOCINA, T8.SERVICIO_COMEDOR DATAESTSERVICIOCOMEDOR, T8.NUM_SALONES DATAESTNUMSALONES, T8.NUM_SALONES_COMEDOR DATAESTNUMSALONESCOMEDOR, T8.NUM_COMEDORES DATAESTNUMCOMEDORES, T8.NUM_BAÑOS_GENERALES DATAESTNUMBAÑOSGENERALES, T8.NUM_CONJUNTOS DATAESTNUMCONJUNTOS, T8.NUM_ESTUDIOS DATAESTNUMESTUDIOS, T8.NUM_HAB_DOBLE DATAESTNUMHABDOBLE, T8.NUM_HAB_INDIVIDUALES DATAESTNUMHABINDIVIDUALES, T8.NUM_MAXIMO_SUPLETORIAS DATAESTNUMMAXIMOSUPLETORIAS, T8.NUM_PLAZAS DATAESTNUMPLAZAS, T8.EDIFICIO_CATALOGADO DATAESTEDIFICIOCATALOGADO, T8.NUM_HAB_MAS_4 DATAESTNUMHABMAS4, T8.NUM_HAB_MENOS_4 DATAESTNUMHABMENOS4, T8.COMPARTE_VIVIENDAS DATAESTCOMPARTEVIVIENDAS, T8.NUM_HAB_DOBLE_CS DATAESTNUMHABDOBLECS, T8.NUM_APARTAMENTOS DATAESTNUMAPARTAMENTOS, T8.NUM_SUITES DATAESTNUMSUITES, T8.COMPARTE_INSTAL DATAESTCOMPARTEINSTAL, T8.NUM_INSTAL_COMPARTE DATAESTNUMINSTALCOMPARTE, T8.NUM_SUP_ACAMPADA DATAESTNUMSUPACAMPADA, T8.BAR DATAESTBAR, T8.RESTAURANTE DATAESTRESTAURANTE, T8.PISCINA DATAESTPISCINA, T8.NUM_TOT_PARCELAS DATAESTNUMTOTPARCELAS, T8.NUM_PARCELAS_ANF DATAESTNUMPARCELASANF, T8.NUM_PARCELAS_AF DATAESTNUMPARCELASAF, T8.NUM_PARCELAS_SA DATAESTNUMPARCELASSA, T8.INDICADOR_IA DATAESTINDICADORIA, T8.FECHA_CONTROL_IA DATAESTFECHACONTROLIA, T8.REQUISITOS DATAESTREQUISITOS, T8.NUM_CONTROL DATAESTNUMCONTROL, T8.FECHA_ANT_CONTROL DATAESTFECHAANTCONTROL, T8.NUM_HABITACIONES DATAESTNUMHABITACIONES, T8.NUM_RESIDENTES_PERM DATAESTNUMRESIDENTESPERM, T8.SUP_TOT_HABITAC DATAESTSUPTOTHABITAC, T8.SUP_RESTO_DEPEN DATAESTSUPRESTODEPEN, T8.FECHA_REGISTRO DATAESTFECHAREGISTRO, T8.USUARIO_REGISTRO DATAESTUSUARIOREGISTRO, T8.FECHA_ULTMODIFICACION DATAESTFECHAULTMODIFICACION, T8.USUARIO_ULTMODIFICACION DATAESTUSUARIOULTMODIFICACION, T8.DISPONE_COCINA DISPONECOCINA, T8.DISPONE_SALON DISPONESALON, T9.ID_ESTABLECIMIENTO FRANQIDESTABLECIMIENTO, T9.FRANQUICIA FRANQFRANQUICIA, T12.ID_FRANQUICIA AB6336S00IDFRANQUICIA, T12.DESC_FRANQUICIA_ES AB6336S00DESCFRANQUICIAES, T12.DESC_FRANQUICIA_EU AB6336S00DESCFRANQUICIAEU, T12.BAJA AB6336S00BAJA, T9.INDONLINE FRANQINDONLINE, T9.ID_INSTAL_OFI_PRINCIPAL FRANQIDINSTALOFIPRINCIPAL, T9.ID_ORIGEN_OFI_PRINCIPAL FRANQIDORIGENOFIPRINCIPAL, T9.ID_TIPO_CIE FRANQIDTIPOCIE, T9.ETIQUETA_CIE FRANQETIQUETACIE, T9.REGISTRO_FIANZA FRANQREGISTROFIANZA, T9.OBSERV_FIANZA FRANQOBSERVFIANZA, T9.OBSERV_SRC FRANQOBSERVSRC, T9.ID_PRIMERA_SUCURSAL FRANQIDPRIMERASUCURSAL, T9.NUM_CIE FRANQNUMCIE, T9.FECHA_REGISTRO FRANQFECHAREGISTRO, T9.USUARIO_REGISTRO FRANQUSUARIOREGISTRO, T9.FECHA_ULTMODIFICACION FRANQFECHAULTMODIFICACION, T9.USUARIO_ULTMODIFICACION FRANQUSUARIOULTMODIFICACION, T4.ID_TIPO_ESTABLECIMIENTO AB6312S00IDTIPOESTABLECIMIENTO, T5.ID_TIPO_ESTABLECIMIENTO AB6313S00IDTIPOESTABLECIMIENTO, T6.ID_TIPO_ESTABLECIMIENTO AB6315S00IDTIPOESTABLECIMIENTO, T7.ID_TIPO_ESTABLECIMIENTO AB6314S00IDTIPOESTABLECIMIENTO, VS10.ID_ESTABLECIMIENTO AB6339S00IDESTAB, VS10.ID_TERCERO AB6339S00IDTERCERO, VS10.DOCUMENTO NIFINTERESADO, VS10.NOMBRE NOMBREINTERESADO, VS10.APELLIDO1 APELLIDO1INTERESADO, VS10.APELLIDO2 APELLIDO2INTERESADO, VS10.EMAIL EMAILINTERESADO, VS10.TELEFONO TELEFONOINTERESADO, T36.ID_DIRECCION, T36.ID_PROVINCIA, T36.ID_MUNICIPIO, T36.ID_LOCALIDAD, T36.DIRECCION, T36.NUMERO, T36.ESCALERA, T36.PISO, T36.LETRA, T36.CODIGO_POSTAL, T36.IDPAIS, T36.DESCRIPCIONPROVINCIAEXTR, T36.DESCRIPCIONCIUDADEXTR, T1.ID_EXPEDIENTE IDEXPEDIENTE, T1.ID_ESTABLECIMIENTO_PADRE IDESTABLECIMIENTOPADRE, T1.TIPO_REGISTRO TIPO_REGISTRO, T1.IDESTAB_SOLIC IDESTABSOLIC, T1.PERIODO_PUENTES PERIODOPUENTES, T1.PERIODO_VACACIONES PERIODOVACACIONES, T1.PERIODO_VERANO PERIODOVERANO, T1.SIN_PERIODO_PREF SINPERIODOPREF, T20.ID_DISPENSAS_ESTAB IDDISPENSASESTAB, T20.FECHA_DISPENSA FECHADISPENSA, T20.OBSERVACIONES_DESC_ES OBSERVACIONESDESCES, T20.OBSERVACIONES_DESC_EU OBSERVACIONESDESCEU, T20.ID_ESTABLECIMIENTO IDESTABDISPENSA, T20.FECHA_REGISTRO FECHAREGDISPENSA, T20.USUARIO_REGISTRO USUARIOREGDISPENSA, T20.FECHA_ULTMODIFICACION FECHAULTMODIF, T20.USUARIO_ULTMODIFICACION USUARIOULTMODIF, T20.FOLDER_ID FOLDERID, T20.FOLDER_NUMBER FOLDERNUMBER, T20.DISPENSADO DISPENSADO, T8.NUM_DORM_RESID NUMDORMRESID, T8.NUM_DORM_USUARIO NUMDORMUSUARIO, T8.SUPERFICIE_TOTAL SUPTOTAL, T36.MUNICIPIODSO, T8.NUM_SUP_COCINA NUMSUPCOCINA ");
		query.append(
				"FROM AB6301S00 T1, AB6300S00 T2, AB6311S00 T3, AB6312S00 T4, AB6313S00 T5, AB6315S00 T6, AB6314S00 T7, AB6321S00 T8, AB6335S00 T9, ( SELECT VS39.ID_ESTABLECIMIENTO, VS35.* FROM ( SELECT VS39.ID_ESTABLECIMIENTO, VS39.ID_TIPO_TERCERO ID_TIPO_TERCERO, MAX(VS39.ID_TERCERO) ID_TERCERO FROM AB6339S00 VS39 WHERE VS39.ID_TIPO_TERCERO = 9 AND VS39.BAJA = 0 GROUP BY VS39.ID_ESTABLECIMIENTO, ID_TIPO_TERCERO ) VS39, DATOS_TERCERO VS35 WHERE VS39.ID_TERCERO = VS35.ID_TERCERO AND VS39.ID_TIPO_TERCERO = 9 ) VS10, ( SELECT DISPENSADO, FECHA_DISPENSA, FECHA_REGISTRO, FECHA_ULTMODIFICACION, FOLDER_ID, FOLDER_NUMBER, ID_DISPENSAS_ESTAB, ID_ESTABLECIMIENTO, OBSERVACIONES_DESC_ES, OBSERVACIONES_DESC_EU, USUARIO_REGISTRO, USUARIO_ULTMODIFICACION FROM AB6320S00 WHERE DISPENSADO = '1' ) T20, ( SELECT VT39.ID_ESTABLECIMIENTO, DIR.ID_DIRECCION, DIR.ID_TERCERO, DIR.ID_PROVINCIA, DIR.ID_MUNICIPIO, DIR.ID_LOCALIDAD, DIR.DIRECCION, DIR.NUMERO, DIR.ESCALERA, DIR.PISO, DIR.LETRA, DIR.CODIGO_POSTAL, DIR.ID_PAIS IDPAIS, DIR.DESCRIPCION_PROVINCIA DESCRIPCIONPROVINCIAEXTR, DIR.DESCRIPCION_CIUDAD DESCRIPCIONCIUDADEXTR, T17.DS_O MUNICIPIODSO FROM DATOS_DIRECCIONES DIR, MUNICIPIOS T17, AB6339S00 VT39 WHERE DIR.ID_TIPO_DIRECCION = 2 AND DIR.ID_PROVINCIA = T17.PROVINCIA_ID (+) AND DIR.ID_MUNICIPIO = T17.ID (+) AND DIR.ID_TERCERO = VT39.ID_TERCERO ) T36, AB6336S00 T12 ");

		// Where clause & Params
		Map<String, ?> mapaWhere = this.getWhereMap(ab6301s00);
		StringBuilder where = new StringBuilder(
				" WHERE 1 = 1 AND T1.ID_ESTABLECIMIENTO = T20.ID_ESTABLECIMIENTO (+) AND T1.ID_RECURSO = T2.ID_RECURSO (+) AND T1.ID_TIPO_ESTABLECIMIENTO = T3.ID_TIPO_ESTABLECIMIENTO AND ( T1.ID_GRUPO = T4.ID_GRUPO (+) AND T4.ID_TIPO_ESTABLECIMIENTO (+) = T1.ID_TIPO_ESTABLECIMIENTO )  AND ( T1.ID_CATEGORIAS = T5.ID_CATEGORIAS (+) AND T5.ID_TIPO_ESTABLECIMIENTO (+) = T1.ID_TIPO_ESTABLECIMIENTO ) AND ( T1.ID_ESPECIALIDAD = T6.ID_ESPECIALIDAD (+) AND T6.ID_TIPO_ESTABLECIMIENTO (+) = T1.ID_TIPO_ESTABLECIMIENTO ) AND ( T1.ID_MODALIDAD = T7.ID_MODALIDAD (+) AND T7.ID_TIPO_ESTABLECIMIENTO (+) = T1.ID_TIPO_ESTABLECIMIENTO ) AND T1.ID_ESTABLECIMIENTO = T8.ID_ESTABLECIMIENTO (+) AND T1.ID_ESTABLECIMIENTO = T9.ID_ESTABLECIMIENTO (+) AND T9.ID_FRANQUICIA = T12.ID_FRANQUICIA (+) AND T1.ID_ESTABLECIMIENTO = T36.ID_ESTABLECIMIENTO (+) AND T1.ID_ESTABLECIMIENTO = T9.ID_ESTABLECIMIENTO (+) AND T1.ID_ESTABLECIMIENTO = VS10.ID_ESTABLECIMIENTO (+) ");
		where.append(mapaWhere.get("query"));
		query.append(where);

		List<?> params = (List<?>) mapaWhere.get("params");

		if (jqGridRequestDto != null) {
			query = JQGridManager.getPaginationQuery(jqGridRequestDto, query,
					EstablecimientoDaoImpl.ORDER_BY_WHITE_LIST);
		}

		return (List<Establecimiento>) this.jdbcTemplate.query(query.toString(), this.rwMap, params.toArray());
	}

	/**
	 * Finds rows in the Ab6301s00 table using like.
	 *
	 * @param ab6301s00
	 *            Ab6301s00
	 * @param jqGridRequestDto
	 *            JQGridRequestDto
	 * @param startsWith
	 *            Boolean
	 * @return List<Ab6301s00>
	 */
	@Transactional(readOnly = true)
	public List<Establecimiento> findAllLike(Establecimiento ab6301s00, JQGridRequestDto jqGridRequestDto,
			Boolean startsWith) {
		StringBuilder query = new StringBuilder(
				"SELECT T1.ID_ESTABLECIMIENTO IDESTABLECIMIENTO, T1.IDENTIFICADOR_ESTABLECIMIENTO IDENTIFICADORESTABLECIMIENTO, T1.DESC_NOMBRE DESCNOMBRE, T1.VISIBLEWEB VISIBLEWEB, T1.TEMPORADA TEMPORADA, T1.URLWEB URLWEB, T1.ID_DEFECTOS IDDEFECTOS, T1.NUM_UNIDADES_ALOJAMIENTO NUMUNIDADESALOJAMIENTO, T1.OBSERVACIONES OBSERVACIONES, T1.FECHA_APERTURA FECHAAPERTURA, T1.FECHA_BAJA FECHABAJA, T1.FECHA_INICIERRETEMP FECHAINICIERRETEMP, T1.FECHA_FINCIERRETEMP FECHAFINCIERRETEMP, T1.FECHA_VCTO_CIERRE FECHAVCTOCIERRE, T1.FECHA_ULT_NOTIFICACION FECHAULTNOTIFICACION, T1.FECHA_ULT_INSPECCION FECHAULTINSPECCION, T1.FECHA_PRO_INSPECCION FECHAPROINSPECCION, T1.FECHA_ULT_ACTUALIZACION FECHAULTACTUALIZACION, T1.FECHA_CLAUSURA FECHACLAUSURA, T1.FECHA_ULT_REFORMA FECHAULTREFORMA, T1.ELIMINADO ELIMINADO, T1.EXPEDIENTEB29 EXPEDIENTEB29, T1.ID_PORTAL_S41 IDPORTALS41, T1.URL_PORTAL_S41 URLPORTALS41, T1.FECHA_CONTROL_S41 FECHACONTROLS41, T1.NUM_INSTALACION_ANTERIOR NUMINSTALACIONANTERIOR, T1.FECHA_INSCRIPCION FECHAINSCRIPCION, T1.NUM_INSTALACION_WZ NUMINSTALACIONWZ, T1.OBSERVACIONES2 OBSERVACIONES2, T1.NOTAS_MIGRACION NOTASMIGRACION, T1.AGRUPACION AGRUPACION, T1.REF_CATASTRAL REFCATASTRAL, T1.OBS_SEGRESPCIVIL OBSSEGRESPCIVIL, T1.FECHA_REGISTRO FECHAREGISTRO, T1.USUARIO_REGISTRO USUARIOREGISTRO, T1.FECHA_ULTMODIFICACION FECHAULTMODIFICACION, T1.USUARIO_ULTMODIFICACION USUARIOULTMODIFICACION, T1.EMAIL EMAIL, T1.TELEFONO TELEFONO, T1.TELEF_PROMO TELEFPROMO, T1.MODIF_ESENCIAL MODIFESENCIAL, T2.ID_RECURSO RECURSOIDRECURSO, T2.TIPO_RECURSO RECURSOTIPORECURSO, T2.DESC_NOMBRE RECURSODESCNOMBRE, T2.FECHA_BAJA RECURSOFECHABAJA, T2.NUM_REGISTRO RECURSONUMREGISTRO, T2.FECHA_REGISTRO RECURSOFECHAREGISTRO, T2.USUARIO_REGISTRO RECURSOUSUARIOREGISTRO, T2.FECHA_ULTMODIFICACION RECURSOFECHAULTMODIFICACION, T2.USUARIO_ULTMODIFICACION RECURSOUSUARIOULTMODIFICACION, T3.ID_TIPO_ESTABLECIMIENTO TIPOESTIDTIPOESTABLECIMIENTO, T3.DESC_TIPO_ES TIPOESTDESCTIPOES, T3.FECHA_MODIFICACION TIPOESTFECHAMODIFICACION, T3.NOM_USUARIO TIPOESTNOMUSUARIO, T3.BAJA TIPOESTBAJA, T3.DESC_TIPO_EU TIPOESTDESCTIPOEU, T3.ORDENACION TIPOESTORDENACION, T3.TIPIFICACION TIPOESTTIPIFICACION, T3.FECHA_REGISTRO TIPOESTFECHAREGISTRO, T3.USUARIO_REGISTRO TIPOESTUSUARIOREGISTRO, T3.FECHA_ULTMODIFICACION TIPOESTFECHAULTMODIFICACION, T3.USUARIO_ULTMODIFICACION TIPOESTUSUARIOULTMODIFICACION, T4.ID_GRUPO GRUPOIDGRUPO, T4.DESC_GRUPO_ES GRUPODESCGRUPOES, T4.FECHA_MODIFICACION GRUPOFECHAMODIFICACION, T4.NOM_USUARIO GRUPONOMUSUARIO, T4.BAJA GRUPOBAJA, T4.DESC_GRUPO_EU GRUPODESCGRUPOEU, T4.FECHA_REGISTRO GRUPOFECHAREGISTRO, T4.USUARIO_REGISTRO GRUPOUSUARIOREGISTRO, T4.FECHA_ULTMODIFICACION GRUPOFECHAULTMODIFICACION, T4.USUARIO_ULTMODIFICACION GRUPOUSUARIOULTMODIFICACION, T5.ID_CATEGORIAS CATEGIDCATEGORIAS, T5.DESC_CATEGORIA_ES CATEGDESCCATEGORIAES, T5.FECHA_MODIFICACION CATEGFECHAMODIFICACION, T5.NOM_USUARIO CATEGNOMUSUARIO, T5.BAJA CATEGBAJA, T5.DESC_CATEGORIA_EU CATEGDESCCATEGORIAEU, T5.FECHA_REGISTRO CATEGFECHAREGISTRO, T5.USUARIO_REGISTRO CATEGUSUARIOREGISTRO, T5.FECHA_ULTMODIFICACION CATEGFECHAULTMODIFICACION, T5.USUARIO_ULTMODIFICACION CATEGUSUARIOULTMODIFICACION, T6.ID_ESPECIALIDAD ESPIDESPECIALIDAD, T6.DESC_CATEGORIA_ES ESPDESCCATEGORIAES, T6.FECHA_MODIFICACION ESPFECHAMODIFICACION, T6.NOM_USUARIO ESPNOMUSUARIO, T6.BAJA ESPBAJA, T6.DESC_CATEGORIA_EU ESPDESCCATEGORIAEU, T6.FECHA_REGISTRO ESPFECHAREGISTRO, T6.USUARIO_REGISTRO ESPUSUARIOREGISTRO, T6.FECHA_ULTMODIFICACION ESPFECHAULTMODIFICACION, T6.USUARIO_ULTMODIFICACION ESPUSUARIOULTMODIFICACION, T7.ID_MODALIDAD MODAIDMODALIDAD, T7.DESC_MODALIDAD_ES MODADESCMODALIDADES, T7.FECHA_MODIFICACION MODAFECHAMODIFICACION, T7.NOM_USUARIO MODANOMUSUARIO, T7.BAJA MODABAJA, T7.DESC_MODALIDAD_EU MODADESCMODALIDADEU, T7.FECHA_REGISTRO MODAFECHAREGISTRO, T7.USUARIO_REGISTRO MODAUSUARIOREGISTRO, T7.FECHA_ULTMODIFICACION MODAFECHAULTMODIFICACION, T7.USUARIO_ULTMODIFICACION MODAUSUARIOULTMODIFICACION, T8.ID_ESTABLECIMIENTO DATAESTIDESTABLECIMIENTO, T8.FECHA_ANO_CONSTRUCCION DATAESTFECHAANOCONSTRUCCION, T8.FECHA_ANO_RENOVACION DATAESTFECHAANORENOVACION, T8.DERECHO_COCINA DATAESTDERECHOCOCINA, T8.SERVICIO_COMEDOR DATAESTSERVICIOCOMEDOR, T8.NUM_SALONES DATAESTNUMSALONES, T8.NUM_SALONES_COMEDOR DATAESTNUMSALONESCOMEDOR, T8.NUM_COMEDORES DATAESTNUMCOMEDORES, T8.NUM_BAÑOS_GENERALES DATAESTNUMBAÑOSGENERALES, T8.NUM_CONJUNTOS DATAESTNUMCONJUNTOS, T8.NUM_ESTUDIOS DATAESTNUMESTUDIOS, T8.NUM_HAB_DOBLE DATAESTNUMHABDOBLE, T8.NUM_HAB_INDIVIDUALES DATAESTNUMHABINDIVIDUALES, T8.NUM_MAXIMO_SUPLETORIAS DATAESTNUMMAXIMOSUPLETORIAS, T8.NUM_PLAZAS DATAESTNUMPLAZAS, T8.EDIFICIO_CATALOGADO DATAESTEDIFICIOCATALOGADO, T8.NUM_HAB_MAS_4 DATAESTNUMHABMAS4, T8.NUM_HAB_MENOS_4 DATAESTNUMHABMENOS4, T8.COMPARTE_VIVIENDAS DATAESTCOMPARTEVIVIENDAS, T8.NUM_HAB_DOBLE_CS DATAESTNUMHABDOBLECS, T8.NUM_APARTAMENTOS DATAESTNUMAPARTAMENTOS, T8.NUM_SUITES DATAESTNUMSUITES, T8.COMPARTE_INSTAL DATAESTCOMPARTEINSTAL, T8.NUM_INSTAL_COMPARTE DATAESTNUMINSTALCOMPARTE, T8.NUM_SUP_ACAMPADA DATAESTNUMSUPACAMPADA, T8.BAR DATAESTBAR, T8.RESTAURANTE DATAESTRESTAURANTE, T8.PISCINA DATAESTPISCINA, T8.NUM_TOT_PARCELAS DATAESTNUMTOTPARCELAS, T8.NUM_PARCELAS_ANF DATAESTNUMPARCELASANF, T8.NUM_PARCELAS_AF DATAESTNUMPARCELASAF, T8.NUM_PARCELAS_SA DATAESTNUMPARCELASSA, T8.INDICADOR_IA DATAESTINDICADORIA, T8.FECHA_CONTROL_IA DATAESTFECHACONTROLIA, T8.REQUISITOS DATAESTREQUISITOS, T8.NUM_CONTROL DATAESTNUMCONTROL, T8.FECHA_ANT_CONTROL DATAESTFECHAANTCONTROL, T8.NUM_HABITACIONES DATAESTNUMHABITACIONES, T8.NUM_RESIDENTES_PERM DATAESTNUMRESIDENTESPERM, T8.SUP_TOT_HABITAC DATAESTSUPTOTHABITAC, T8.SUP_RESTO_DEPEN DATAESTSUPRESTODEPEN, T8.FECHA_REGISTRO DATAESTFECHAREGISTRO, T8.USUARIO_REGISTRO DATAESTUSUARIOREGISTRO, T8.FECHA_ULTMODIFICACION DATAESTFECHAULTMODIFICACION, T8.USUARIO_ULTMODIFICACION DATAESTUSUARIOULTMODIFICACION, T8.DISPONE_COCINA DISPONECOCINA, T8.DISPONE_SALON DISPONESALON, T9.ID_ESTABLECIMIENTO FRANQIDESTABLECIMIENTO, T9.FRANQUICIA FRANQFRANQUICIA, T12.ID_FRANQUICIA AB6336S00IDFRANQUICIA, T12.DESC_FRANQUICIA_ES AB6336S00DESCFRANQUICIAES, T12.DESC_FRANQUICIA_EU AB6336S00DESCFRANQUICIAEU, T12.BAJA AB6336S00BAJA, T9.INDONLINE FRANQINDONLINE, T9.ID_INSTAL_OFI_PRINCIPAL FRANQIDINSTALOFIPRINCIPAL, T9.ID_ORIGEN_OFI_PRINCIPAL FRANQIDORIGENOFIPRINCIPAL, T9.ID_TIPO_CIE FRANQIDTIPOCIE, T9.ETIQUETA_CIE FRANQETIQUETACIE, T9.REGISTRO_FIANZA FRANQREGISTROFIANZA, T9.OBSERV_FIANZA FRANQOBSERVFIANZA, T9.OBSERV_SRC FRANQOBSERVSRC, T9.ID_PRIMERA_SUCURSAL FRANQIDPRIMERASUCURSAL, T9.NUM_CIE FRANQNUMCIE, T9.FECHA_REGISTRO FRANQFECHAREGISTRO, T9.USUARIO_REGISTRO FRANQUSUARIOREGISTRO, T9.FECHA_ULTMODIFICACION FRANQFECHAULTMODIFICACION, T9.USUARIO_ULTMODIFICACION FRANQUSUARIOULTMODIFICACION, T4.ID_TIPO_ESTABLECIMIENTO AB6312S00IDTIPOESTABLECIMIENTO, T5.ID_TIPO_ESTABLECIMIENTO AB6313S00IDTIPOESTABLECIMIENTO, T6.ID_TIPO_ESTABLECIMIENTO AB6315S00IDTIPOESTABLECIMIENTO, T7.ID_TIPO_ESTABLECIMIENTO AB6314S00IDTIPOESTABLECIMIENTO, VS10.ID_ESTABLECIMIENTO AB6339S00IDESTAB, VS10.ID_TERCERO AB6339S00IDTERCERO, VS10.DOCUMENTO NIFINTERESADO, VS10.NOMBRE NOMBREINTERESADO, VS10.APELLIDO1 APELLIDO1INTERESADO, VS10.APELLIDO2 APELLIDO2INTERESADO, VS10.EMAIL EMAILINTERESADO, VS10.TELEFONO TELEFONOINTERESADO, T36.ID_DIRECCION, T36.ID_PROVINCIA, T36.ID_MUNICIPIO, T36.ID_LOCALIDAD, T36.DIRECCION, T36.NUMERO, T36.ESCALERA, T36.PISO, T36.LETRA, T36.CODIGO_POSTAL, T36.IDPAIS, T36.DESCRIPCIONPROVINCIAEXTR, T36.DESCRIPCIONCIUDADEXTR, T1.ID_EXPEDIENTE IDEXPEDIENTE, T1.ID_ESTABLECIMIENTO_PADRE IDESTABLECIMIENTOPADRE, T1.TIPO_REGISTRO TIPO_REGISTRO, T1.IDESTAB_SOLIC IDESTABSOLIC, T1.PERIODO_PUENTES PERIODOPUENTES, T1.PERIODO_VACACIONES PERIODOVACACIONES, T1.PERIODO_VERANO PERIODOVERANO, T1.SIN_PERIODO_PREF SINPERIODOPREF, T20.ID_DISPENSAS_ESTAB IDDISPENSASESTAB, T20.FECHA_DISPENSA FECHADISPENSA, T20.OBSERVACIONES_DESC_ES OBSERVACIONESDESCES, T20.OBSERVACIONES_DESC_EU OBSERVACIONESDESCEU, T20.ID_ESTABLECIMIENTO IDESTABDISPENSA, T20.FECHA_REGISTRO FECHAREGDISPENSA, T20.USUARIO_REGISTRO USUARIOREGDISPENSA, T20.FECHA_ULTMODIFICACION FECHAULTMODIF, T20.USUARIO_ULTMODIFICACION USUARIOULTMODIF, T20.FOLDER_ID FOLDERID, T20.FOLDER_NUMBER FOLDERNUMBER, T20.DISPENSADO DISPENSADO, T8.NUM_DORM_RESID NUMDORMRESID, T8.NUM_DORM_USUARIO NUMDORMUSUARIO, T8.SUPERFICIE_TOTAL SUPTOTAL, T36.MUNICIPIODSO, T8.NUM_SUP_COCINA NUMSUPCOCINA ");
		query.append(
				"FROM AB6301S00 T1, AB6300S00 T2, AB6311S00 T3, AB6312S00 T4, AB6313S00 T5, AB6315S00 T6, AB6314S00 T7, AB6321S00 T8, AB6335S00 T9, ( SELECT VS39.ID_ESTABLECIMIENTO, VS35.* FROM ( SELECT VS39.ID_ESTABLECIMIENTO, VS39.ID_TIPO_TERCERO ID_TIPO_TERCERO, MAX(VS39.ID_TERCERO) ID_TERCERO FROM AB6339S00 VS39 WHERE VS39.ID_TIPO_TERCERO = 9 AND VS39.BAJA = 0 GROUP BY VS39.ID_ESTABLECIMIENTO, ID_TIPO_TERCERO ) VS39, DATOS_TERCERO VS35 WHERE VS39.ID_TERCERO = VS35.ID_TERCERO AND VS39.ID_TIPO_TERCERO = 9 ) VS10, ( SELECT DISPENSADO, FECHA_DISPENSA, FECHA_REGISTRO, FECHA_ULTMODIFICACION, FOLDER_ID, FOLDER_NUMBER, ID_DISPENSAS_ESTAB, ID_ESTABLECIMIENTO, OBSERVACIONES_DESC_ES, OBSERVACIONES_DESC_EU, USUARIO_REGISTRO, USUARIO_ULTMODIFICACION FROM AB6320S00 WHERE DISPENSADO = '1' AND ID_DISPENSAS_ESTAB IN (SELECT MAX(ID_DISPENSAS_ESTAB) ID_DISPENSAS_ESTABMAX FROM AB6320S00 WHERE DISPENSADO = '1' GROUP BY ID_ESTABLECIMIENTO)) T20, ( SELECT VT39.ID_ESTABLECIMIENTO, DIR.ID_DIRECCION, DIR.ID_TERCERO, DIR.ID_PROVINCIA, DIR.ID_MUNICIPIO, DIR.ID_LOCALIDAD, DIR.DIRECCION, DIR.NUMERO, DIR.ESCALERA, DIR.PISO, DIR.LETRA, DIR.CODIGO_POSTAL, DIR.ID_PAIS IDPAIS, DIR.DESCRIPCION_PROVINCIA DESCRIPCIONPROVINCIAEXTR, DIR.DESCRIPCION_CIUDAD DESCRIPCIONCIUDADEXTR, T17.DS_O MUNICIPIODSO FROM DATOS_DIRECCIONES DIR, MUNICIPIOS T17, AB6339S00 VT39 WHERE DIR.ID_TIPO_DIRECCION = 2 AND DIR.ID_PROVINCIA = T17.PROVINCIA_ID (+) AND DIR.ID_MUNICIPIO = T17.ID (+) AND DIR.ID_TERCERO = VT39.ID_TERCERO ) T36, AB6336S00 T12 ");
		// Where clause & Params
		Map<String, ?> mapaWhere = this.getWhereLikeMap(ab6301s00, startsWith);

		StringBuilder where = new StringBuilder(
				" WHERE 1 = 1 AND T1.ID_ESTABLECIMIENTO = T20.ID_ESTABLECIMIENTO (+) AND T1.ID_RECURSO = T2.ID_RECURSO (+) AND T1.ID_TIPO_ESTABLECIMIENTO = T3.ID_TIPO_ESTABLECIMIENTO AND ( T1.ID_GRUPO = T4.ID_GRUPO (+) AND T4.ID_TIPO_ESTABLECIMIENTO (+) = T1.ID_TIPO_ESTABLECIMIENTO )  AND ( T1.ID_CATEGORIAS = T5.ID_CATEGORIAS (+) AND T5.ID_TIPO_ESTABLECIMIENTO (+) = T1.ID_TIPO_ESTABLECIMIENTO ) AND ( T1.ID_ESPECIALIDAD = T6.ID_ESPECIALIDAD (+) AND T6.ID_TIPO_ESTABLECIMIENTO (+) = T1.ID_TIPO_ESTABLECIMIENTO ) AND ( T1.ID_MODALIDAD = T7.ID_MODALIDAD (+) AND T7.ID_TIPO_ESTABLECIMIENTO (+) = T1.ID_TIPO_ESTABLECIMIENTO ) AND T1.ID_ESTABLECIMIENTO = T8.ID_ESTABLECIMIENTO (+) AND T1.ID_ESTABLECIMIENTO = T9.ID_ESTABLECIMIENTO (+) AND T9.ID_FRANQUICIA = T12.ID_FRANQUICIA (+) AND T1.ID_ESTABLECIMIENTO = T36.ID_ESTABLECIMIENTO (+) AND T1.ID_ESTABLECIMIENTO = T9.ID_ESTABLECIMIENTO (+) AND T1.ID_ESTABLECIMIENTO = VS10.ID_ESTABLECIMIENTO (+) ");
		where.append(mapaWhere.get("query"));
		query.append(where);

		List<?> params = (List<?>) mapaWhere.get("params");

		if (jqGridRequestDto != null) {
			query = JQGridManager.getPaginationQuery(jqGridRequestDto, query,
					EstablecimientoDaoImpl.ORDER_BY_WHITE_LIST);
		}

		return (List<Establecimiento>) this.jdbcTemplate.query(query.toString(), this.rwMap, params.toArray());
	}

	/*
	 * OPERACIONES RUP_TABLE
	 */

	/**
	 * Counts rows in the Ab6301s00 table.
	 *
	 * @param ab6301s00
	 *            Ab6301s00
	 * @return Long
	 */
	@Transactional(readOnly = true)
	public Long findAllCount(Establecimiento ab6301s00) {
		StringBuilder query = new StringBuilder(
				"SELECT COUNT(1) FROM AB6301S00 T1, AB6300S00 T2, AB6311S00 T3, AB6312S00 T4, AB6313S00 T5, AB6315S00 T6, AB6314S00 T7, AB6321S00 T8, AB6335S00 T9, ( SELECT VS39.ID_ESTABLECIMIENTO, VS35.* FROM ( SELECT VS39.ID_ESTABLECIMIENTO, VS39.ID_TIPO_TERCERO ID_TIPO_TERCERO, MAX(VS39.ID_TERCERO) ID_TERCERO FROM AB6339S00 VS39 WHERE VS39.ID_TIPO_TERCERO = 9 AND VS39.BAJA = 0 GROUP BY VS39.ID_ESTABLECIMIENTO, ID_TIPO_TERCERO ) VS39, DATOS_TERCERO VS35 WHERE VS39.ID_TERCERO = VS35.ID_TERCERO AND VS39.ID_TIPO_TERCERO = 9 ) VS10, ( SELECT DISPENSADO, FECHA_DISPENSA, FECHA_REGISTRO, FECHA_ULTMODIFICACION, FOLDER_ID, FOLDER_NUMBER, ID_DISPENSAS_ESTAB, ID_ESTABLECIMIENTO, OBSERVACIONES_DESC_ES, OBSERVACIONES_DESC_EU, USUARIO_REGISTRO, USUARIO_ULTMODIFICACION FROM AB6320S00 WHERE DISPENSADO = '1' ) T20, ( SELECT VT39.ID_ESTABLECIMIENTO, DIR.ID_DIRECCION, DIR.ID_TERCERO, DIR.ID_PROVINCIA, DIR.ID_MUNICIPIO, DIR.ID_LOCALIDAD, DIR.DIRECCION, DIR.NUMERO, DIR.ESCALERA, DIR.PISO, DIR.LETRA, DIR.CODIGO_POSTAL, DIR.ID_PAIS IDPAIS, DIR.DESCRIPCION_PROVINCIA DESCRIPCIONPROVINCIAEXTR, DIR.DESCRIPCION_CIUDAD DESCRIPCIONCIUDADEXTR, T17.DS_O MUNICIPIODSO FROM DATOS_DIRECCIONES DIR, MUNICIPIOS T17, AB6339S00 VT39 WHERE DIR.ID_TIPO_DIRECCION = 2 AND DIR.ID_PROVINCIA = T17.PROVINCIA_ID (+) AND DIR.ID_MUNICIPIO = T17.ID (+) AND DIR.ID_TERCERO = VT39.ID_TERCERO ) T36, AB6336S00 T12 ");

		// Where clause & Params
		Map<String, ?> mapaWhere = this.getWhereMap(ab6301s00);
		StringBuilder where = new StringBuilder(
				" WHERE 1 = 1 AND T1.ID_ESTABLECIMIENTO = T20.ID_ESTABLECIMIENTO (+) AND T1.ID_RECURSO = T2.ID_RECURSO (+) AND T1.ID_TIPO_ESTABLECIMIENTO = T3.ID_TIPO_ESTABLECIMIENTO AND ( T1.ID_GRUPO = T4.ID_GRUPO (+) AND T4.ID_TIPO_ESTABLECIMIENTO (+) = T1.ID_TIPO_ESTABLECIMIENTO )  AND ( T1.ID_CATEGORIAS = T5.ID_CATEGORIAS (+) AND T5.ID_TIPO_ESTABLECIMIENTO (+) = T1.ID_TIPO_ESTABLECIMIENTO ) AND ( T1.ID_ESPECIALIDAD = T6.ID_ESPECIALIDAD (+) AND T6.ID_TIPO_ESTABLECIMIENTO (+) = T1.ID_TIPO_ESTABLECIMIENTO ) AND ( T1.ID_MODALIDAD = T7.ID_MODALIDAD (+) AND T7.ID_TIPO_ESTABLECIMIENTO (+) = T1.ID_TIPO_ESTABLECIMIENTO ) AND T1.ID_ESTABLECIMIENTO = T8.ID_ESTABLECIMIENTO (+) AND T1.ID_ESTABLECIMIENTO = T9.ID_ESTABLECIMIENTO (+) AND T9.ID_FRANQUICIA = T12.ID_FRANQUICIA (+) AND T1.ID_ESTABLECIMIENTO = T36.ID_ESTABLECIMIENTO (+) AND T1.ID_ESTABLECIMIENTO = T9.ID_ESTABLECIMIENTO (+) AND T1.ID_ESTABLECIMIENTO = VS10.ID_ESTABLECIMIENTO (+) ");
		where.append(mapaWhere.get("query"));
		query.append(where);

		List<?> params = (List<?>) mapaWhere.get("params");

		return this.jdbcTemplate.queryForObject(query.toString(), Long.class, params.toArray());
	}

	/**
	 * Counts rows in the Ab6301s00 table using like.
	 *
	 * @param ab6301s00
	 *            Ab6301s00
	 * @param startsWith
	 *            Boolean
	 * @return Long
	 */
	@Transactional(readOnly = true)
	public Long findAllLikeCount(Establecimiento ab6301s00, Boolean startsWith) {
		StringBuilder query = new StringBuilder(
				"SELECT COUNT(1) FROM AB6301S00 T1, AB6300S00 T2, AB6311S00 T3, AB6312S00 T4, AB6313S00 T5, AB6315S00 T6, AB6314S00 T7, AB6321S00 T8, AB6335S00 T9, ( SELECT VS39.ID_ESTABLECIMIENTO, VS35.* FROM ( SELECT VS39.ID_ESTABLECIMIENTO, VS39.ID_TIPO_TERCERO ID_TIPO_TERCERO, MAX(VS39.ID_TERCERO) ID_TERCERO FROM AB6339S00 VS39 WHERE VS39.ID_TIPO_TERCERO = 9 AND VS39.BAJA = 0 GROUP BY VS39.ID_ESTABLECIMIENTO, ID_TIPO_TERCERO ) VS39, DATOS_TERCERO VS35 WHERE VS39.ID_TERCERO = VS35.ID_TERCERO AND VS39.ID_TIPO_TERCERO = 9 ) VS10, ( SELECT DISPENSADO, FECHA_DISPENSA, FECHA_REGISTRO, FECHA_ULTMODIFICACION, FOLDER_ID, FOLDER_NUMBER, ID_DISPENSAS_ESTAB, ID_ESTABLECIMIENTO, OBSERVACIONES_DESC_ES, OBSERVACIONES_DESC_EU, USUARIO_REGISTRO, USUARIO_ULTMODIFICACION FROM AB6320S00 WHERE DISPENSADO = '1' ) T20, ( SELECT VT39.ID_ESTABLECIMIENTO, DIR.ID_DIRECCION, DIR.ID_TERCERO, DIR.ID_PROVINCIA, DIR.ID_MUNICIPIO, DIR.ID_LOCALIDAD, DIR.DIRECCION, DIR.NUMERO, DIR.ESCALERA, DIR.PISO, DIR.LETRA, DIR.CODIGO_POSTAL, DIR.ID_PAIS IDPAIS, DIR.DESCRIPCION_PROVINCIA DESCRIPCIONPROVINCIAEXTR, DIR.DESCRIPCION_CIUDAD DESCRIPCIONCIUDADEXTR, T17.DS_O MUNICIPIODSO FROM DATOS_DIRECCIONES DIR, MUNICIPIOS T17, AB6339S00 VT39 WHERE DIR.ID_TIPO_DIRECCION = 2 AND DIR.ID_PROVINCIA = T17.PROVINCIA_ID (+) AND DIR.ID_MUNICIPIO = T17.ID (+) AND DIR.ID_TERCERO = VT39.ID_TERCERO ) T36  ");
		// Where clause & Params
		Map<String, ?> mapaWhere = this.getWhereLikeMap(ab6301s00, startsWith);
		StringBuilder where = new StringBuilder(
				"WHERE 1 = 1 AND T1.ID_ESTABLECIMIENTO = T20.ID_ESTABLECIMIENTO (+) AND T1.ID_RECURSO = T2.ID_RECURSO (+) AND T1.ID_TIPO_ESTABLECIMIENTO = T3.ID_TIPO_ESTABLECIMIENTO AND ( T1.ID_GRUPO = T4.ID_GRUPO (+) AND T4.ID_TIPO_ESTABLECIMIENTO (+) = T1.ID_TIPO_ESTABLECIMIENTO ) AND ( T1.ID_CATEGORIAS = T5.ID_CATEGORIAS (+) AND T5.ID_TIPO_ESTABLECIMIENTO (+) = T1.ID_TIPO_ESTABLECIMIENTO ) AND ( T1.ID_ESPECIALIDAD = T6.ID_ESPECIALIDAD (+) AND T6.ID_TIPO_ESTABLECIMIENTO (+) = T1.ID_TIPO_ESTABLECIMIENTO ) AND ( T1.ID_MODALIDAD = T7.ID_MODALIDAD (+) AND T7.ID_TIPO_ESTABLECIMIENTO (+) = T1.ID_TIPO_ESTABLECIMIENTO ) AND T1.ID_ESTABLECIMIENTO = T8.ID_ESTABLECIMIENTO (+) AND T1.ID_ESTABLECIMIENTO = T9.ID_ESTABLECIMIENTO (+) AND T1.ID_ESTABLECIMIENTO = T36.ID_ESTABLECIMIENTO (+) AND T1.ID_ESTABLECIMIENTO = T9.ID_ESTABLECIMIENTO (+) AND T1.ID_ESTABLECIMIENTO = VS10.ID_ESTABLECIMIENTO (+)  ");
		where.append(mapaWhere.get("query"));
		query.append(where);

		List<?> params = (List<?>) mapaWhere.get("params");

		return this.jdbcTemplate.queryForObject(query.toString(), Long.class, params.toArray());
	}

	public Boolean establecerFechaBaja(String identificador, String usuario) {
		StringBuilder query = new StringBuilder(
				"UPDATE AB6301S00 SET FECHA_BAJA = CURRENT_DATE, FECHA_ULTMODIFICACION = CURRENT_DATE, USUARIO_ULTMODIFICACION = ? WHERE IDENTIFICADOR_ESTABLECIMIENTO = ? ");

		List<Object> params = new ArrayList<Object>();
		params.add(usuario);
		params.add(identificador);

		this.jdbcTemplate.update(query.toString(), params.toArray());
		return true;
	}

	/**
	 * Reorder the data list of Ab6301s00 selected for rup_table
	 *
	 * @param ab6301s00
	 *            Ab6301s00
	 * @param jqGridRequestDto
	 *            JQGridRequestDto
	 * @param startsWith
	 *            Boolean
	 * @return List<TableRowDto<Ab6301s00>>
	 */
	@Override
	public List<TableRowDto<Establecimiento>> reorderSelection(Establecimiento ab6301s00,
			JQGridRequestDto jqGridRequestDto, Boolean startsWith) {
		// SELECT
		StringBuilder query = new StringBuilder(
				"SELECT T1.ID_ESTABLECIMIENTO IDESTABLECIMIENTO, T1.IDENTIFICADOR_ESTABLECIMIENTO IDENTIFICADORESTABLECIMIENTO, T1.DESC_NOMBRE DESCNOMBRE, T1.VISIBLEWEB VISIBLEWEB, T1.TEMPORADA TEMPORADA, T1.URLWEB URLWEB, T1.ID_DEFECTOS IDDEFECTOS, T1.NUM_UNIDADES_ALOJAMIENTO NUMUNIDADESALOJAMIENTO, T1.OBSERVACIONES OBSERVACIONES, T1.FECHA_APERTURA FECHAAPERTURA, T1.FECHA_BAJA FECHABAJA, T1.FECHA_INICIERRETEMP FECHAINICIERRETEMP, T1.FECHA_FINCIERRETEMP FECHAFINCIERRETEMP, T1.FECHA_VCTO_CIERRE FECHAVCTOCIERRE, T1.FECHA_ULT_NOTIFICACION FECHAULTNOTIFICACION, T1.FECHA_ULT_INSPECCION FECHAULTINSPECCION, T1.FECHA_PRO_INSPECCION FECHAPROINSPECCION, T1.FECHA_ULT_ACTUALIZACION FECHAULTACTUALIZACION, T1.FECHA_CLAUSURA FECHACLAUSURA, T1.FECHA_ULT_REFORMA FECHAULTREFORMA, T1.ELIMINADO ELIMINADO, T1.EXPEDIENTEB29 EXPEDIENTEB29, T1.ID_PORTAL_S41 IDPORTALS41, T1.URL_PORTAL_S41 URLPORTALS41, T1.FECHA_CONTROL_S41 FECHACONTROLS41, T1.NUM_INSTALACION_ANTERIOR NUMINSTALACIONANTERIOR, T1.FECHA_INSCRIPCION FECHAINSCRIPCION, T1.NUM_INSTALACION_WZ NUMINSTALACIONWZ, T1.OBSERVACIONES2 OBSERVACIONES2, T1.NOTAS_MIGRACION NOTASMIGRACION, T1.AGRUPACION AGRUPACION, T1.REF_CATASTRAL REFCATASTRAL, T1.OBS_SEGRESPCIVIL OBSSEGRESPCIVIL, T1.FECHA_REGISTRO FECHAREGISTRO, T1.USUARIO_REGISTRO USUARIOREGISTRO, T1.FECHA_ULTMODIFICACION FECHAULTMODIFICACION, T1.USUARIO_ULTMODIFICACION USUARIOULTMODIFICACION, T1.EMAIL EMAIL, T1.TELEFONO TELEFONO, T1.TELEF_PROMO TELEFPROMO, T1.MODIF_ESENCIAL MODIFESENCIAL, T2.ID_RECURSO RECURSOIDRECURSO, T2.TIPO_RECURSO RECURSOTIPORECURSO, T2.DESC_NOMBRE RECURSODESCNOMBRE, T2.FECHA_BAJA RECURSOFECHABAJA, T2.NUM_REGISTRO RECURSONUMREGISTRO, T2.FECHA_REGISTRO RECURSOFECHAREGISTRO, T2.USUARIO_REGISTRO RECURSOUSUARIOREGISTRO, T2.FECHA_ULTMODIFICACION RECURSOFECHAULTMODIFICACION, T2.USUARIO_ULTMODIFICACION RECURSOUSUARIOULTMODIFICACION, T3.ID_TIPO_ESTABLECIMIENTO TIPOESTIDTIPOESTABLECIMIENTO, T3.DESC_TIPO_ES TIPOESTDESCTIPOES, T3.FECHA_MODIFICACION TIPOESTFECHAMODIFICACION, T3.NOM_USUARIO TIPOESTNOMUSUARIO, T3.BAJA TIPOESTBAJA, T3.DESC_TIPO_EU TIPOESTDESCTIPOEU, T3.ORDENACION TIPOESTORDENACION, T3.TIPIFICACION TIPOESTTIPIFICACION, T3.FECHA_REGISTRO TIPOESTFECHAREGISTRO, T3.USUARIO_REGISTRO TIPOESTUSUARIOREGISTRO, T3.FECHA_ULTMODIFICACION TIPOESTFECHAULTMODIFICACION, T3.USUARIO_ULTMODIFICACION TIPOESTUSUARIOULTMODIFICACION, T4.ID_GRUPO GRUPOIDGRUPO, T4.DESC_GRUPO_ES GRUPODESCGRUPOES, T4.FECHA_MODIFICACION GRUPOFECHAMODIFICACION, T4.NOM_USUARIO GRUPONOMUSUARIO, T4.BAJA GRUPOBAJA, T4.DESC_GRUPO_EU GRUPODESCGRUPOEU, T4.FECHA_REGISTRO GRUPOFECHAREGISTRO, T4.USUARIO_REGISTRO GRUPOUSUARIOREGISTRO, T4.FECHA_ULTMODIFICACION GRUPOFECHAULTMODIFICACION, T4.USUARIO_ULTMODIFICACION GRUPOUSUARIOULTMODIFICACION, T5.ID_CATEGORIAS CATEGIDCATEGORIAS, T5.DESC_CATEGORIA_ES CATEGDESCCATEGORIAES, T5.FECHA_MODIFICACION CATEGFECHAMODIFICACION, T5.NOM_USUARIO CATEGNOMUSUARIO, T5.BAJA CATEGBAJA, T5.DESC_CATEGORIA_EU CATEGDESCCATEGORIAEU, T5.FECHA_REGISTRO CATEGFECHAREGISTRO, T5.USUARIO_REGISTRO CATEGUSUARIOREGISTRO, T5.FECHA_ULTMODIFICACION CATEGFECHAULTMODIFICACION, T5.USUARIO_ULTMODIFICACION CATEGUSUARIOULTMODIFICACION, T6.ID_ESPECIALIDAD ESPIDESPECIALIDAD, T6.DESC_CATEGORIA_ES ESPDESCCATEGORIAES, T6.FECHA_MODIFICACION ESPFECHAMODIFICACION, T6.NOM_USUARIO ESPNOMUSUARIO, T6.BAJA ESPBAJA, T6.DESC_CATEGORIA_EU ESPDESCCATEGORIAEU, T6.FECHA_REGISTRO ESPFECHAREGISTRO, T6.USUARIO_REGISTRO ESPUSUARIOREGISTRO, T6.FECHA_ULTMODIFICACION ESPFECHAULTMODIFICACION, T6.USUARIO_ULTMODIFICACION ESPUSUARIOULTMODIFICACION, T7.ID_MODALIDAD MODAIDMODALIDAD, T7.DESC_MODALIDAD_ES MODADESCMODALIDADES, T7.FECHA_MODIFICACION MODAFECHAMODIFICACION, T7.NOM_USUARIO MODANOMUSUARIO, T7.BAJA MODABAJA, T7.DESC_MODALIDAD_EU MODADESCMODALIDADEU, T7.FECHA_REGISTRO MODAFECHAREGISTRO, T7.USUARIO_REGISTRO MODAUSUARIOREGISTRO, T7.FECHA_ULTMODIFICACION MODAFECHAULTMODIFICACION, T7.USUARIO_ULTMODIFICACION MODAUSUARIOULTMODIFICACION, T8.ID_ESTABLECIMIENTO DATAESTIDESTABLECIMIENTO, T8.FECHA_ANO_CONSTRUCCION DATAESTFECHAANOCONSTRUCCION, T8.FECHA_ANO_RENOVACION DATAESTFECHAANORENOVACION, T8.DERECHO_COCINA DATAESTDERECHOCOCINA, T8.SERVICIO_COMEDOR DATAESTSERVICIOCOMEDOR, T8.NUM_SALONES DATAESTNUMSALONES, T8.NUM_SALONES_COMEDOR DATAESTNUMSALONESCOMEDOR, T8.NUM_COMEDORES DATAESTNUMCOMEDORES, T8.NUM_BAÑOS_GENERALES DATAESTNUMBAÑOSGENERALES, T8.NUM_CONJUNTOS DATAESTNUMCONJUNTOS, T8.NUM_ESTUDIOS DATAESTNUMESTUDIOS, T8.NUM_HAB_DOBLE DATAESTNUMHABDOBLE, T8.NUM_HAB_INDIVIDUALES DATAESTNUMHABINDIVIDUALES, T8.NUM_MAXIMO_SUPLETORIAS DATAESTNUMMAXIMOSUPLETORIAS, T8.NUM_PLAZAS DATAESTNUMPLAZAS, T8.EDIFICIO_CATALOGADO DATAESTEDIFICIOCATALOGADO, T8.NUM_HAB_MAS_4 DATAESTNUMHABMAS4, T8.NUM_HAB_MENOS_4 DATAESTNUMHABMENOS4, T8.COMPARTE_VIVIENDAS DATAESTCOMPARTEVIVIENDAS, T8.NUM_HAB_DOBLE_CS DATAESTNUMHABDOBLECS, T8.NUM_APARTAMENTOS DATAESTNUMAPARTAMENTOS, T8.NUM_SUITES DATAESTNUMSUITES, T8.COMPARTE_INSTAL DATAESTCOMPARTEINSTAL, T8.NUM_INSTAL_COMPARTE DATAESTNUMINSTALCOMPARTE, T8.NUM_SUP_ACAMPADA DATAESTNUMSUPACAMPADA, T8.BAR DATAESTBAR, T8.RESTAURANTE DATAESTRESTAURANTE, T8.PISCINA DATAESTPISCINA, T8.NUM_TOT_PARCELAS DATAESTNUMTOTPARCELAS, T8.NUM_PARCELAS_ANF DATAESTNUMPARCELASANF, T8.NUM_PARCELAS_AF DATAESTNUMPARCELASAF, T8.NUM_PARCELAS_SA DATAESTNUMPARCELASSA, T8.INDICADOR_IA DATAESTINDICADORIA, T8.FECHA_CONTROL_IA DATAESTFECHACONTROLIA, T8.REQUISITOS DATAESTREQUISITOS, T8.NUM_CONTROL DATAESTNUMCONTROL, T8.FECHA_ANT_CONTROL DATAESTFECHAANTCONTROL, T8.NUM_HABITACIONES DATAESTNUMHABITACIONES, T8.NUM_RESIDENTES_PERM DATAESTNUMRESIDENTESPERM, T8.SUP_TOT_HABITAC DATAESTSUPTOTHABITAC, T8.SUP_RESTO_DEPEN DATAESTSUPRESTODEPEN, T8.FECHA_REGISTRO DATAESTFECHAREGISTRO, T8.USUARIO_REGISTRO DATAESTUSUARIOREGISTRO, T8.FECHA_ULTMODIFICACION DATAESTFECHAULTMODIFICACION, T8.USUARIO_ULTMODIFICACION DATAESTUSUARIOULTMODIFICACION, T8.DISPONE_COCINA DISPONECOCINA, T8.DISPONE_SALON DISPONESALON, T9.ID_ESTABLECIMIENTO FRANQIDESTABLECIMIENTO, T9.FRANQUICIA FRANQFRANQUICIA, T9.ID_FRANQUICIA AB6336S00IDFRANQUICIA, T9.INDONLINE FRANQINDONLINE, T9.ID_INSTAL_OFI_PRINCIPAL FRANQIDINSTALOFIPRINCIPAL, T9.ID_ORIGEN_OFI_PRINCIPAL FRANQIDORIGENOFIPRINCIPAL, T9.ID_TIPO_CIE FRANQIDTIPOCIE, T9.ETIQUETA_CIE FRANQETIQUETACIE, T9.REGISTRO_FIANZA FRANQREGISTROFIANZA, T9.OBSERV_FIANZA FRANQOBSERVFIANZA, T9.OBSERV_SRC FRANQOBSERVSRC, T9.ID_PRIMERA_SUCURSAL FRANQIDPRIMERASUCURSAL, T9.NUM_CIE FRANQNUMCIE, T9.FECHA_REGISTRO FRANQFECHAREGISTRO, T9.USUARIO_REGISTRO FRANQUSUARIOREGISTRO, T9.FECHA_ULTMODIFICACION FRANQFECHAULTMODIFICACION, T9.USUARIO_ULTMODIFICACION FRANQUSUARIOULTMODIFICACION, T4.ID_TIPO_ESTABLECIMIENTO AB6312S00IDTIPOESTABLECIMIENTO, T5.ID_TIPO_ESTABLECIMIENTO AB6313S00IDTIPOESTABLECIMIENTO, T6.ID_TIPO_ESTABLECIMIENTO AB6315S00IDTIPOESTABLECIMIENTO, T7.ID_TIPO_ESTABLECIMIENTO AB6314S00IDTIPOESTABLECIMIENTO, T10.ID_ESTABLECIMIENTO AB6339S00IDESTAB, T10.ID_TERCERO AB6339S00IDTERCERO, T11.DOCUMENTO NIFINTERESADO, T11.NOMBRE NOMBREINTERESADO, T11.APELLIDO1 APELLIDO1INTERESADO, T11.APELLIDO2 APELLIDO2INTERESADO, T11.EMAIL EMAILINTERESADO, T11.TELEFONO TELEFONOINTERESADO, T36.ID_DIRECCION, T36.ID_PROVINCIA, T36.ID_MUNICIPIO, T36.ID_LOCALIDAD, T36.DIRECCION, T36.NUMERO, T36.ESCALERA, T36.PISO, T36.LETRA, T36.CODIGO_POSTAL, T36.IDPAIS, T36.DESCRIPCIONPROVINCIAEXTR, T36.DESCRIPCIONCIUDADEXTR, T1.ID_EXPEDIENTE IDEXPEDIENTE, T1.ID_ESTABLECIMIENTO_PADRE IDESTABLECIMIENTOPADRE, T1.TIPO_REGISTRO TIPO_REGISTRO, T1.IDESTAB_SOLIC IDESTABSOLIC, T1.PERIODO_PUENTES PERIODOPUENTES, T1.PERIODO_VACACIONES PERIODOVACACIONES, T1.PERIODO_VERANO PERIODOVERANO, T1.SIN_PERIODO_PREF SINPERIODOPREF, T20.ID_DISPENSAS_ESTAB IDDISPENSASESTAB, T20.FECHA_DISPENSA FECHADISPENSA, T20.OBSERVACIONES_DESC_ES OBSERVACIONESDESCES, T20.OBSERVACIONES_DESC_EU OBSERVACIONESDESCEU, T20.ID_ESTABLECIMIENTO IDESTABDISPENSA, T20.FECHA_REGISTRO FECHAREGDISPENSA, T20.USUARIO_REGISTRO USUARIOREGDISPENSA, T20.FECHA_ULTMODIFICACION FECHAULTMODIF, T20.USUARIO_ULTMODIFICACION USUARIOULTMODIF, T20.FOLDER_ID FOLDERID, T20.FOLDER_NUMBER FOLDERNUMBER, T20.DISPENSADO DISPENSADO, T8.NUM_DORM_RESID NUMDORMRESID, T8.NUM_DORM_USUARIO NUMDORMUSUARIO, T8.SUPERFICIE_TOTAL SUPTOTAL, T36.MUNICIPIODSO ");
		query.append(
				"FROM AB6301S00 T1, AB6300S00 T2, AB6311S00 T3, AB6312S00 T4, AB6313S00 T5, AB6315S00 T6, AB6314S00 T7, AB6321S00 T8, AB6335S00 T9, AB6339S00 T10, DATOS_TERCERO T11, ( SELECT DISPENSADO, FECHA_DISPENSA, FECHA_REGISTRO, FECHA_ULTMODIFICACION, FOLDER_ID, FOLDER_NUMBER, ID_DISPENSAS_ESTAB, ID_ESTABLECIMIENTO, OBSERVACIONES_DESC_ES, OBSERVACIONES_DESC_EU, USUARIO_REGISTRO, USUARIO_ULTMODIFICACION FROM AB6320S00 WHERE DISPENSADO = '1' ) T20, (SELECT vt39.ID_ESTABLECIMIENTO, DIR.ID_DIRECCION, DIR.ID_TERCERO, DIR.ID_PROVINCIA, DIR.ID_MUNICIPIO, DIR.ID_LOCALIDAD, DIR.DIRECCION, DIR.NUMERO, DIR.ESCALERA, DIR.PISO, DIR.LETRA, DIR.CODIGO_POSTAL, DIR.ID_PAIS IDPAIS, DIR.DESCRIPCION_PROVINCIA DESCRIPCIONPROVINCIAEXTR, DIR.DESCRIPCION_CIUDAD DESCRIPCIONCIUDADEXTR, T17.DS_O MUNICIPIODSO FROM DATOS_DIRECCIONES DIR, MUNICIPIOS T17, AB6339S00 vt39 WHERE DIR.ID_TIPO_DIRECCION = 2 AND DIR.ID_PROVINCIA = T17.PROVINCIA_ID (+) AND DIR.ID_MUNICIPIO = T17.ID (+) AND DIR.ID_TERCERO = vt39.ID_TERCERO ) T36 ");
		// Where clause & Params
		Map<String, ?> mapaWhere = this.getWhereLikeMap(ab6301s00, startsWith);

		StringBuilder where = new StringBuilder(
				" WHERE 1 = 1 AND T1.ID_ESTABLECIMIENTO = T20.ID_ESTABLECIMIENTO (+) AND T1.ID_RECURSO = T2.ID_RECURSO (+) AND T1.ID_TIPO_ESTABLECIMIENTO = T3.ID_TIPO_ESTABLECIMIENTO AND ( T1.ID_GRUPO = T4.ID_GRUPO (+) AND T4.ID_TIPO_ESTABLECIMIENTO (+) = T1.ID_TIPO_ESTABLECIMIENTO ) AND ( T1.ID_CATEGORIAS = T5.ID_CATEGORIAS (+) AND T5.ID_TIPO_ESTABLECIMIENTO (+) = T1.ID_TIPO_ESTABLECIMIENTO ) AND ( T1.ID_ESPECIALIDAD = T6.ID_ESPECIALIDAD (+) AND T6.ID_TIPO_ESTABLECIMIENTO (+) = T1.ID_TIPO_ESTABLECIMIENTO ) AND ( T1.ID_MODALIDAD = T7.ID_MODALIDAD (+) AND T7.ID_TIPO_ESTABLECIMIENTO (+) = T1.ID_TIPO_ESTABLECIMIENTO ) AND T1.ID_ESTABLECIMIENTO = T8.ID_ESTABLECIMIENTO (+) AND T1.ID_ESTABLECIMIENTO = T9.ID_ESTABLECIMIENTO (+) AND T1.ID_ESTABLECIMIENTO = T10.ID_ESTABLECIMIENTO AND T10.ID_TERCERO = T11.ID_TERCERO (+) AND T10.ID_ESTABLECIMIENTO = T36.ID_ESTABLECIMIENTO (+)  AND T1.ID_ESTABLECIMIENTO = T9.ID_ESTABLECIMIENTO (+)  ");
		where.append(mapaWhere.get("query"));
		query.append(where);

		// ParÃ¡metros de filtrado
		@SuppressWarnings("unchecked")
		List<Object> filterParamList = (List<Object>) mapaWhere.get("params");

		// SQL para la reordenaciÃ³n
		StringBuilder sbReorderSelectionSQL = JQGridManager.getReorderQuery(query, jqGridRequestDto,
				Establecimiento.class, filterParamList, "ID_ESTABLECIMIENTO");

		return this.jdbcTemplate.query(sbReorderSelectionSQL.toString(),
				new RowNumResultSetExtractor<Establecimiento>(this.rwMapPK, jqGridRequestDto),
				filterParamList.toArray());
	}

	/**
	 * 
	 */
	@Override
	public String getNewIntetificador(String tipoRegistro, String tipoEstablecimiento, String zona) {
		SimpleJdbcCall callProcedure = new SimpleJdbcCall(jdbcTemplate).withFunctionName("REATE_CALCULAR_SIGNATURA");

		Map<String, Object> inParamMap = new HashMap<String, Object>();
		inParamMap.put("IN_TIPO", tipoRegistro);
		inParamMap.put("IN_ZONA", zona);
		inParamMap.put("IN_TIPO_ESTAB", tipoEstablecimiento);
		SqlParameterSource in = new MapSqlParameterSource(inParamMap);

		return callProcedure.executeFunction(String.class, in);
	}

	@Override
	public Establecimiento findEstablecimientoByIdExpediente(Integer idExpediente) {

		StringBuilder query = new StringBuilder(
				"SELECT T1.ID_ESTABLECIMIENTO IDESTABLECIMIENTO, T1.IDENTIFICADOR_ESTABLECIMIENTO IDENTIFICADORESTABLECIMIENTO, T1.DESC_NOMBRE DESCNOMBRE, T1.VISIBLEWEB VISIBLEWEB, T1.TEMPORADA TEMPORADA, T1.URLWEB URLWEB, T1.ID_DEFECTOS IDDEFECTOS, T1.NUM_UNIDADES_ALOJAMIENTO NUMUNIDADESALOJAMIENTO, T1.OBSERVACIONES OBSERVACIONES, T1.FECHA_APERTURA FECHAAPERTURA, T1.FECHA_BAJA FECHABAJA, T1.FECHA_INICIERRETEMP FECHAINICIERRETEMP, T1.FECHA_FINCIERRETEMP FECHAFINCIERRETEMP, T1.FECHA_VCTO_CIERRE FECHAVCTOCIERRE, T1.FECHA_ULT_NOTIFICACION FECHAULTNOTIFICACION, T1.FECHA_ULT_INSPECCION FECHAULTINSPECCION, T1.FECHA_PRO_INSPECCION FECHAPROINSPECCION, T1.FECHA_ULT_ACTUALIZACION FECHAULTACTUALIZACION, T1.FECHA_CLAUSURA FECHACLAUSURA, T1.FECHA_ULT_REFORMA FECHAULTREFORMA, T1.ELIMINADO ELIMINADO, T1.EXPEDIENTEB29 EXPEDIENTEB29, T1.ID_PORTAL_S41 IDPORTALS41, T1.URL_PORTAL_S41 URLPORTALS41, T1.FECHA_CONTROL_S41 FECHACONTROLS41, T1.NUM_INSTALACION_ANTERIOR NUMINSTALACIONANTERIOR, T1.FECHA_INSCRIPCION FECHAINSCRIPCION, T1.NUM_INSTALACION_WZ NUMINSTALACIONWZ, T1.OBSERVACIONES2 OBSERVACIONES2, T1.NOTAS_MIGRACION NOTASMIGRACION, T1.AGRUPACION AGRUPACION, T1.REF_CATASTRAL REFCATASTRAL, T1.OBS_SEGRESPCIVIL OBSSEGRESPCIVIL, T1.FECHA_REGISTRO FECHAREGISTRO, T1.USUARIO_REGISTRO USUARIOREGISTRO, T1.FECHA_ULTMODIFICACION FECHAULTMODIFICACION, T1.USUARIO_ULTMODIFICACION USUARIOULTMODIFICACION, T1.EMAIL EMAIL, T1.TELEFONO TELEFONO, T1.TELEF_PROMO TELEFPROMO, T1.MODIF_ESENCIAL MODIFESENCIAL, T2.ID_RECURSO RECURSOIDRECURSO, T2.TIPO_RECURSO RECURSOTIPORECURSO, T2.DESC_NOMBRE RECURSODESCNOMBRE, T2.FECHA_BAJA RECURSOFECHABAJA, T2.NUM_REGISTRO RECURSONUMREGISTRO, T2.FECHA_REGISTRO RECURSOFECHAREGISTRO, T2.USUARIO_REGISTRO RECURSOUSUARIOREGISTRO, T2.FECHA_ULTMODIFICACION RECURSOFECHAULTMODIFICACION, T2.USUARIO_ULTMODIFICACION RECURSOUSUARIOULTMODIFICACION, T3.ID_TIPO_ESTABLECIMIENTO TIPOESTIDTIPOESTABLECIMIENTO, T3.DESC_TIPO_ES TIPOESTDESCTIPOES, T3.FECHA_MODIFICACION TIPOESTFECHAMODIFICACION, T3.NOM_USUARIO TIPOESTNOMUSUARIO, T3.BAJA TIPOESTBAJA, T3.DESC_TIPO_EU TIPOESTDESCTIPOEU, T3.ORDENACION TIPOESTORDENACION, T3.TIPIFICACION TIPOESTTIPIFICACION, T3.FECHA_REGISTRO TIPOESTFECHAREGISTRO, T3.USUARIO_REGISTRO TIPOESTUSUARIOREGISTRO, T3.FECHA_ULTMODIFICACION TIPOESTFECHAULTMODIFICACION, T3.USUARIO_ULTMODIFICACION TIPOESTUSUARIOULTMODIFICACION, T4.ID_GRUPO GRUPOIDGRUPO, T4.DESC_GRUPO_ES GRUPODESCGRUPOES, T4.FECHA_MODIFICACION GRUPOFECHAMODIFICACION, T4.NOM_USUARIO GRUPONOMUSUARIO, T4.BAJA GRUPOBAJA, T4.DESC_GRUPO_EU GRUPODESCGRUPOEU, T4.FECHA_REGISTRO GRUPOFECHAREGISTRO, T4.USUARIO_REGISTRO GRUPOUSUARIOREGISTRO, T4.FECHA_ULTMODIFICACION GRUPOFECHAULTMODIFICACION, T4.USUARIO_ULTMODIFICACION GRUPOUSUARIOULTMODIFICACION, T5.ID_CATEGORIAS CATEGIDCATEGORIAS, T5.DESC_CATEGORIA_ES CATEGDESCCATEGORIAES, T5.FECHA_MODIFICACION CATEGFECHAMODIFICACION, T5.NOM_USUARIO CATEGNOMUSUARIO, T5.BAJA CATEGBAJA, T5.DESC_CATEGORIA_EU CATEGDESCCATEGORIAEU, T5.FECHA_REGISTRO CATEGFECHAREGISTRO, T5.USUARIO_REGISTRO CATEGUSUARIOREGISTRO, T5.FECHA_ULTMODIFICACION CATEGFECHAULTMODIFICACION, T5.USUARIO_ULTMODIFICACION CATEGUSUARIOULTMODIFICACION, T6.ID_ESPECIALIDAD ESPIDESPECIALIDAD, T6.DESC_CATEGORIA_ES ESPDESCCATEGORIAES, T6.FECHA_MODIFICACION ESPFECHAMODIFICACION, T6.NOM_USUARIO ESPNOMUSUARIO, T6.BAJA ESPBAJA, T6.DESC_CATEGORIA_EU ESPDESCCATEGORIAEU, T6.FECHA_REGISTRO ESPFECHAREGISTRO, T6.USUARIO_REGISTRO ESPUSUARIOREGISTRO, T6.FECHA_ULTMODIFICACION ESPFECHAULTMODIFICACION, T6.USUARIO_ULTMODIFICACION ESPUSUARIOULTMODIFICACION, T7.ID_MODALIDAD MODAIDMODALIDAD, T7.DESC_MODALIDAD_ES MODADESCMODALIDADES, T7.FECHA_MODIFICACION MODAFECHAMODIFICACION, T7.NOM_USUARIO MODANOMUSUARIO, T7.BAJA MODABAJA, T7.DESC_MODALIDAD_EU MODADESCMODALIDADEU, T7.FECHA_REGISTRO MODAFECHAREGISTRO, T7.USUARIO_REGISTRO MODAUSUARIOREGISTRO, T7.FECHA_ULTMODIFICACION MODAFECHAULTMODIFICACION, T7.USUARIO_ULTMODIFICACION MODAUSUARIOULTMODIFICACION, T8.ID_ESTABLECIMIENTO DATAESTIDESTABLECIMIENTO, T8.FECHA_ANO_CONSTRUCCION DATAESTFECHAANOCONSTRUCCION, T8.FECHA_ANO_RENOVACION DATAESTFECHAANORENOVACION, T8.DERECHO_COCINA DATAESTDERECHOCOCINA, T8.SERVICIO_COMEDOR DATAESTSERVICIOCOMEDOR, T8.NUM_SALONES DATAESTNUMSALONES, T8.NUM_SALONES_COMEDOR DATAESTNUMSALONESCOMEDOR, T8.NUM_COMEDORES DATAESTNUMCOMEDORES, T8.NUM_BAÑOS_GENERALES DATAESTNUMBAÑOSGENERALES, T8.NUM_CONJUNTOS DATAESTNUMCONJUNTOS, T8.NUM_ESTUDIOS DATAESTNUMESTUDIOS, T8.NUM_HAB_DOBLE DATAESTNUMHABDOBLE, T8.NUM_HAB_INDIVIDUALES DATAESTNUMHABINDIVIDUALES, T8.NUM_MAXIMO_SUPLETORIAS DATAESTNUMMAXIMOSUPLETORIAS, T8.NUM_PLAZAS DATAESTNUMPLAZAS, T8.EDIFICIO_CATALOGADO DATAESTEDIFICIOCATALOGADO, T8.NUM_HAB_MAS_4 DATAESTNUMHABMAS4, T8.NUM_HAB_MENOS_4 DATAESTNUMHABMENOS4, T8.COMPARTE_VIVIENDAS DATAESTCOMPARTEVIVIENDAS, T8.NUM_HAB_DOBLE_CS DATAESTNUMHABDOBLECS, T8.NUM_APARTAMENTOS DATAESTNUMAPARTAMENTOS, T8.NUM_SUITES DATAESTNUMSUITES, T8.COMPARTE_INSTAL DATAESTCOMPARTEINSTAL, T8.NUM_INSTAL_COMPARTE DATAESTNUMINSTALCOMPARTE, T8.NUM_SUP_ACAMPADA DATAESTNUMSUPACAMPADA, T8.BAR DATAESTBAR, T8.RESTAURANTE DATAESTRESTAURANTE, T8.PISCINA DATAESTPISCINA, T8.NUM_TOT_PARCELAS DATAESTNUMTOTPARCELAS, T8.NUM_PARCELAS_ANF DATAESTNUMPARCELASANF, T8.NUM_PARCELAS_AF DATAESTNUMPARCELASAF, T8.NUM_PARCELAS_SA DATAESTNUMPARCELASSA, T8.INDICADOR_IA DATAESTINDICADORIA, T8.FECHA_CONTROL_IA DATAESTFECHACONTROLIA, T8.REQUISITOS DATAESTREQUISITOS, T8.NUM_CONTROL DATAESTNUMCONTROL, T8.FECHA_ANT_CONTROL DATAESTFECHAANTCONTROL, T8.NUM_HABITACIONES DATAESTNUMHABITACIONES, T8.NUM_RESIDENTES_PERM DATAESTNUMRESIDENTESPERM, T8.SUP_TOT_HABITAC DATAESTSUPTOTHABITAC, T8.SUP_RESTO_DEPEN DATAESTSUPRESTODEPEN, T8.FECHA_REGISTRO DATAESTFECHAREGISTRO, T8.USUARIO_REGISTRO DATAESTUSUARIOREGISTRO, T8.FECHA_ULTMODIFICACION DATAESTFECHAULTMODIFICACION, T8.USUARIO_ULTMODIFICACION DATAESTUSUARIOULTMODIFICACION, T8.DISPONE_COCINA DISPONECOCINA, T8.DISPONE_SALON DISPONESALON, T9.ID_ESTABLECIMIENTO FRANQIDESTABLECIMIENTO, T9.FRANQUICIA FRANQFRANQUICIA, T12.ID_FRANQUICIA AB6336S00IDFRANQUICIA, T12.DESC_FRANQUICIA_ES AB6336S00DESCFRANQUICIAES, T12.DESC_FRANQUICIA_EU AB6336S00DESCFRANQUICIAEU, T12.BAJA AB6336S00BAJA, T9.INDONLINE FRANQINDONLINE, T9.ID_INSTAL_OFI_PRINCIPAL FRANQIDINSTALOFIPRINCIPAL, T9.ID_ORIGEN_OFI_PRINCIPAL FRANQIDORIGENOFIPRINCIPAL, T9.ID_TIPO_CIE FRANQIDTIPOCIE, T9.ETIQUETA_CIE FRANQETIQUETACIE, T9.REGISTRO_FIANZA FRANQREGISTROFIANZA, T9.OBSERV_FIANZA FRANQOBSERVFIANZA, T9.OBSERV_SRC FRANQOBSERVSRC, T9.ID_PRIMERA_SUCURSAL FRANQIDPRIMERASUCURSAL, T9.NUM_CIE FRANQNUMCIE, T9.FECHA_REGISTRO FRANQFECHAREGISTRO, T9.USUARIO_REGISTRO FRANQUSUARIOREGISTRO, T9.FECHA_ULTMODIFICACION FRANQFECHAULTMODIFICACION, T9.USUARIO_ULTMODIFICACION FRANQUSUARIOULTMODIFICACION, T4.ID_TIPO_ESTABLECIMIENTO AB6312S00IDTIPOESTABLECIMIENTO, T5.ID_TIPO_ESTABLECIMIENTO AB6313S00IDTIPOESTABLECIMIENTO, T6.ID_TIPO_ESTABLECIMIENTO AB6315S00IDTIPOESTABLECIMIENTO, T7.ID_TIPO_ESTABLECIMIENTO AB6314S00IDTIPOESTABLECIMIENTO, VS10.ID_ESTABLECIMIENTO AB6339S00IDESTAB, VS10.ID_TERCERO AB6339S00IDTERCERO, VS10.DOCUMENTO NIFINTERESADO, VS10.NOMBRE NOMBREINTERESADO, VS10.APELLIDO1 APELLIDO1INTERESADO, VS10.APELLIDO2 APELLIDO2INTERESADO, VS10.EMAIL EMAILINTERESADO, VS10.TELEFONO TELEFONOINTERESADO, T36.ID_DIRECCION, T36.ID_PROVINCIA, T36.ID_MUNICIPIO, T36.ID_LOCALIDAD, T36.DIRECCION, T36.NUMERO, T36.ESCALERA, T36.PISO, T36.LETRA, T36.CODIGO_POSTAL, T36.IDPAIS, T36.DESCRIPCIONPROVINCIAEXTR, T36.DESCRIPCIONCIUDADEXTR, T1.ID_EXPEDIENTE IDEXPEDIENTE, T1.ID_ESTABLECIMIENTO_PADRE IDESTABLECIMIENTOPADRE, T1.TIPO_REGISTRO TIPO_REGISTRO, T1.IDESTAB_SOLIC IDESTABSOLIC, T1.PERIODO_PUENTES PERIODOPUENTES, T1.PERIODO_VACACIONES PERIODOVACACIONES, T1.PERIODO_VERANO PERIODOVERANO, T1.SIN_PERIODO_PREF SINPERIODOPREF, T20.ID_DISPENSAS_ESTAB IDDISPENSASESTAB, T20.FECHA_DISPENSA FECHADISPENSA, T20.OBSERVACIONES_DESC_ES OBSERVACIONESDESCES, T20.OBSERVACIONES_DESC_EU OBSERVACIONESDESCEU, T20.ID_ESTABLECIMIENTO IDESTABDISPENSA, T20.FECHA_REGISTRO FECHAREGDISPENSA, T20.USUARIO_REGISTRO USUARIOREGDISPENSA, T20.FECHA_ULTMODIFICACION FECHAULTMODIF, T20.USUARIO_ULTMODIFICACION USUARIOULTMODIF, T20.FOLDER_ID FOLDERID, T20.FOLDER_NUMBER FOLDERNUMBER, T20.DISPENSADO DISPENSADO, T8.NUM_DORM_RESID NUMDORMRESID, T8.NUM_DORM_USUARIO NUMDORMUSUARIO, T8.SUPERFICIE_TOTAL SUPTOTAL, T36.MUNICIPIODSO, T8.NUM_SUP_COCINA NUMSUPCOCINA ");

		query.append(
				"FROM AB6301S00 T1, AB6300S00 T2, AB6311S00 T3, AB6312S00 T4, AB6313S00 T5, AB6315S00 T6, AB6314S00 T7, AB6321S00 T8, AB6335S00 T9, ( SELECT VS39.ID_ESTABLECIMIENTO, VS35.* FROM ( SELECT VS39.ID_ESTABLECIMIENTO, VS39.ID_TIPO_TERCERO ID_TIPO_TERCERO, MAX(VS39.ID_TERCERO) ID_TERCERO FROM AB6339S00 VS39 WHERE VS39.ID_TIPO_TERCERO = 9 AND VS39.BAJA = 0 GROUP BY VS39.ID_ESTABLECIMIENTO, ID_TIPO_TERCERO ) VS39, DATOS_TERCERO VS35 WHERE VS39.ID_TERCERO = VS35.ID_TERCERO AND VS39.ID_TIPO_TERCERO = 9 ) VS10, ( SELECT DISPENSADO, FECHA_DISPENSA, FECHA_REGISTRO, FECHA_ULTMODIFICACION, FOLDER_ID, FOLDER_NUMBER, ID_DISPENSAS_ESTAB, ID_ESTABLECIMIENTO, OBSERVACIONES_DESC_ES, OBSERVACIONES_DESC_EU, USUARIO_REGISTRO, USUARIO_ULTMODIFICACION FROM AB6320S00 WHERE DISPENSADO = '1' ) T20, ( SELECT VT39.ID_ESTABLECIMIENTO, DIR.ID_DIRECCION, DIR.ID_TERCERO, DIR.ID_PROVINCIA, DIR.ID_MUNICIPIO, DIR.ID_LOCALIDAD, DIR.DIRECCION, DIR.NUMERO, DIR.ESCALERA, DIR.PISO, DIR.LETRA, DIR.CODIGO_POSTAL, DIR.ID_PAIS IDPAIS, DIR.DESCRIPCION_PROVINCIA DESCRIPCIONPROVINCIAEXTR, DIR.DESCRIPCION_CIUDAD DESCRIPCIONCIUDADEXTR, T17.DS_O MUNICIPIODSO FROM DATOS_DIRECCIONES DIR, MUNICIPIOS T17, AB6339S00 VT39 WHERE DIR.ID_TIPO_DIRECCION = 2 AND DIR.ID_PROVINCIA = T17.PROVINCIA_ID (+) AND DIR.ID_MUNICIPIO = T17.ID (+) AND DIR.ID_TERCERO = VT39.ID_TERCERO ) T36, AB6336S00 T12 ");
		// Where clause & Params
		query.append(
				"WHERE 1 = 1 AND T1.ID_ESTABLECIMIENTO = T20.ID_ESTABLECIMIENTO (+) AND T1.ID_RECURSO = T2.ID_RECURSO (+) AND T1.ID_TIPO_ESTABLECIMIENTO = T3.ID_TIPO_ESTABLECIMIENTO AND ( T1.ID_GRUPO = T4.ID_GRUPO (+) AND T4.ID_TIPO_ESTABLECIMIENTO (+) = T1.ID_TIPO_ESTABLECIMIENTO )  AND ( T1.ID_CATEGORIAS = T5.ID_CATEGORIAS (+) AND T5.ID_TIPO_ESTABLECIMIENTO (+) = T1.ID_TIPO_ESTABLECIMIENTO ) AND ( T1.ID_ESPECIALIDAD = T6.ID_ESPECIALIDAD (+) AND T6.ID_TIPO_ESTABLECIMIENTO (+) = T1.ID_TIPO_ESTABLECIMIENTO ) AND ( T1.ID_MODALIDAD = T7.ID_MODALIDAD (+) AND T7.ID_TIPO_ESTABLECIMIENTO (+) = T1.ID_TIPO_ESTABLECIMIENTO ) AND T1.ID_ESTABLECIMIENTO = T8.ID_ESTABLECIMIENTO (+) AND T1.ID_ESTABLECIMIENTO = T9.ID_ESTABLECIMIENTO (+) AND T9.ID_FRANQUICIA = T12.ID_FRANQUICIA (+) AND T1.ID_ESTABLECIMIENTO = T36.ID_ESTABLECIMIENTO (+) AND T1.ID_ESTABLECIMIENTO = T9.ID_ESTABLECIMIENTO (+) AND T1.ID_ESTABLECIMIENTO = VS10.ID_ESTABLECIMIENTO (+) AND T1.ID_EXPEDIENTE = ? ");

		List<Establecimiento> list = (List<Establecimiento>) this.jdbcTemplate.query(query.toString(), this.rwMap,
				idExpediente);
		if (!list.isEmpty()) {
			return list.get(0);
		}
		return new Establecimiento();

	}

	/**
	 * Search method for rup_table
	 *
	 * @param filterParams
	 *            Ab6301s00
	 * @param searchParams
	 *            Ab6301s00
	 * @param jqGridRequestDto
	 *            JQGridRequestDto
	 * @param startsWith
	 *            Boolean
	 * @return List<TableRowDto<Ab6301s00>>
	 */
	@Override
	public List<TableRowDto<Establecimiento>> search(Establecimiento filterParams, Establecimiento searchParams,
			JQGridRequestDto jqGridRequestDto, Boolean startsWith) {
		// SELECT
		StringBuilder query = new StringBuilder(
				"SELECT t1.ID_ESTABLECIMIENTO IDESTABLECIMIENTO,t1.IDENTIFICADOR_ESTABLECIMIENTO IDENTIFICADORESTABLECIMIENTO, t1.DESC_NOMBRE DESCNOMBRE,t1.VISIBLEWEB VISIBLEWEB,t1.TEMPORADA TEMPORADA,t1.URLWEB URLWEB,t1.ID_DEFECTOS IDDEFECTOS,t1.NUM_UNIDADES_ALOJAMIENTO NUMUNIDADESALOJAMIENTO,t1.OBSERVACIONES OBSERVACIONES,t1.FECHA_APERTURA FECHAAPERTURA,t1.FECHA_BAJA FECHABAJA,t1.FECHA_INICIERRETEMP FECHAINICIERRETEMP,t1.FECHA_FINCIERRETEMP FECHAFINCIERRETEMP,t1.FECHA_VCTO_CIERRE FECHAVCTOCIERRE,t1.FECHA_ULT_NOTIFICACION FECHAULTNOTIFICACION,t1.FECHA_ULT_INSPECCION FECHAULTINSPECCION,t1.FECHA_PRO_INSPECCION FECHAPROINSPECCION,t1.FECHA_ULT_ACTUALIZACION FECHAULTACTUALIZACION,t1.FECHA_CLAUSURA FECHACLAUSURA,t1.FECHA_ULT_REFORMA FECHAULTREFORMA,t1.ELIMINADO ELIMINADO,t1.EXPEDIENTEB29 EXPEDIENTEB29,t1.ID_PORTAL_S41 IDPORTALS41,t1.URL_PORTAL_S41 URLPORTALS41,t1.FECHA_CONTROL_S41 FECHACONTROLS41,t1.NUM_INSTALACION_ANTERIOR NUMINSTALACIONANTERIOR,t1.FECHA_INSCRIPCION FECHAINSCRIPCION,t1.NUM_INSTALACION_WZ NUMINSTALACIONWZ,t1.OBSERVACIONES2 OBSERVACIONES2,t1.NOTAS_MIGRACION NOTASMIGRACION,t1.AGRUPACION AGRUPACION,t1.REF_CATASTRAL REFCATASTRAL,t1.OBS_SEGRESPCIVIL OBSSEGRESPCIVIL,t1.FECHA_REGISTRO FECHAREGISTRO,t1.USUARIO_REGISTRO USUARIOREGISTRO,t1.FECHA_ULTMODIFICACION FECHAULTMODIFICACION,t1.USUARIO_ULTMODIFICACION USUARIOULTMODIFICACION, t2.ID_RECURSO RECURSOIDRECURSO, t2.TIPO_RECURSO RECURSOTIPORECURSO, t2.DESC_NOMBRE RECURSODESCNOMBRE, t2.FECHA_BAJA RECURSOFECHABAJA, t2.NUM_REGISTRO RECURSONUMREGISTRO, t2.FECHA_REGISTRO RECURSOFECHAREGISTRO, t2.USUARIO_REGISTRO RECURSOUSUARIOREGISTRO, t2.FECHA_ULTMODIFICACION RECURSOFECHAULTMODIFICACION, t2.USUARIO_ULTMODIFICACION RECURSOUSUARIOULTMODIFICACION, t3.ID_TIPO_ESTABLECIMIENTO TIPOESTIDTIPOESTABLECIMIENTO, t3.DESC_TIPO_ES TIPOESTDESCTIPOES, t3.FECHA_MODIFICACION TIPOESTFECHAMODIFICACION, t3.NOM_USUARIO TIPOESTNOMUSUARIO, t3.BAJA TIPOESTBAJA, t3.DESC_TIPO_EU TIPOESTDESCTIPOEU, t3.ORDENACION TIPOESTORDENACION, t3.TIPIFICACION TIPOESTTIPIFICACION, t3.FECHA_REGISTRO TIPOESTFECHAREGISTRO, t3.USUARIO_REGISTRO TIPOESTUSUARIOREGISTRO, t3.FECHA_ULTMODIFICACION TIPOESTFECHAULTMODIFICACION, t3.USUARIO_ULTMODIFICACION TIPOESTUSUARIOULTMODIFICACION, t4.ID_GRUPO GRUPOIDGRUPO, t4.DESC_GRUPO_ES GRUPODESCGRUPOES, t4.FECHA_MODIFICACION GRUPOFECHAMODIFICACION, t4.NOM_USUARIO GRUPONOMUSUARIO, t4.BAJA GRUPOBAJA, t4.DESC_GRUPO_EU GRUPODESCGRUPOEU, t4.FECHA_REGISTRO GRUPOFECHAREGISTRO, t4.USUARIO_REGISTRO GRUPOUSUARIOREGISTRO, t4.FECHA_ULTMODIFICACION GRUPOFECHAULTMODIFICACION, t4.USUARIO_ULTMODIFICACION GRUPOUSUARIOULTMODIFICACION, t5.ID_CATEGORIAS CATEGIDCATEGORIAS, t5.DESC_CATEGORIA_ES CATEGDESCCATEGORIAES, t5.FECHA_MODIFICACION CATEGFECHAMODIFICACION, t5.NOM_USUARIO CATEGNOMUSUARIO, t5.BAJA CATEGBAJA, t5.DESC_CATEGORIA_EU CATEGDESCCATEGORIAEU, t5.FECHA_REGISTRO CATEGFECHAREGISTRO, t5.USUARIO_REGISTRO CATEGUSUARIOREGISTRO, t5.FECHA_ULTMODIFICACION CATEGFECHAULTMODIFICACION, t5.USUARIO_ULTMODIFICACION CATEGUSUARIOULTMODIFICACION, t6.ID_ESPECIALIDAD ESPIDESPECIALIDAD, t6.DESC_CATEGORIA_ES ESPDESCCATEGORIAES, t6.FECHA_MODIFICACION ESPFECHAMODIFICACION, t6.NOM_USUARIO ESPNOMUSUARIO, t6.BAJA ESPBAJA, t6.DESC_CATEGORIA_EU ESPDESCCATEGORIAEU, t6.FECHA_REGISTRO ESPFECHAREGISTRO, t6.USUARIO_REGISTRO ESPUSUARIOREGISTRO, t6.FECHA_ULTMODIFICACION ESPFECHAULTMODIFICACION, t6.USUARIO_ULTMODIFICACION ESPUSUARIOULTMODIFICACION, t7.ID_MODALIDAD MODAIDMODALIDAD, t7.DESC_MODALIDAD_ES MODADESCMODALIDADES, t7.FECHA_MODIFICACION MODAFECHAMODIFICACION, t7.NOM_USUARIO MODANOMUSUARIO, t7.BAJA MODABAJA, t7.DESC_MODALIDAD_EU MODADESCMODALIDADEU, t7.FECHA_REGISTRO MODAFECHAREGISTRO, t7.USUARIO_REGISTRO MODAUSUARIOREGISTRO, t7.FECHA_ULTMODIFICACION MODAFECHAULTMODIFICACION, t7.USUARIO_ULTMODIFICACION MODAUSUARIOULTMODIFICACION, t8.ID_ESTABLECIMIENTO DATAESTIDESTABLECIMIENTO, t8.FECHA_ANO_CONSTRUCCION DATAESTFECHAANOCONSTRUCCION, t8.FECHA_ANO_RENOVACION DATAESTFECHAANORENOVACION, t8.DERECHO_COCINA DATAESTDERECHOCOCINA, t8.SERVICIO_COMEDOR DATAESTSERVICIOCOMEDOR, t8.NUM_SALONES DATAESTNUMSALONES, t8.NUM_SALONES_COMEDOR DATAESTNUMSALONESCOMEDOR, t8.NUM_COMEDORES DATAESTNUMCOMEDORES, t8.NUM_BAÑOS_GENERALES DATAESTNUMBAÑOSGENERALES, t8.NUM_CONJUNTOS DATAESTNUMCONJUNTOS, t8.NUM_ESTUDIOS DATAESTNUMESTUDIOS, t8.NUM_HAB_DOBLE DATAESTNUMHABDOBLE, t8.NUM_HAB_INDIVIDUALES DATAESTNUMHABINDIVIDUALES, t8.NUM_MAXIMO_SUPLETORIAS DATAESTNUMMAXIMOSUPLETORIAS, t8.NUM_PLAZAS DATAESTNUMPLAZAS, t8.EDIFICIO_CATALOGADO DATAESTEDIFICIOCATALOGADO, t8.NUM_HAB_MAS_4 DATAESTNUMHABMAS4, t8.NUM_HAB_MENOS_4 DATAESTNUMHABMENOS4, t8.COMPARTE_VIVIENDAS DATAESTCOMPARTEVIVIENDAS, t8.NUM_HAB_DOBLE_CS DATAESTNUMHABDOBLECS, t8.NUM_APARTAMENTOS DATAESTNUMAPARTAMENTOS, t8.NUM_SUITES DATAESTNUMSUITES, t8.COMPARTE_INSTAL DATAESTCOMPARTEINSTAL, t8.NUM_INSTAL_COMPARTE DATAESTNUMINSTALCOMPARTE, t8.NUM_SUP_ACAMPADA DATAESTNUMSUPACAMPADA, t8.BAR DATAESTBAR, t8.RESTAURANTE DATAESTRESTAURANTE, t8.PISCINA DATAESTPISCINA, t8.NUM_TOT_PARCELAS DATAESTNUMTOTPARCELAS, t8.NUM_PARCELAS_ANF DATAESTNUMPARCELASANF, t8.NUM_PARCELAS_AF DATAESTNUMPARCELASAF, t8.NUM_PARCELAS_SA DATAESTNUMPARCELASSA, t8.INDICADOR_IA DATAESTINDICADORIA, t8.FECHA_CONTROL_IA DATAESTFECHACONTROLIA, t8.REQUISITOS DATAESTREQUISITOS, t8.NUM_CONTROL DATAESTNUMCONTROL, t8.FECHA_ANT_CONTROL DATAESTFECHAANTCONTROL, t8.NUM_HABITACIONES DATAESTNUMHABITACIONES, t8.NUM_RESIDENTES_PERM DATAESTNUMRESIDENTESPERM, t8.SUP_TOT_HABITAC DATAESTSUPTOTHABITAC, t8.SUP_RESTO_DEPEN DATAESTSUPRESTODEPEN, t8.FECHA_REGISTRO DATAESTFECHAREGISTRO, t8.USUARIO_REGISTRO DATAESTUSUARIOREGISTRO, t8.FECHA_ULTMODIFICACION DATAESTFECHAULTMODIFICACION, t8.USUARIO_ULTMODIFICACION DATAESTUSUARIOULTMODIFICACION, t9.ID_ESTABLECIMIENTO FRANQIDESTABLECIMIENTO, t9.FRANQUICIA FRANQFRANQUICIA, t9.ID_FRANQUICIA AB6336S00IDFRANQUICIA, t9.INDONLINE FRANQINDONLINE, t9.ID_INSTAL_OFI_PRINCIPAL FRANQIDINSTALOFIPRINCIPAL, t9.ID_ORIGEN_OFI_PRINCIPAL FRANQIDORIGENOFIPRINCIPAL, t9.ID_TIPO_CIE FRANQIDTIPOCIE, t9.ETIQUETA_CIE FRANQETIQUETACIE, t9.REGISTRO_FIANZA FRANQREGISTROFIANZA, t9.OBSERV_FIANZA FRANQOBSERVFIANZA, t9.OBSERV_SRC FRANQOBSERVSRC, t9.ID_PRIMERA_SUCURSAL FRANQIDPRIMERASUCURSAL, t9.NUM_CIE FRANQNUMCIE, t9.FECHA_REGISTRO FRANQFECHAREGISTRO, t9.USUARIO_REGISTRO FRANQUSUARIOREGISTRO, t9.FECHA_ULTMODIFICACION FRANQFECHAULTMODIFICACION, t9.USUARIO_ULTMODIFICACION FRANQUSUARIOULTMODIFICACION, t4.ID_TIPO_ESTABLECIMIENTO AB6312S00IDTIPOESTABLECIMIENTO, t5.ID_TIPO_ESTABLECIMIENTO AB6313S00IDTIPOESTABLECIMIENTO, t6.ID_TIPO_ESTABLECIMIENTO AB6315S00IDTIPOESTABLECIMIENTO, t7.ID_TIPO_ESTABLECIMIENTO AB6314S00IDTIPOESTABLECIMIENTO , t1.ID_EXPEDIENTE IDEXPEDIENTE, t1.ID_ESTABLECIMIENTO_PADRE IDESTABLECIMIENTOPADRE, t1.TIPO_REGISTRO TIPO_REGISTRO, t1.IDESTAB_SOLIC IDESTABSOLIC, t1.PERIODO_PUENTES PERIODOPUENTES, t1.PERIODO_VACACIONES PERIODOVACACIONES, t1.PERIODO_VERANO PERIODOVERANO, t1.SIN_PERIODO_PREF SINPERIODOPREF, t20.ID_DISPENSAS_ESTAB IDDISPENSASESTAB, t20.FECHA_DISPENSA FECHADISPENSA,t20.OBSERVACIONES_DESC_ES OBSERVACIONESDESCES,t20.OBSERVACIONES_DESC_EU OBSERVACIONESDESCEU, t20.ID_ESTABLECIMIENTO IDESTABDISPENSA, t20.FECHA_REGISTRO FECHAREGDISPENSA, t20.USUARIO_REGISTRO USUARIOREGDISPENSA, t20.FECHA_ULTMODIFICACION FECHAULTMODIF, t20.USUARIO_ULTMODIFICACION USUARIOULTMODIF, T8.DISPONE_COCINA DISPONECOCINA, T8.DISPONE_SALON DISPONESALON,t8.NUM_DORM_RESID NUMDORMRESID,t8.NUM_DORM_USUARIO NUMDORMUSUARIO, t8.SUPERFICIE_TOTAL SUPTOTAL ");
		// FROM
		query.append(
				"FROM AB6301S00 t1 ,AB6300S00 t2 ,AB6311S00 t3 ,AB6312S00 t4 ,AB6313S00 t5 ,AB6315S00 t6 ,AB6314S00 t7 ,AB6321S00 t8 ,AB6335S00 t9 ");
		// TABLAS_ALIAS
		List<String> from_alias = new ArrayList<String>();
		from_alias.add(" t1 ");
		from_alias.add(" t2 ");
		from_alias.add(" t3 ");
		from_alias.add(" t4 ");
		from_alias.add(" t5 ");
		from_alias.add(" t6 ");
		from_alias.add(" t7 ");
		from_alias.add(" t8 ");
		from_alias.add(" t9 ");

		// FILTRADO
		Map<String, ?> mapaWhereFilter = this.getWhereLikeMap(filterParams, startsWith);
		StringBuilder where = new StringBuilder(
				" WHERE 1=1 AND t1.ID_RECURSO= t2.ID_RECURSO(+) AND t1.ID_TIPO_ESTABLECIMIENTO= t3.ID_TIPO_ESTABLECIMIENTO(+) AND t1.ID_GRUPO= t4.ID_GRUPO(+) AND t1.ID_CATEGORIAS= t5.ID_CATEGORIAS(+) AND t1.ID_ESPECIALIDAD= t6.ID_ESPECIALIDAD(+) AND t1.ID_MODALIDAD= t7.ID_MODALIDAD(+) AND t1.ID_ESTABLECIMIENTO= t8.ID_ESTABLECIMIENTO(+) AND t1.ID_ESTABLECIMIENTO= t9.ID_ESTABLECIMIENTO(+) ");
		where.append(mapaWhereFilter.get("query"));
		query.append(where);
		// Filter params
		@SuppressWarnings("unchecked")
		List<Object> filterParamList = (List<Object>) mapaWhereFilter.get("params");

		// BUSQUEDA
		Map<String, Object> mapaWhereSearch = this.getWhereLikeMap(searchParams, startsWith);
		String searchSQL = ((StringBuilder) mapaWhereSearch.get("query")).toString();
		// Search params
		@SuppressWarnings("unchecked")
		List<Object> searchParamList = (List<Object>) mapaWhereSearch.get("params");

		// SQL
		StringBuilder sbReorderSelectionSQL = JQGridManager.getSearchQuery(query, jqGridRequestDto,
				Establecimiento.class, filterParamList, searchSQL, searchParamList, from_alias, "ID_ESTABLECIMIENTO");

		return this.jdbcTemplate.query(sbReorderSelectionSQL.toString(),
				new RowNumResultSetExtractor<Establecimiento>(this.rwMapPK, jqGridRequestDto),
				filterParamList.toArray());
	}

	/**
	 * Remove multiple method for rup_table
	 *
	 * @param filterab6301s00
	 *            Ab6301s00
	 * @param jqGridRequestDto
	 *            JQGridRequestDto
	 * @param startsWith
	 *            Boolean
	 */
	@Override
	public void removeMultiple(Establecimiento filterab6301s00, JQGridRequestDto jqGridRequestDto, Boolean startsWith) {
		// SELECT
		/** TODO: select por clave */
		StringBuilder query = new StringBuilder(
				"SELECT t1.ID_ESTABLECIMIENTO IDESTABLECIMIENTO,t1.IDENTIFICADOR_ESTABLECIMIENTO IDENTIFICADORESTABLECIMIENTO,t1.DESC_NOMBRE DESCNOMBRE,t1.VISIBLEWEB VISIBLEWEB,t1.TEMPORADA TEMPORADA,t1.URLWEB URLWEB,t1.ID_DEFECTOS IDDEFECTOS,t1.NUM_UNIDADES_ALOJAMIENTO NUMUNIDADESALOJAMIENTO,t1.OBSERVACIONES OBSERVACIONES,t1.FECHA_APERTURA FECHAAPERTURA,t1.FECHA_BAJA FECHABAJA,t1.FECHA_INICIERRETEMP FECHAINICIERRETEMP,t1.FECHA_FINCIERRETEMP FECHAFINCIERRETEMP,t1.FECHA_VCTO_CIERRE FECHAVCTOCIERRE,t1.FECHA_ULT_NOTIFICACION FECHAULTNOTIFICACION,t1.FECHA_ULT_INSPECCION FECHAULTINSPECCION,t1.FECHA_PRO_INSPECCION FECHAPROINSPECCION,t1.FECHA_ULT_ACTUALIZACION FECHAULTACTUALIZACION,t1.FECHA_CLAUSURA FECHACLAUSURA,t1.FECHA_ULT_REFORMA FECHAULTREFORMA,t1.ELIMINADO ELIMINADO,t1.EXPEDIENTEB29 EXPEDIENTEB29,t1.ID_PORTAL_S41 IDPORTALS41,t1.URL_PORTAL_S41 URLPORTALS41,t1.FECHA_CONTROL_S41 FECHACONTROLS41,t1.NUM_INSTALACION_ANTERIOR NUMINSTALACIONANTERIOR,t1.FECHA_INSCRIPCION FECHAINSCRIPCION,t1.NUM_INSTALACION_WZ NUMINSTALACIONWZ,t1.OBSERVACIONES2 OBSERVACIONES2,t1.NOTAS_MIGRACION NOTASMIGRACION,t1.AGRUPACION AGRUPACION,t1.REF_CATASTRAL REFCATASTRAL,t1.OBS_SEGRESPCIVIL OBSSEGRESPCIVIL,t1.FECHA_REGISTRO FECHAREGISTRO,t1.USUARIO_REGISTRO USUARIOREGISTRO,t1.FECHA_ULTMODIFICACION FECHAULTMODIFICACION,t1.USUARIO_ULTMODIFICACION USUARIOULTMODIFICACION,t2.ID_RECURSO AB6300S00IDRECURSO,t2.TIPO_RECURSO AB6300S00TIPORECURSO,t2.DESC_NOMBRE AB6300S00DESCNOMBRE,t2.FECHA_BAJA AB6300S00FECHABAJA,t2.NUM_REGISTRO AB6300S00NUMREGISTRO,t2.FECHA_REGISTRO AB6300S00FECHAREGISTRO,t2.USUARIO_REGISTRO AB6300S00USUARIOREGISTRO,t2.FECHA_ULTMODIFICACION AB6300S00FECHAULTMODIFICACION,t2.USUARIO_ULTMODIFICACION AB6300S00USUARIOULTMODIFI,t3.ID_TIPO_ESTABLECIMIENTO AB6311S00IDTIPOESTABLECIMIENTO,t3.DESC_TIPO_ES AB6311S00DESCTIPOES,t3.FECHA_MODIFICACION AB6311S00FECHAMODIFICACION,t3.NOM_USUARIO AB6311S00NOMUSUARIO,t3.BAJA AB6311S00BAJA,t3.DESC_TIPO_EU AB6311S00DESCTIPOEU,t3.ORDENACION AB6311S00ORDENACION,t3.TIPIFICACION AB6311S00TIPIFICACION,t3.FECHA_REGISTRO AB6311S00FECHAREGISTRO,t3.USUARIO_REGISTRO AB6311S00USUARIOREGISTRO,t3.FECHA_ULTMODIFICACION AB6311S00FECHAULTMODIFICACION,t3.USUARIO_ULTMODIFICACION AB6311S00USUARIOULTMODIFI,t4.ID_GRUPO AB6312S00IDGRUPO,t4.DESC_GRUPO_ES AB6312S00DESCGRUPOES,t4.FECHA_MODIFICACION AB6312S00FECHAMODIFICACION,t4.NOM_USUARIO AB6312S00NOMUSUARIO,t4.BAJA AB6312S00BAJA,t4.DESC_GRUPO_EU AB6312S00DESCGRUPOEU,t4.FECHA_REGISTRO AB6312S00FECHAREGISTRO,t4.USUARIO_REGISTRO AB6312S00USUARIOREGISTRO,t4.FECHA_ULTMODIFICACION AB6312S00FECHAULTMODIFICACION,t4.USUARIO_ULTMODIFICACION AB6312S00USUARIOULTMODIFI,t5.ID_CATEGORIAS AB6313S00IDCATEGORIAS,t5.DESC_CATEGORIA_ES AB6313S00DESCCATEGORIAES,t5.FECHA_MODIFICACION AB6313S00FECHAMODIFICACION,t5.NOM_USUARIO AB6313S00NOMUSUARIO,t5.BAJA AB6313S00BAJA,t5.DESC_CATEGORIA_EU AB6313S00DESCCATEGORIAEU,t5.FECHA_REGISTRO AB6313S00FECHAREGISTRO,t5.USUARIO_REGISTRO AB6313S00USUARIOREGISTRO,t5.FECHA_ULTMODIFICACION AB6313S00FECHAULTMODIFICACION,t5.USUARIO_ULTMODIFICACION AB6313S00USUARIOULTMODIFI,t6.ID_ESPECIALIDAD AB6315S00IDESPECIALIDAD,t6.DESC_CATEGORIA_ES AB6315S00DESCCATEGORIAES,t6.FECHA_MODIFICACION AB6315S00FECHAMODIFICACION,t6.NOM_USUARIO AB6315S00NOMUSUARIO,t6.BAJA AB6315S00BAJA,t6.DESC_CATEGORIA_EU AB6315S00DESCCATEGORIAEU,t6.FECHA_REGISTRO AB6315S00FECHAREGISTRO,t6.USUARIO_REGISTRO AB6315S00USUARIOREGISTRO,t6.FECHA_ULTMODIFICACION AB6315S00FECHAULTMODIFICACION,t6.USUARIO_ULTMODIFICACION AB6315S00USUARIOULTMODIFI,t7.ID_MODALIDAD AB6314S00IDMODALIDAD,t7.DESC_MODALIDAD_ES AB6314S00DESCMODALIDADES,t7.FECHA_MODIFICACION AB6314S00FECHAMODIFICACION,t7.NOM_USUARIO AB6314S00NOMUSUARIO,t7.BAJA AB6314S00BAJA,t7.DESC_MODALIDAD_EU AB6314S00DESCMODALIDADEU,t7.FECHA_REGISTRO AB6314S00FECHAREGISTRO,t7.USUARIO_REGISTRO AB6314S00USUARIOREGISTRO,t7.FECHA_ULTMODIFICACION AB6314S00FECHAULTMODIFICACION,t7.USUARIO_ULTMODIFICACION AB6314S00USUARIOULTMODIFI,t8.ID_ESTABLECIMIENTO AB6321S00IDESTABLECIMIENTO,t8.FECHA_ANO_CONSTRUCCION AB6321S00FECHAANOCONSTRUCCION,t8.FECHA_ANO_RENOVACION AB6321S00FECHAANORENOVACION,t8.DERECHO_COCINA AB6321S00DERECHOCOCINA,t8.SERVICIO_COMEDOR AB6321S00SERVICIOCOMEDOR,t8.NUM_SALONES AB6321S00NUMSALONES,t8.NUM_SALONES_COMEDOR AB6321S00NUMSALONESCOMEDOR,t8.NUM_COMEDORES AB6321S00NUMCOMEDORES,t8.NUM_BAÑOS_GENERALES AB6321S00NUMBAÑOSGENERALES,t8.NUM_CONJUNTOS AB6321S00NUMCONJUNTOS,t8.NUM_ESTUDIOS AB6321S00NUMESTUDIOS,t8.NUM_HAB_DOBLE AB6321S00NUMHABDOBLE,t8.NUM_HAB_INDIVIDUALES AB6321S00NUMHABINDIVIDUALES,t8.NUM_MAXIMO_SUPLETORIAS AB6321S00NUMMAXIMOSUPLETORIAS,t8.NUM_PLAZAS AB6321S00NUMPLAZAS,t8.EDIFICIO_CATALOGADO AB6321S00EDIFICIOCATALOGADO,t8.NUM_HAB_MAS_4 AB6321S00NUMHABMAS4,t8.NUM_HAB_MENOS_4 AB6321S00NUMHABMENOS4,t8.COMPARTE_VIVIENDAS AB6321S00COMPARTEVIVIENDAS,t8.NUM_HAB_DOBLE_CS AB6321S00NUMHABDOBLECS,t8.NUM_APARTAMENTOS AB6321S00NUMAPARTAMENTOS,t8.NUM_SUITES AB6321S00NUMSUITES,t8.COMPARTE_INSTAL AB6321S00COMPARTEINSTAL,t8.NUM_INSTAL_COMPARTE AB6321S00NUMINSTALCOMPARTE,t8.NUM_SUP_ACAMPADA AB6321S00NUMSUPACAMPADA,t8.BAR AB6321S00BAR,t8.RESTAURANTE AB6321S00RESTAURANTE,t8.PISCINA AB6321S00PISCINA,t8.NUM_TOT_PARCELAS AB6321S00NUMTOTPARCELAS,t8.NUM_PARCELAS_ANF AB6321S00NUMPARCELASANF,t8.NUM_PARCELAS_AF AB6321S00NUMPARCELASAF,t8.NUM_PARCELAS_SA AB6321S00NUMPARCELASSA,t8.INDICADOR_IA AB6321S00INDICADORIA,t8.FECHA_CONTROL_IA AB6321S00FECHACONTROLIA,t8.REQUISITOS AB6321S00REQUISITOS,t8.NUM_CONTROL AB6321S00NUMCONTROL,t8.FECHA_ANT_CONTROL AB6321S00FECHAANTCONTROL,t8.NUM_HABITACIONES AB6321S00NUMHABITACIONES,t8.NUM_RESIDENTES_PERM AB6321S00NUMRESIDENTESPERM,t8.SUP_TOT_HABITAC AB6321S00SUPTOTHABITAC,t8.SUP_RESTO_DEPEN AB6321S00SUPRESTODEPEN,t8.FECHA_REGISTRO AB6321S00FECHAREGISTRO,t8.USUARIO_REGISTRO AB6321S00USUARIOREGISTRO,t8.FECHA_ULTMODIFICACION AB6321S00FECHAULTMODIFICACION,t8.USUARIO_ULTMODIFICACION AB6321S00USUARIOULTMODIFI,t9.ID_ESTABLECIMIENTO AB6335S00IDESTABLECIMIENTO,t9.FRANQUICIA AB6335S00FRANQUICIA,t9.ID_FRANQUICIA AB6335S00IDFRANQUICIA,t9.INDONLINE AB6335S00INDONLINE,t9.ID_INSTAL_OFI_PRINCIPAL AB6335S00IDINSTALOFIPRINCIPAL,t9.ID_ORIGEN_OFI_PRINCIPAL AB6335S00IDORIGENOFIPRINCIPAL,t9.ID_TIPO_CIE AB6335S00IDTIPOCIE,t9.ETIQUETA_CIE AB6335S00ETIQUETACIE,t9.REGISTRO_FIANZA AB6335S00REGISTROFIANZA,t9.OBSERV_FIANZA AB6335S00OBSERVFIANZA,t9.OBSERV_SRC AB6335S00OBSERVSRC,t9.ID_PRIMERA_SUCURSAL AB6335S00IDPRIMERASUCURSAL,t9.NUM_CIE AB6335S00NUMCIE,t9.FECHA_REGISTRO AB6335S00FECHAREGISTRO,t9.USUARIO_REGISTRO AB6335S00USUARIOREGISTRO,t9.FECHA_ULTMODIFICACION AB6335S00FECHAULTMODIFICACION,t9.USUARIO_ULTMODIFICACION AB6335S00USUARIOULTMODIFI,t4.ID_TIPO_ESTABLECIMIENTO AB6312S00IDTIPOESTAB,t5.ID_TIPO_ESTABLECIMIENTO AB6313S00IDTIPOESTAB,t6.ID_TIPO_ESTABLECIMIENTO ab6315s00idtipoestab,t7.ID_TIPO_ESTABLECIMIENTO AB6314S00IDTIPOESTAB,t8.NUM_DORM_RESID NUMDORMRESID,t8.NUM_DORM_USUARIO NUMDORMUSUARIO, t8.SUPERFICIE_TOTAL SUPTOTAL ");
		// FROM
		query.append(
				"FROM AB6301S00 t1 ,AB6300S00 t2 ,AB6311S00 t3 ,AB6312S00 t4 ,AB6313S00 t5 ,AB6315S00 t6 ,AB6314S00 t7 ,AB6321S00 t8 ,AB6335S00 t9 ");

		// WHERE
		Map<String, Object> mapaWhere = this.getWhereLikeMap(filterab6301s00, startsWith);
		StringBuilder where = new StringBuilder(" WHERE 1=1 ");
		where.append(mapaWhere.get("query"));
		query.append(where);

		@SuppressWarnings("unchecked")
		List<Object> params = (List<Object>) mapaWhere.get("params");

		StringBuilder sbRemoveMultipleSQL = JQGridManager.getRemoveMultipleQuery(jqGridRequestDto,
				Establecimiento.class, query, params, "ID_ESTABLECIMIENTO");
		this.jdbcTemplate.update(sbRemoveMultipleSQL.toString(), params.toArray());
	}

	/**
	 * Filter in the hierarchical Ab6301s00 table.
	 *
	 * @param filterAb6301s00
	 *            Ab6301s00
	 * @param jqGridRequestDto
	 *            JQGridRequestDto
	 * @return List<JerarquiaDto<Ab6301s00>>
	 */
	@Override
	public List<JerarquiaDto<Establecimiento>> findAllLikeJerarquia(Establecimiento filterAb6301s00,
			JQGridRequestDto jqGridRequestDto) {
		// SELECT
		StringBuilder query = new StringBuilder(
				"SELECT t1.ID_ESTABLECIMIENTO IDESTABLECIMIENTO,t1.IDENTIFICADOR_ESTABLECIMIENTO IDENTIFICADORESTABLECIMIENTO,t1.DESC_NOMBRE DESCNOMBRE,t1.VISIBLEWEB VISIBLEWEB,t1.TEMPORADA TEMPORADA,t1.URLWEB URLWEB,t1.ID_DEFECTOS IDDEFECTOS,t1.NUM_UNIDADES_ALOJAMIENTO NUMUNIDADESALOJAMIENTO,t1.OBSERVACIONES OBSERVACIONES,t1.FECHA_APERTURA FECHAAPERTURA,t1.FECHA_BAJA FECHABAJA,t1.FECHA_INICIERRETEMP FECHAINICIERRETEMP,t1.FECHA_FINCIERRETEMP FECHAFINCIERRETEMP,t1.FECHA_VCTO_CIERRE FECHAVCTOCIERRE,t1.FECHA_ULT_NOTIFICACION FECHAULTNOTIFICACION,t1.FECHA_ULT_INSPECCION FECHAULTINSPECCION,t1.FECHA_PRO_INSPECCION FECHAPROINSPECCION,t1.FECHA_ULT_ACTUALIZACION FECHAULTACTUALIZACION,t1.FECHA_CLAUSURA FECHACLAUSURA,t1.FECHA_ULT_REFORMA FECHAULTREFORMA,t1.ELIMINADO ELIMINADO,t1.EXPEDIENTEB29 EXPEDIENTEB29,t1.ID_PORTAL_S41 IDPORTALS41,t1.URL_PORTAL_S41 URLPORTALS41,t1.FECHA_CONTROL_S41 FECHACONTROLS41,t1.NUM_INSTALACION_ANTERIOR NUMINSTALACIONANTERIOR,t1.FECHA_INSCRIPCION FECHAINSCRIPCION,t1.NUM_INSTALACION_WZ NUMINSTALACIONWZ,t1.OBSERVACIONES2 OBSERVACIONES2,t1.NOTAS_MIGRACION NOTASMIGRACION,t1.AGRUPACION AGRUPACION,t1.REF_CATASTRAL REFCATASTRAL,t1.OBS_SEGRESPCIVIL OBSSEGRESPCIVIL,t1.FECHA_REGISTRO FECHAREGISTRO,t1.USUARIO_REGISTRO USUARIOREGISTRO,t1.FECHA_ULTMODIFICACION FECHAULTMODIFICACION,t1.USUARIO_ULTMODIFICACION USUARIOULTMODIFICACION,t2.ID_RECURSO AB6300S00IDRECURSO,t2.TIPO_RECURSO AB6300S00TIPORECURSO,t2.DESC_NOMBRE AB6300S00DESCNOMBRE,t2.FECHA_BAJA AB6300S00FECHABAJA,t2.NUM_REGISTRO AB6300S00NUMREGISTRO,t2.FECHA_REGISTRO AB6300S00FECHAREGISTRO,t2.USUARIO_REGISTRO AB6300S00USUARIOREGISTRO,t2.FECHA_ULTMODIFICACION AB6300S00FECHAULTMODIFICACION,t2.USUARIO_ULTMODIFICACION AB6300S00USUARIOULTMODIFI,t3.ID_TIPO_ESTABLECIMIENTO AB6311S00IDTIPOESTABLECIMIENTO,t3.DESC_TIPO_ES AB6311S00DESCTIPOES,t3.FECHA_MODIFICACION AB6311S00FECHAMODIFICACION,t3.NOM_USUARIO AB6311S00NOMUSUARIO,t3.BAJA AB6311S00BAJA,t3.DESC_TIPO_EU AB6311S00DESCTIPOEU,t3.ORDENACION AB6311S00ORDENACION,t3.TIPIFICACION AB6311S00TIPIFICACION,t3.FECHA_REGISTRO AB6311S00FECHAREGISTRO,t3.USUARIO_REGISTRO AB6311S00USUARIOREGISTRO,t3.FECHA_ULTMODIFICACION AB6311S00FECHAULTMODIFICACION,t3.USUARIO_ULTMODIFICACION AB6311S00USUARIOULTMODIFI,t4.ID_GRUPO AB6312S00IDGRUPO,t4.DESC_GRUPO_ES AB6312S00DESCGRUPOES,t4.FECHA_MODIFICACION AB6312S00FECHAMODIFICACION,t4.NOM_USUARIO AB6312S00NOMUSUARIO,t4.BAJA AB6312S00BAJA,t4.DESC_GRUPO_EU AB6312S00DESCGRUPOEU,t4.FECHA_REGISTRO AB6312S00FECHAREGISTRO,t4.USUARIO_REGISTRO AB6312S00USUARIOREGISTRO,t4.FECHA_ULTMODIFICACION AB6312S00FECHAULTMODIFICACION,t4.USUARIO_ULTMODIFICACION AB6312S00USUARIOULTMODIFI,t5.ID_CATEGORIAS AB6313S00IDCATEGORIAS,t5.DESC_CATEGORIA_ES AB6313S00DESCCATEGORIAES,t5.FECHA_MODIFICACION AB6313S00FECHAMODIFICACION,t5.NOM_USUARIO AB6313S00NOMUSUARIO,t5.BAJA AB6313S00BAJA,t5.DESC_CATEGORIA_EU AB6313S00DESCCATEGORIAEU,t5.FECHA_REGISTRO AB6313S00FECHAREGISTRO,t5.USUARIO_REGISTRO AB6313S00USUARIOREGISTRO,t5.FECHA_ULTMODIFICACION AB6313S00FECHAULTMODIFICACION,t5.USUARIO_ULTMODIFICACION AB6313S00USUARIOULTMODIFI,t6.ID_ESPECIALIDAD AB6315S00IDESPECIALIDAD,t6.DESC_CATEGORIA_ES AB6315S00DESCCATEGORIAES,t6.FECHA_MODIFICACION AB6315S00FECHAMODIFICACION,t6.NOM_USUARIO AB6315S00NOMUSUARIO,t6.BAJA AB6315S00BAJA,t6.DESC_CATEGORIA_EU AB6315S00DESCCATEGORIAEU,t6.FECHA_REGISTRO AB6315S00FECHAREGISTRO,t6.USUARIO_REGISTRO AB6315S00USUARIOREGISTRO,t6.FECHA_ULTMODIFICACION AB6315S00FECHAULTMODIFICACION,t6.USUARIO_ULTMODIFICACION AB6315S00USUARIOULTMODIFI,t7.ID_MODALIDAD AB6314S00IDMODALIDAD,t7.DESC_MODALIDAD_ES AB6314S00DESCMODALIDADES,t7.FECHA_MODIFICACION AB6314S00FECHAMODIFICACION,t7.NOM_USUARIO AB6314S00NOMUSUARIO,t7.BAJA AB6314S00BAJA,t7.DESC_MODALIDAD_EU AB6314S00DESCMODALIDADEU,t7.FECHA_REGISTRO AB6314S00FECHAREGISTRO,t7.USUARIO_REGISTRO AB6314S00USUARIOREGISTRO,t7.FECHA_ULTMODIFICACION AB6314S00FECHAULTMODIFICACION,t7.USUARIO_ULTMODIFICACION AB6314S00USUARIOULTMODIFI,t8.ID_ESTABLECIMIENTO AB6321S00IDESTABLECIMIENTO,t8.FECHA_ANO_CONSTRUCCION AB6321S00FECHAANOCONSTRUCCION,t8.FECHA_ANO_RENOVACION AB6321S00FECHAANORENOVACION,t8.DERECHO_COCINA AB6321S00DERECHOCOCINA,t8.SERVICIO_COMEDOR AB6321S00SERVICIOCOMEDOR,t8.NUM_SALONES AB6321S00NUMSALONES,t8.NUM_SALONES_COMEDOR AB6321S00NUMSALONESCOMEDOR,t8.NUM_COMEDORES AB6321S00NUMCOMEDORES,t8.NUM_BAÑOS_GENERALES AB6321S00NUMBAÑOSGENERALES,t8.NUM_CONJUNTOS AB6321S00NUMCONJUNTOS,t8.NUM_ESTUDIOS AB6321S00NUMESTUDIOS,t8.NUM_HAB_DOBLE AB6321S00NUMHABDOBLE,t8.NUM_HAB_INDIVIDUALES AB6321S00NUMHABINDIVIDUALES,t8.NUM_MAXIMO_SUPLETORIAS AB6321S00NUMMAXIMOSUPLETORIAS,t8.NUM_PLAZAS AB6321S00NUMPLAZAS,t8.EDIFICIO_CATALOGADO AB6321S00EDIFICIOCATALOGADO,t8.NUM_HAB_MAS_4 AB6321S00NUMHABMAS4,t8.NUM_HAB_MENOS_4 AB6321S00NUMHABMENOS4,t8.COMPARTE_VIVIENDAS AB6321S00COMPARTEVIVIENDAS,t8.NUM_HAB_DOBLE_CS AB6321S00NUMHABDOBLECS,t8.NUM_APARTAMENTOS AB6321S00NUMAPARTAMENTOS,t8.NUM_SUITES AB6321S00NUMSUITES,t8.COMPARTE_INSTAL AB6321S00COMPARTEINSTAL,t8.NUM_INSTAL_COMPARTE AB6321S00NUMINSTALCOMPARTE,t8.NUM_SUP_ACAMPADA AB6321S00NUMSUPACAMPADA,t8.BAR AB6321S00BAR,t8.RESTAURANTE AB6321S00RESTAURANTE,t8.PISCINA AB6321S00PISCINA,t8.NUM_TOT_PARCELAS AB6321S00NUMTOTPARCELAS,t8.NUM_PARCELAS_ANF AB6321S00NUMPARCELASANF,t8.NUM_PARCELAS_AF AB6321S00NUMPARCELASAF,t8.NUM_PARCELAS_SA AB6321S00NUMPARCELASSA,t8.INDICADOR_IA AB6321S00INDICADORIA,t8.FECHA_CONTROL_IA AB6321S00FECHACONTROLIA,t8.REQUISITOS AB6321S00REQUISITOS,t8.NUM_CONTROL AB6321S00NUMCONTROL,t8.FECHA_ANT_CONTROL AB6321S00FECHAANTCONTROL,t8.NUM_HABITACIONES AB6321S00NUMHABITACIONES,t8.NUM_RESIDENTES_PERM AB6321S00NUMRESIDENTESPERM,t8.SUP_TOT_HABITAC AB6321S00SUPTOTHABITAC,t8.SUP_RESTO_DEPEN AB6321S00SUPRESTODEPEN,t8.FECHA_REGISTRO AB6321S00FECHAREGISTRO,t8.USUARIO_REGISTRO AB6321S00USUARIOREGISTRO,t8.FECHA_ULTMODIFICACION AB6321S00FECHAULTMODIFICACION,t8.USUARIO_ULTMODIFICACION AB6321S00USUARIOULTMODIFI,t9.ID_ESTABLECIMIENTO AB6335S00IDESTABLECIMIENTO,t9.FRANQUICIA AB6335S00FRANQUICIA,t9.ID_FRANQUICIA AB6335S00IDFRANQUICIA,t9.INDONLINE AB6335S00INDONLINE,t9.ID_INSTAL_OFI_PRINCIPAL AB6335S00IDINSTALOFIPRINCIPAL,t9.ID_ORIGEN_OFI_PRINCIPAL AB6335S00IDORIGENOFIPRINCIPAL,t9.ID_TIPO_CIE AB6335S00IDTIPOCIE,t9.ETIQUETA_CIE AB6335S00ETIQUETACIE,t9.REGISTRO_FIANZA AB6335S00REGISTROFIANZA,t9.OBSERV_FIANZA AB6335S00OBSERVFIANZA,t9.OBSERV_SRC AB6335S00OBSERVSRC,t9.ID_PRIMERA_SUCURSAL AB6335S00IDPRIMERASUCURSAL,t9.NUM_CIE AB6335S00NUMCIE,t9.FECHA_REGISTRO AB6335S00FECHAREGISTRO,t9.USUARIO_REGISTRO AB6335S00USUARIOREGISTRO,t9.FECHA_ULTMODIFICACION AB6335S00FECHAULTMODIFICACION,t9.USUARIO_ULTMODIFICACION AB6335S00USUARIOULTMODIFI,t4.ID_TIPO_ESTABLECIMIENTO AB6312S00IDTIPOESTAB,t5.ID_TIPO_ESTABLECIMIENTO AB6313S00IDTIPOESTAB,t6.ID_TIPO_ESTABLECIMIENTO ab6315s00idtipoestab,t7.ID_TIPO_ESTABLECIMIENTO AB6314S00IDTIPOESTAB,t10.ID_ESTABLECIMIENTO AB6339S00IDESTAB,t10.ID_TERCERO AB6339S00IDTERCERO,t11.DOCUMENTO NIFINTERESADO,t11.NOMBRE NOMBREINTERESADO,t11.EMAIL EMAILINTERESADO,t11.TELEFONO TELEFONOINTERESADO ");
		// FROM
		// StringBuilder from = new StringBuilder("FROM AB6301S00 t1 ,AB6300S00
		// t2 ,AB6311S00 t3 ,AB6312S00 t4 ,AB6313S00 t5 ,AB6315S00 t6 ,AB6314S00
		// t7 ,AB6321S00 t8 ,AB6335S00 t9 ");
		List<String> from = new ArrayList<String>();
		from.add("AB6301S00");
		from.add("AB6300S00");
		from.add("AB6311S00");
		from.add("AB6312S00");
		from.add("AB6313S00");
		from.add("AB6315S00");
		from.add("AB6314S00");
		from.add("AB6321S00");
		from.add("AB6335S00");
		from.add("AB6339S00");
		from.add("DATOS_TERCERO");
		// TABLAS_ALIAS
		List<String> from_alias = new ArrayList<String>();
		from_alias.add(" t1 ");
		from_alias.add(" t2 ");
		from_alias.add(" t3 ");
		from_alias.add(" t4 ");
		from_alias.add(" t5 ");
		from_alias.add(" t6 ");
		from_alias.add(" t7 ");
		from_alias.add(" t8 ");
		from_alias.add(" t9 ");
		from_alias.add(" t10 ");
		from_alias.add(" t11 ");

		// JOINS TABLAS
		/*
		 * Ejemplo de como indicar joins entre las tablas de la query
		 */
		/*
		 * StringBuilder joins = new StringBuilder("");
		 * joins.append("AND T1.ID=T2.ID_T1");
		 */

		// CONDICIONES (negocio)
		/*
		 * Ejemplo de como incluir condiciones de negocio en la consulta de la
		 * jerarquÃ­a
		 */
		/*
		 * StringBuilder businessFilters = new StringBuilder(); List<Object>
		 * businessParams = new ArrayList<Object>();
		 * businessFilters.append("   AND t1.EJIE = ?  ");
		 * businessParams.add("1");
		 */

		// FILTRO
		Map<String, ?> mapaWhere = this.getWhereLikeMap(filterAb6301s00, false);

		// JERARQUIA
		// Especificar la columna padre correspondiente en lugar de la generada
		// por defecto (ID_PADRE)
		query = JQGridManagerJerarquia.getQuery(jqGridRequestDto, query, mapaWhere, "ID_ESTABLECIMIENTO", "ID_PADRE",
				"NOMBRE", from, from_alias);

		/*
		 * Ejemplo de llamada en caso de indicar joins entre tablas y
		 * condiciones de negocio
		 */
		// query = JQGridManagerJerarquia.getQuery(jqGridRequestDto, query,
		// mapaWhere, "ID", "ID_PADRE", "NOMBRE", from, from_alias, joins,
		// businessFilters, businessParams);

		// PAGINACION
		if (jqGridRequestDto != null) {
			query = JQGridManagerJerarquia.getPaginationQuery(jqGridRequestDto, query,
					EstablecimientoDaoImpl.ORDER_BY_WHITE_LIST);
		}

		List<?> params = (List<?>) mapaWhere.get("params");
		return this.jdbcTemplate.query(query.toString(), this.rwMapJerarquia, params.toArray());
	}

	/**
	 * Count rows in hierarchy
	 *
	 * @param filterAb6301s00
	 *            Ab6301s00
	 * @param jqGridRequestDto
	 *            JQGridRequestDto
	 * @return Long
	 */
	@Override
	public Long findAllLikeCountJerarquia(Establecimiento filterAb6301s00, JQGridRequestDto jqGridRequestDto) {
		// FROM
		// StringBuilder from = new StringBuilder("FROM AB6301S00 t1 ,AB6300S00
		// t2 ,AB6311S00 t3 ,AB6312S00 t4 ,AB6313S00 t5 ,AB6315S00 t6 ,AB6314S00
		// t7 ,AB6321S00 t8 ,AB6335S00 t9 ");
		List<String> from = new ArrayList<String>();
		from.add("AB6301S00");
		from.add("AB6300S00");
		from.add("AB6311S00");
		from.add("AB6312S00");
		from.add("AB6313S00");
		from.add("AB6315S00");
		from.add("AB6314S00");
		from.add("AB6321S00");
		from.add("AB6335S00");

		// TABLAS_ALIAS
		List<String> from_alias = new ArrayList<String>();
		from_alias.add(" t1 ");
		from_alias.add(" t2 ");
		from_alias.add(" t3 ");
		from_alias.add(" t4 ");
		from_alias.add(" t5 ");
		from_alias.add(" t6 ");
		from_alias.add(" t7 ");
		from_alias.add(" t8 ");
		from_alias.add(" t9 ");

		// JOINS TABLAS
		/*
		 * Ejemplo de como indicar joins entre las tablas de la query
		 */
		/*
		 * StringBuilder joins = new StringBuilder("");
		 * joins.append("AND T1.ID=T2.ID_T1");
		 */

		// CONDICIONES (negocio)
		/*
		 * Ejemplo de como incluir condiciones de negocio en la consulta de la
		 * jerarquÃ­a
		 */
		/*
		 * StringBuilder businessFilters = new StringBuilder(); List<Object>
		 * businessParams = new ArrayList<Object>();
		 * businessFilters.append("   AND t1.EJIE = ?  ");
		 * businessParams.add("1");
		 */

		// FILTRO
		Map<String, ?> mapaWhere = this.getWhereLikeMap(filterAb6301s00, false);

		// JERARQUIA
		// Especificar la columna padre correspondiente en lugar de la generada
		// por defecto (ID_PADRE)
		StringBuilder query = JQGridManagerJerarquia.getQueryCount(jqGridRequestDto, mapaWhere, "ID_ESTABLECIMIENTO",
				"ID_PADRE", from, from_alias);

		/*
		 * Ejemplo de llamada en caso de indicar joins entre tablas y
		 * condiciones de negocio
		 */
		// StringBuilder query =
		// JQGridManagerJerarquia.getQueryCount(jqGridRequestDto, mapaWhere,
		// "ID", "ID_PADRE", from, from_alias, joins, businessFilters,
		// businessParams);

		List<?> params = (List<?>) mapaWhere.get("params");
		return this.jdbcTemplate.queryForObject(query.toString(), Long.class, params.toArray());
	}

	/**
	 * Find dependent hierarchical rows
	 *
	 * @param filterAb6301s00
	 *            Ab6301s00
	 * @param jqGridRequestDto
	 *            JQGridRequestDto
	 * @return List<TableRowDto<Ab6301s00>>
	 */
	@Override
	public List<TableRowDto<Establecimiento>> findAllChild(Establecimiento filterAb6301s00,
			JQGridRequestDto jqGridRequestDto) {

		// FROM
		// StringBuilder from = new StringBuilder("FROM AB6301S00 t1 ,AB6300S00
		// t2 ,AB6311S00 t3 ,AB6312S00 t4 ,AB6313S00 t5 ,AB6315S00 t6 ,AB6314S00
		// t7 ,AB6321S00 t8 ,AB6335S00 t9 ");
		List<String> from = new ArrayList<String>();
		from.add("AB6301S00");
		from.add("AB6300S00");
		from.add("AB6311S00");
		from.add("AB6312S00");
		from.add("AB6313S00");
		from.add("AB6315S00");
		from.add("AB6314S00");
		from.add("AB6321S00");
		from.add("AB6335S00");

		// TABLAS_ALIAS
		List<String> from_alias = new ArrayList<String>();
		from_alias.add(" t1 ");
		from_alias.add(" t2 ");
		from_alias.add(" t3 ");
		from_alias.add(" t4 ");
		from_alias.add(" t5 ");
		from_alias.add(" t6 ");
		from_alias.add(" t7 ");
		from_alias.add(" t8 ");
		from_alias.add(" t9 ");

		// JOINS TABLAS
		/*
		 * Ejemplo de como indicar joins entre las tablas de la query
		 */
		/*
		 * StringBuilder joins = new StringBuilder("");
		 * joins.append("AND T1.ID=T2.ID_T1");
		 */

		// CONDICIONES (negocio)
		/*
		 * Ejemplo de como incluir condiciones de negocio en la consulta de la
		 * jerarquÃ­a
		 */
		/*
		 * StringBuilder businessFilters = new StringBuilder(); List<Object>
		 * businessParams = new ArrayList<Object>();
		 * businessFilters.append("   AND t1.EJIE = ?  ");
		 * businessParams.add("1");
		 */

		// FILTRO
		Map<String, ?> mapaWhere = this.getWhereLikeMap(filterAb6301s00, false);

		// MULTISELECCION
		// Especificar la columna padre correspondiente en lugar de la generada
		// por defecto (ID_PADRE)
		StringBuilder query = JQGridManagerJerarquia.getQueryChildren(jqGridRequestDto, mapaWhere, "ID_ESTABLECIMIENTO",
				"ID_PADRE", from, from_alias);

		/*
		 * Ejemplo de llamada en caso de indicar joins entre tablas y
		 * condiciones de negocio
		 */
		// StringBuilder query =
		// JQGridManagerJerarquia.getQueryChildren(jqGridRequestDto, mapaWhere,
		// "ID", "ID_PADRE", from, from_alias, joins, businessFilters,
		// businessParams);

		List<?> params = (List<?>) mapaWhere.get("params");

		return this.jdbcTemplate.query(query.toString(),
				new RowNumResultSetExtractor<Establecimiento>(this.rwMapPK, "ID_ESTABLECIMIENTO"), params.toArray());
	}

	/*
	 * MÃ‰TODOS PRIVADOS
	 */

	/**
	 * Returns a map with the needed value to create the conditions to filter by
	 * the Ab6301s00 entity
	 *
	 * @param ab6301s00
	 *            Ab6301s00 Bean with the criteria values to filter by.
	 * @return Map created with two keys key query stores the sql query syntax
	 *         key params stores the parameter values to be used in the
	 *         condition sentence.
	 */
	// CHECKSTYLE:OFF CyclomaticComplexity - GeneraciÃ³n de cÃ³digo de UDA
	private Map<String, ?> getWhereMap(Establecimiento ab6301s00) {

		StringBuilder where = new StringBuilder(EstablecimientoDaoImpl.STRING_BUILDER_INIT);
		List<Object> params = new ArrayList<Object>();

		if (ab6301s00 != null && ab6301s00.getIdEstablecimiento() != null) {
			where.append(" AND t1.ID_ESTABLECIMIENTO = ?");
			params.add(ab6301s00.getIdEstablecimiento());
		}
		if (ab6301s00 != null && ab6301s00.getRecurso() != null && ab6301s00.getRecurso().getIdRecurso() != null) {
			where.append(" AND t2.ID_RECURSO = ?");
			params.add(ab6301s00.getRecurso().getIdRecurso());
		}
		if (ab6301s00 != null && ab6301s00.getRecurso() != null && ab6301s00.getRecurso().getTipoRecurso() != null) {
			where.append(" AND t2.TIPO_RECURSO = ?");
			params.add(ab6301s00.getRecurso().getTipoRecurso());
		}
		if (ab6301s00 != null && ab6301s00.getTipoRegistro() != null) {
			where.append(" AND t1.TIPO_REGISTRO = ?");
			params.add(ab6301s00.getTipoRegistro());
		}
		if (ab6301s00 != null && ab6301s00.getRecurso() != null && ab6301s00.getRecurso().getDescNombre() != null) {
			where.append(" AND t2.DESC_NOMBRE = ?");
			params.add(ab6301s00.getRecurso().getDescNombre());
		}
		if (ab6301s00 != null && ab6301s00.getRecurso() != null && ab6301s00.getRecurso().getFechaBaja() != null) {
			where.append(" AND t2.FECHA_BAJA = ?");
			params.add(ab6301s00.getRecurso().getFechaBaja());
		}
		if (ab6301s00 != null && ab6301s00.getRecurso() != null && ab6301s00.getRecurso().getNumRegistro() != null) {
			where.append(" AND t2.NUM_REGISTRO = ?");
			params.add(ab6301s00.getRecurso().getNumRegistro());
		}
		if (ab6301s00 != null && ab6301s00.getRecurso() != null && ab6301s00.getRecurso().getFechaRegistro() != null) {
			where.append(" AND t2.FECHA_REGISTRO = ?");
			params.add(ab6301s00.getRecurso().getFechaRegistro());
		}
		if (ab6301s00 != null && ab6301s00.getRecurso() != null
				&& ab6301s00.getRecurso().getUsuarioRegistro() != null) {
			where.append(" AND t2.USUARIO_REGISTRO = ?");
			params.add(ab6301s00.getRecurso().getUsuarioRegistro());
		}
		if (ab6301s00 != null && ab6301s00.getRecurso() != null
				&& ab6301s00.getRecurso().getFechaUltmodificacion() != null) {
			where.append(" AND t2.FECHA_ULTMODIFICACION = ?");
			params.add(ab6301s00.getRecurso().getFechaUltmodificacion());
		}
		if (ab6301s00 != null && ab6301s00.getRecurso() != null
				&& ab6301s00.getRecurso().getUsuarioUltmodificacion() != null) {
			where.append(" AND t2.USUARIO_ULTMODIFICACION = ?");
			params.add(ab6301s00.getRecurso().getUsuarioUltmodificacion());
		}
		if (ab6301s00 != null && ab6301s00.getTipoEstablecimiento() != null
				&& ab6301s00.getTipoEstablecimiento().getIdTipoEstablecimiento() != null) {
			where.append(" AND t3.ID_TIPO_ESTABLECIMIENTO = ?");
			params.add(ab6301s00.getTipoEstablecimiento().getIdTipoEstablecimiento());
		}
		if (ab6301s00 != null && ab6301s00.getTipoEstablecimiento() != null
				&& ab6301s00.getTipoEstablecimiento().getDescTipoEs() != null) {
			where.append(" AND t3.DESC_TIPO_ES = ?");
			params.add(ab6301s00.getTipoEstablecimiento().getDescTipoEs());
		}
		if (ab6301s00 != null && ab6301s00.getTipoEstablecimiento() != null
				&& ab6301s00.getTipoEstablecimiento().getFechaModificacion() != null) {
			where.append(" AND t3.FECHA_MODIFICACION = ?");
			params.add(ab6301s00.getTipoEstablecimiento().getFechaModificacion());
		}
		if (ab6301s00 != null && ab6301s00.getTipoEstablecimiento() != null
				&& ab6301s00.getTipoEstablecimiento().getNomUsuario() != null) {
			where.append(" AND t3.NOM_USUARIO = ?");
			params.add(ab6301s00.getTipoEstablecimiento().getNomUsuario());
		}
		if (ab6301s00 != null && ab6301s00.getTipoEstablecimiento() != null
				&& ab6301s00.getTipoEstablecimiento().getBaja() != null) {
			where.append(" AND t3.BAJA = ?");
			params.add(ab6301s00.getTipoEstablecimiento().getBaja());
		}
		if (ab6301s00 != null && ab6301s00.getTipoEstablecimiento() != null
				&& ab6301s00.getTipoEstablecimiento().getDescTipoEu() != null) {
			where.append(" AND t3.DESC_TIPO_EU = ?");
			params.add(ab6301s00.getTipoEstablecimiento().getDescTipoEu());
		}
		if (ab6301s00 != null && ab6301s00.getTipoEstablecimiento() != null
				&& ab6301s00.getTipoEstablecimiento().getOrdenacion() != null) {
			where.append(" AND t3.ORDENACION = ?");
			params.add(ab6301s00.getTipoEstablecimiento().getOrdenacion());
		}
		if (ab6301s00 != null && ab6301s00.getTipoEstablecimiento() != null
				&& ab6301s00.getTipoEstablecimiento().getTipificacion() != null) {
			where.append(" AND t3.TIPIFICACION = ?");
			params.add(ab6301s00.getTipoEstablecimiento().getTipificacion());
		}
		if (ab6301s00 != null && ab6301s00.getTipoEstablecimiento() != null
				&& ab6301s00.getTipoEstablecimiento().getFechaRegistro() != null) {
			where.append(" AND t3.FECHA_REGISTRO = ?");
			params.add(ab6301s00.getTipoEstablecimiento().getFechaRegistro());
		}
		if (ab6301s00 != null && ab6301s00.getTipoEstablecimiento() != null
				&& ab6301s00.getTipoEstablecimiento().getUsuarioRegistro() != null) {
			where.append(" AND t3.USUARIO_REGISTRO = ?");
			params.add(ab6301s00.getTipoEstablecimiento().getUsuarioRegistro());
		}
		if (ab6301s00 != null && ab6301s00.getTipoEstablecimiento() != null
				&& ab6301s00.getTipoEstablecimiento().getFechaUltmodificacion() != null) {
			where.append(" AND t3.FECHA_ULTMODIFICACION = ?");
			params.add(ab6301s00.getTipoEstablecimiento().getFechaUltmodificacion());
		}
		if (ab6301s00 != null && ab6301s00.getTipoEstablecimiento() != null
				&& ab6301s00.getTipoEstablecimiento().getUsuarioUltmodificacion() != null) {
			where.append(" AND t3.USUARIO_ULTMODIFICACION = ?");
			params.add(ab6301s00.getTipoEstablecimiento().getUsuarioUltmodificacion());
		}
		if (ab6301s00 != null && ab6301s00.getGrupo() != null && ab6301s00.getGrupo().getIdGrupo() != null) {
			where.append(" AND t4.ID_GRUPO = ?");
			params.add(ab6301s00.getGrupo().getIdGrupo());
		}
		if (ab6301s00 != null && ab6301s00.getGrupo() != null && ab6301s00.getGrupo().getTipoEstablecimiento() != null
				&& ab6301s00.getGrupo().getTipoEstablecimiento().getIdTipoEstablecimiento() != null) {
			where.append(" AND t4.ID_TIPO_ESTABLECIMIENTO = ?");
			params.add(ab6301s00.getGrupo().getTipoEstablecimiento().getIdTipoEstablecimiento());
		}
		if (ab6301s00 != null && ab6301s00.getGrupo() != null && ab6301s00.getGrupo().getDescGrupoEs() != null) {
			where.append(" AND t4.DESC_GRUPO_ES = ?");
			params.add(ab6301s00.getGrupo().getDescGrupoEs());
		}
		if (ab6301s00 != null && ab6301s00.getGrupo() != null && ab6301s00.getGrupo().getFechaModificacion() != null) {
			where.append(" AND t4.FECHA_MODIFICACION = ?");
			params.add(ab6301s00.getGrupo().getFechaModificacion());
		}
		if (ab6301s00 != null && ab6301s00.getGrupo() != null && ab6301s00.getGrupo().getNomUsuario() != null) {
			where.append(" AND t4.NOM_USUARIO = ?");
			params.add(ab6301s00.getGrupo().getNomUsuario());
		}
		if (ab6301s00 != null && ab6301s00.getGrupo() != null && ab6301s00.getGrupo().getBaja() != null) {
			where.append(" AND t4.BAJA = ?");
			params.add(ab6301s00.getGrupo().getBaja());
		}
		if (ab6301s00 != null && ab6301s00.getGrupo() != null && ab6301s00.getGrupo().getDescGrupoEu() != null) {
			where.append(" AND t4.DESC_GRUPO_EU = ?");
			params.add(ab6301s00.getGrupo().getDescGrupoEu());
		}
		if (ab6301s00 != null && ab6301s00.getGrupo() != null && ab6301s00.getGrupo().getFechaRegistro() != null) {
			where.append(" AND t4.FECHA_REGISTRO = ?");
			params.add(ab6301s00.getGrupo().getFechaRegistro());
		}
		if (ab6301s00 != null && ab6301s00.getGrupo() != null && ab6301s00.getGrupo().getUsuarioRegistro() != null) {
			where.append(" AND t4.USUARIO_REGISTRO = ?");
			params.add(ab6301s00.getGrupo().getUsuarioRegistro());
		}
		if (ab6301s00 != null && ab6301s00.getGrupo() != null
				&& ab6301s00.getGrupo().getFechaUltmodificacion() != null) {
			where.append(" AND t4.FECHA_ULTMODIFICACION = ?");
			params.add(ab6301s00.getGrupo().getFechaUltmodificacion());
		}
		if (ab6301s00 != null && ab6301s00.getGrupo() != null
				&& ab6301s00.getGrupo().getUsuarioUltmodificacion() != null) {
			where.append(" AND t4.USUARIO_ULTMODIFICACION = ?");
			params.add(ab6301s00.getGrupo().getUsuarioUltmodificacion());
		}
		if (ab6301s00 != null && ab6301s00.getCategoria() != null
				&& ab6301s00.getCategoria().getIdCategorias() != null) {
			where.append(" AND t5.ID_CATEGORIAS = ?");
			params.add(ab6301s00.getCategoria().getIdCategorias());
		}
		if (ab6301s00 != null && ab6301s00.getCategoria() != null
				&& ab6301s00.getCategoria().getTipoEstablecimiento() != null
				&& ab6301s00.getCategoria().getTipoEstablecimiento().getIdTipoEstablecimiento() != null) {
			where.append(" AND t5.ID_TIPO_ESTABLECIMIENTO = ?");
			params.add(ab6301s00.getCategoria().getTipoEstablecimiento().getIdTipoEstablecimiento());
		}
		if (ab6301s00 != null && ab6301s00.getCategoria() != null
				&& ab6301s00.getCategoria().getDescCategoriaEs() != null) {
			where.append(" AND t5.DESC_CATEGORIA_ES = ?");
			params.add(ab6301s00.getCategoria().getDescCategoriaEs());
		}
		if (ab6301s00 != null && ab6301s00.getCategoria() != null
				&& ab6301s00.getCategoria().getFechaModificacion() != null) {
			where.append(" AND t5.FECHA_MODIFICACION = ?");
			params.add(ab6301s00.getCategoria().getFechaModificacion());
		}
		if (ab6301s00 != null && ab6301s00.getCategoria() != null && ab6301s00.getCategoria().getNomUsuario() != null) {
			where.append(" AND t5.NOM_USUARIO = ?");
			params.add(ab6301s00.getCategoria().getNomUsuario());
		}
		if (ab6301s00 != null && ab6301s00.getCategoria() != null && ab6301s00.getCategoria().getBaja() != null) {
			where.append(" AND t5.BAJA = ?");
			params.add(ab6301s00.getCategoria().getBaja());
		}
		if (ab6301s00 != null && ab6301s00.getCategoria() != null
				&& ab6301s00.getCategoria().getDescCategoriaEu() != null) {
			where.append(" AND t5.DESC_CATEGORIA_EU = ?");
			params.add(ab6301s00.getCategoria().getDescCategoriaEu());
		}
		if (ab6301s00 != null && ab6301s00.getCategoria() != null
				&& ab6301s00.getCategoria().getFechaRegistro() != null) {
			where.append(" AND t5.FECHA_REGISTRO = ?");
			params.add(ab6301s00.getCategoria().getFechaRegistro());
		}
		if (ab6301s00 != null && ab6301s00.getCategoria() != null
				&& ab6301s00.getCategoria().getUsuarioRegistro() != null) {
			where.append(" AND t5.USUARIO_REGISTRO = ?");
			params.add(ab6301s00.getCategoria().getUsuarioRegistro());
		}
		if (ab6301s00 != null && ab6301s00.getCategoria() != null
				&& ab6301s00.getCategoria().getFechaUltmodificacion() != null) {
			where.append(" AND t5.FECHA_ULTMODIFICACION = ?");
			params.add(ab6301s00.getCategoria().getFechaUltmodificacion());
		}
		if (ab6301s00 != null && ab6301s00.getCategoria() != null
				&& ab6301s00.getCategoria().getUsuarioUltmodificacion() != null) {
			where.append(" AND t5.USUARIO_ULTMODIFICACION = ?");
			params.add(ab6301s00.getCategoria().getUsuarioUltmodificacion());
		}
		if (ab6301s00 != null && ab6301s00.getEspecialidad() != null
				&& ab6301s00.getEspecialidad().getIdEspecialidad() != null) {
			where.append(" AND t6.ID_ESPECIALIDAD = ?");
			params.add(ab6301s00.getEspecialidad().getIdEspecialidad());
		}
		if (ab6301s00 != null && ab6301s00.getEspecialidad() != null
				&& ab6301s00.getEspecialidad().getTipoEstablecimiento() != null
				&& ab6301s00.getEspecialidad().getTipoEstablecimiento().getIdTipoEstablecimiento() != null) {
			where.append(" AND t6.ID_TIPO_ESTABLECIMIENTO = ?");
			params.add(ab6301s00.getEspecialidad().getTipoEstablecimiento().getIdTipoEstablecimiento());
		}
		if (ab6301s00 != null && ab6301s00.getEspecialidad() != null
				&& ab6301s00.getEspecialidad().getDescCategoriaEs() != null) {
			where.append(" AND t6.DESC_CATEGORIA_ES = ?");
			params.add(ab6301s00.getEspecialidad().getDescCategoriaEs());
		}
		if (ab6301s00 != null && ab6301s00.getEspecialidad() != null
				&& ab6301s00.getEspecialidad().getFechaModificacion() != null) {
			where.append(" AND t6.FECHA_MODIFICACION = ?");
			params.add(ab6301s00.getEspecialidad().getFechaModificacion());
		}
		if (ab6301s00 != null && ab6301s00.getEspecialidad() != null
				&& ab6301s00.getEspecialidad().getNomUsuario() != null) {
			where.append(" AND t6.NOM_USUARIO = ?");
			params.add(ab6301s00.getEspecialidad().getNomUsuario());
		}
		if (ab6301s00 != null && ab6301s00.getEspecialidad() != null && ab6301s00.getEspecialidad().getBaja() != null) {
			where.append(" AND t6.BAJA = ?");
			params.add(ab6301s00.getEspecialidad().getBaja());
		}
		if (ab6301s00 != null && ab6301s00.getEspecialidad() != null
				&& ab6301s00.getEspecialidad().getDescCategoriaEu() != null) {
			where.append(" AND t6.DESC_CATEGORIA_EU = ?");
			params.add(ab6301s00.getEspecialidad().getDescCategoriaEu());
		}
		if (ab6301s00 != null && ab6301s00.getEspecialidad() != null
				&& ab6301s00.getEspecialidad().getFechaRegistro() != null) {
			where.append(" AND t6.FECHA_REGISTRO = ?");
			params.add(ab6301s00.getEspecialidad().getFechaRegistro());
		}
		if (ab6301s00 != null && ab6301s00.getEspecialidad() != null
				&& ab6301s00.getEspecialidad().getUsuarioRegistro() != null) {
			where.append(" AND t6.USUARIO_REGISTRO = ?");
			params.add(ab6301s00.getEspecialidad().getUsuarioRegistro());
		}
		if (ab6301s00 != null && ab6301s00.getEspecialidad() != null
				&& ab6301s00.getEspecialidad().getFechaUltmodificacion() != null) {
			where.append(" AND t6.FECHA_ULTMODIFICACION = ?");
			params.add(ab6301s00.getEspecialidad().getFechaUltmodificacion());
		}
		if (ab6301s00 != null && ab6301s00.getEspecialidad() != null
				&& ab6301s00.getEspecialidad().getUsuarioUltmodificacion() != null) {
			where.append(" AND t6.USUARIO_ULTMODIFICACION = ?");
			params.add(ab6301s00.getEspecialidad().getUsuarioUltmodificacion());
		}
		if (ab6301s00 != null && ab6301s00.getModalidad() != null
				&& ab6301s00.getModalidad().getIdModalidad() != null) {
			where.append(" AND t7.ID_MODALIDAD = ?");
			params.add(ab6301s00.getModalidad().getIdModalidad());
		}
		if (ab6301s00 != null && ab6301s00.getModalidad() != null
				&& ab6301s00.getModalidad().getTipoEstablecimiento() != null
				&& ab6301s00.getModalidad().getTipoEstablecimiento().getIdTipoEstablecimiento() != null) {
			where.append(" AND t7.ID_TIPO_ESTABLECIMIENTO = ?");
			params.add(ab6301s00.getModalidad().getTipoEstablecimiento().getIdTipoEstablecimiento());
		}
		if (ab6301s00 != null && ab6301s00.getModalidad() != null
				&& ab6301s00.getModalidad().getDescModalidadEs() != null) {
			where.append(" AND t7.DESC_MODALIDAD_ES = ?");
			params.add(ab6301s00.getModalidad().getDescModalidadEs());
		}
		if (ab6301s00 != null && ab6301s00.getModalidad() != null
				&& ab6301s00.getModalidad().getFechaModificacion() != null) {
			where.append(" AND t7.FECHA_MODIFICACION = ?");
			params.add(ab6301s00.getModalidad().getFechaModificacion());
		}
		if (ab6301s00 != null && ab6301s00.getModalidad() != null && ab6301s00.getModalidad().getNomUsuario() != null) {
			where.append(" AND t7.NOM_USUARIO = ?");
			params.add(ab6301s00.getModalidad().getNomUsuario());
		}
		if (ab6301s00 != null && ab6301s00.getModalidad() != null && ab6301s00.getModalidad().getBaja() != null) {
			where.append(" AND t7.BAJA = ?");
			params.add(ab6301s00.getModalidad().getBaja());
		}
		if (ab6301s00 != null && ab6301s00.getModalidad() != null
				&& ab6301s00.getModalidad().getDescModalidadEu() != null) {
			where.append(" AND t7.DESC_MODALIDAD_EU = ?");
			params.add(ab6301s00.getModalidad().getDescModalidadEu());
		}
		if (ab6301s00 != null && ab6301s00.getModalidad() != null
				&& ab6301s00.getModalidad().getFechaRegistro() != null) {
			where.append(" AND t7.FECHA_REGISTRO = ?");
			params.add(ab6301s00.getModalidad().getFechaRegistro());
		}
		if (ab6301s00 != null && ab6301s00.getModalidad() != null
				&& ab6301s00.getModalidad().getUsuarioRegistro() != null) {
			where.append(" AND t7.USUARIO_REGISTRO = ?");
			params.add(ab6301s00.getModalidad().getUsuarioRegistro());
		}
		if (ab6301s00 != null && ab6301s00.getModalidad() != null
				&& ab6301s00.getModalidad().getFechaUltmodificacion() != null) {
			where.append(" AND t7.FECHA_ULTMODIFICACION = ?");
			params.add(ab6301s00.getModalidad().getFechaUltmodificacion());
		}
		if (ab6301s00 != null && ab6301s00.getModalidad() != null
				&& ab6301s00.getModalidad().getUsuarioUltmodificacion() != null) {
			where.append(" AND t7.USUARIO_ULTMODIFICACION = ?");
			params.add(ab6301s00.getModalidad().getUsuarioUltmodificacion());
		}
		if (ab6301s00 != null && ab6301s00.getIdentificadorEstablecimiento() != null) {
			where.append(" AND t1.IDENTIFICADOR_ESTABLECIMIENTO = ?");
			params.add(ab6301s00.getIdentificadorEstablecimiento());
		}
		if (ab6301s00 != null && ab6301s00.getDescrNombre() != null) {
			where.append(" AND t1.DESC_NOMBRE = ?");
			params.add(ab6301s00.getDescrNombre());
		}
		if (ab6301s00 != null && ab6301s00.getVisibleweb() != null) {
			where.append(" AND t1.VISIBLEWEB = ?");
			params.add(ab6301s00.getVisibleweb());
		}
		if (ab6301s00 != null && ab6301s00.getTemporada() != null) {
			where.append(" AND t1.TEMPORADA = ?");
			params.add(ab6301s00.getTemporada());
		}
		if (ab6301s00 != null && ab6301s00.getUrlweb() != null) {
			where.append(" AND t1.URLWEB = ?");
			params.add(ab6301s00.getUrlweb());
		}
		if (ab6301s00 != null && ab6301s00.getIdDefectos() != null) {
			where.append(" AND t1.ID_DEFECTOS = ?");
			params.add(ab6301s00.getIdDefectos());
		}
		if (ab6301s00 != null && ab6301s00.getNumUnidadesAlojamiento() != null) {
			where.append(" AND t1.NUM_UNIDADES_ALOJAMIENTO = ?");
			params.add(ab6301s00.getNumUnidadesAlojamiento());
		}
		if (ab6301s00 != null && ab6301s00.getObservaciones() != null) {
			where.append(" AND t1.OBSERVACIONES = ?");
			params.add(ab6301s00.getObservaciones());
		}
		if (ab6301s00 != null && ab6301s00.getFechaApertura() != null) {
			where.append(" AND t1.FECHA_APERTURA = ?");
			params.add(ab6301s00.getFechaApertura());
		}
		if (ab6301s00 != null && ab6301s00.getFechaBaja() != null) {
			where.append(" AND t1.FECHA_BAJA = ?");
			params.add(ab6301s00.getFechaBaja());
		}
		if (ab6301s00 != null && ab6301s00.getFechaInicierretemp() != null) {
			where.append(" AND t1.FECHA_INICIERRETEMP = ?");
			params.add(ab6301s00.getFechaInicierretemp());
		}
		if (ab6301s00 != null && ab6301s00.getFechaFincierretemp() != null) {
			where.append(" AND t1.FECHA_FINCIERRETEMP = ?");
			params.add(ab6301s00.getFechaFincierretemp());
		}
		if (ab6301s00 != null && ab6301s00.getFechaVctoCierre() != null) {
			where.append(" AND t1.FECHA_VCTO_CIERRE = ?");
			params.add(ab6301s00.getFechaVctoCierre());
		}
		if (ab6301s00 != null && ab6301s00.getFechaUltNotificacion() != null) {
			where.append(" AND t1.FECHA_ULT_NOTIFICACION = ?");
			params.add(ab6301s00.getFechaUltNotificacion());
		}
		if (ab6301s00 != null && ab6301s00.getFechaUltInspeccion() != null) {
			where.append(" AND t1.FECHA_ULT_INSPECCION = ?");
			params.add(ab6301s00.getFechaUltInspeccion());
		}
		if (ab6301s00 != null && ab6301s00.getFechaProInspeccion() != null) {
			where.append(" AND t1.FECHA_PRO_INSPECCION = ?");
			params.add(ab6301s00.getFechaProInspeccion());
		}
		if (ab6301s00 != null && ab6301s00.getFechaUltActualizacion() != null) {
			where.append(" AND t1.FECHA_ULT_ACTUALIZACION = ?");
			params.add(ab6301s00.getFechaUltActualizacion());
		}
		if (ab6301s00 != null && ab6301s00.getFechaClausura() != null) {
			where.append(" AND t1.FECHA_CLAUSURA = ?");
			params.add(ab6301s00.getFechaClausura());
		}
		if (ab6301s00 != null && ab6301s00.getFechaUltReforma() != null) {
			where.append(" AND t1.FECHA_ULT_REFORMA = ?");
			params.add(ab6301s00.getFechaUltReforma());
		}
		if (ab6301s00 != null && ab6301s00.getEliminado() != null) {
			where.append(" AND t1.ELIMINADO = ?");
			params.add(ab6301s00.getEliminado());
		}
		if (ab6301s00 != null && ab6301s00.getExpedienteb29() != null) {
			where.append(" AND t1.EXPEDIENTEB29 = ?");
			params.add(ab6301s00.getExpedienteb29());
		}
		if (ab6301s00 != null && ab6301s00.getIdPortalS41() != null) {
			where.append(" AND t1.ID_PORTAL_S41 = ?");
			params.add(ab6301s00.getIdPortalS41());
		}
		if (ab6301s00 != null && ab6301s00.getUrlPortalS41() != null) {
			where.append(" AND t1.URL_PORTAL_S41 = ?");
			params.add(ab6301s00.getUrlPortalS41());
		}
		if (ab6301s00 != null && ab6301s00.getFechaControlS41() != null) {
			where.append(" AND t1.FECHA_CONTROL_S41 = ?");
			params.add(ab6301s00.getFechaControlS41());
		}
		if (ab6301s00 != null && ab6301s00.getNumInstalacionAnterior() != null) {
			where.append(" AND t1.NUM_INSTALACION_ANTERIOR = ?");
			params.add(ab6301s00.getNumInstalacionAnterior());
		}
		if (ab6301s00 != null && ab6301s00.getFechaInscripcion() != null) {
			where.append(" AND t1.FECHA_INSCRIPCION = ?");
			params.add(ab6301s00.getFechaInscripcion());
		}
		if (ab6301s00 != null && ab6301s00.getNumInstalacionWz() != null) {
			where.append(" AND t1.NUM_INSTALACION_WZ = ?");
			params.add(ab6301s00.getNumInstalacionWz());
		}
		if (ab6301s00 != null && ab6301s00.getObservaciones2() != null) {
			where.append(" AND t1.OBSERVACIONES2 = ?");
			params.add(ab6301s00.getObservaciones2());
		}
		if (ab6301s00 != null && ab6301s00.getNotasMigracion() != null) {
			where.append(" AND t1.NOTAS_MIGRACION = ?");
			params.add(ab6301s00.getNotasMigracion());
		}
		if (ab6301s00 != null && ab6301s00.getAgrupacion() != null) {
			where.append(" AND t1.AGRUPACION = ?");
			params.add(ab6301s00.getAgrupacion());
		}
		if (ab6301s00 != null && ab6301s00.getRefCatastral() != null) {
			where.append(" AND t1.REF_CATASTRAL = ?");
			params.add(ab6301s00.getRefCatastral());
		}
		if (ab6301s00 != null && ab6301s00.getObsSegrespcivil() != null) {
			where.append(" AND t1.OBS_SEGRESPCIVIL = ?");
			params.add(ab6301s00.getObsSegrespcivil());
		}
		if (ab6301s00 != null && ab6301s00.getFechaRegistro() != null) {
			where.append(" AND t1.FECHA_REGISTRO = ?");
			params.add(ab6301s00.getFechaRegistro());
		}
		if (ab6301s00 != null && ab6301s00.getUsuarioRegistro() != null) {
			where.append(" AND t1.USUARIO_REGISTRO = ?");
			params.add(ab6301s00.getUsuarioRegistro());
		}
		if (ab6301s00 != null && ab6301s00.getFechaUltmodificacion() != null) {
			where.append(" AND t1.FECHA_ULTMODIFICACION = ?");
			params.add(ab6301s00.getFechaUltmodificacion());
		}
		if (ab6301s00 != null && ab6301s00.getUsuarioUltmodificacion() != null) {
			where.append(" AND t1.USUARIO_ULTMODIFICACION = ?");
			params.add(ab6301s00.getUsuarioUltmodificacion());
		}
		if (ab6301s00 != null && ab6301s00.getEstablecimientoData() != null
				&& ab6301s00.getEstablecimientoData().getIdEstablecimiento() != null) {
			where.append(" AND t8.ID_ESTABLECIMIENTO = ?");
			params.add(ab6301s00.getEstablecimientoData().getIdEstablecimiento());
		}
		if (ab6301s00 != null && ab6301s00.getEstablecimientoData() != null
				&& ab6301s00.getEstablecimientoData().getFechaAnoConstruccion() != null) {
			where.append(" AND t8.FECHA_ANO_CONSTRUCCION = ?");
			params.add(ab6301s00.getEstablecimientoData().getFechaAnoConstruccion());
		}
		if (ab6301s00 != null && ab6301s00.getEstablecimientoData() != null
				&& ab6301s00.getEstablecimientoData().getFechaAnoRenovacion() != null) {
			where.append(" AND t8.FECHA_ANO_RENOVACION = ?");
			params.add(ab6301s00.getEstablecimientoData().getFechaAnoRenovacion());
		}
		if (ab6301s00 != null && ab6301s00.getEstablecimientoData() != null
				&& ab6301s00.getEstablecimientoData().getDerechoCocina() != null) {
			where.append(" AND t8.DERECHO_COCINA = ?");
			params.add(ab6301s00.getEstablecimientoData().getDerechoCocina());
		}
		if (ab6301s00 != null && ab6301s00.getEstablecimientoData() != null
				&& ab6301s00.getEstablecimientoData().getServicioComedor() != null) {
			where.append(" AND t8.SERVICIO_COMEDOR = ?");
			params.add(ab6301s00.getEstablecimientoData().getServicioComedor());
		}
		if (ab6301s00 != null && ab6301s00.getEstablecimientoData() != null
				&& ab6301s00.getEstablecimientoData().getNumSalones() != null) {
			where.append(" AND t8.NUM_SALONES = ?");
			params.add(ab6301s00.getEstablecimientoData().getNumSalones());
		}
		if (ab6301s00 != null && ab6301s00.getEstablecimientoData() != null
				&& ab6301s00.getEstablecimientoData().getNumSalonesComedor() != null) {
			where.append(" AND t8.NUM_SALONES_COMEDOR = ?");
			params.add(ab6301s00.getEstablecimientoData().getNumSalonesComedor());
		}
		if (ab6301s00 != null && ab6301s00.getEstablecimientoData() != null
				&& ab6301s00.getEstablecimientoData().getNumComedores() != null) {
			where.append(" AND t8.NUM_COMEDORES = ?");
			params.add(ab6301s00.getEstablecimientoData().getNumComedores());
		}
		if (ab6301s00 != null && ab6301s00.getEstablecimientoData() != null
				&& ab6301s00.getEstablecimientoData().getNumBanosGenerales() != null) {
			where.append(" AND t8.NUM_BAÑOS_GENERALES = ?");
			params.add(ab6301s00.getEstablecimientoData().getNumBanosGenerales());
		}
		if (ab6301s00 != null && ab6301s00.getEstablecimientoData() != null
				&& ab6301s00.getEstablecimientoData().getNumConjuntos() != null) {
			where.append(" AND t8.NUM_CONJUNTOS = ?");
			params.add(ab6301s00.getEstablecimientoData().getNumConjuntos());
		}
		if (ab6301s00 != null && ab6301s00.getEstablecimientoData() != null
				&& ab6301s00.getEstablecimientoData().getNumEstudios() != null) {
			where.append(" AND t8.NUM_ESTUDIOS = ?");
			params.add(ab6301s00.getEstablecimientoData().getNumEstudios());
		}
		if (ab6301s00 != null && ab6301s00.getEstablecimientoData() != null
				&& ab6301s00.getEstablecimientoData().getNumHabDoble() != null) {
			where.append(" AND t8.NUM_HAB_DOBLE = ?");
			params.add(ab6301s00.getEstablecimientoData().getNumHabDoble());
		}
		if (ab6301s00 != null && ab6301s00.getEstablecimientoData() != null
				&& ab6301s00.getEstablecimientoData().getNumHabIndividuales() != null) {
			where.append(" AND t8.NUM_HAB_INDIVIDUALES = ?");
			params.add(ab6301s00.getEstablecimientoData().getNumHabIndividuales());
		}
		if (ab6301s00 != null && ab6301s00.getEstablecimientoData() != null
				&& ab6301s00.getEstablecimientoData().getNumMaximoSupletorias() != null) {
			where.append(" AND t8.NUM_MAXIMO_SUPLETORIAS = ?");
			params.add(ab6301s00.getEstablecimientoData().getNumMaximoSupletorias());
		}
		if (ab6301s00 != null && ab6301s00.getEstablecimientoData() != null
				&& ab6301s00.getEstablecimientoData().getNumPlazas() != null) {
			where.append(" AND t8.NUM_PLAZAS = ?");
			params.add(ab6301s00.getEstablecimientoData().getNumPlazas());
		}
		if (ab6301s00 != null && ab6301s00.getEstablecimientoData() != null
				&& ab6301s00.getEstablecimientoData().getEdificioCatalogado() != null) {
			where.append(" AND t8.EDIFICIO_CATALOGADO = ?");
			params.add(ab6301s00.getEstablecimientoData().getEdificioCatalogado());
		}
		if (ab6301s00 != null && ab6301s00.getEstablecimientoData() != null
				&& ab6301s00.getEstablecimientoData().getNumHabMas4() != null) {
			where.append(" AND t8.NUM_HAB_MAS_4 = ?");
			params.add(ab6301s00.getEstablecimientoData().getNumHabMas4());
		}
		if (ab6301s00 != null && ab6301s00.getEstablecimientoData() != null
				&& ab6301s00.getEstablecimientoData().getNumHabMenos4() != null) {
			where.append(" AND t8.NUM_HAB_MENOS_4 = ?");
			params.add(ab6301s00.getEstablecimientoData().getNumHabMenos4());
		}
		if (ab6301s00 != null && ab6301s00.getEstablecimientoData() != null
				&& ab6301s00.getEstablecimientoData().getComparteViviendas() != null) {
			where.append(" AND t8.COMPARTE_VIVIENDAS = ?");
			params.add(ab6301s00.getEstablecimientoData().getComparteViviendas());
		}
		if (ab6301s00 != null && ab6301s00.getEstablecimientoData() != null
				&& ab6301s00.getEstablecimientoData().getNumHabDobleCs() != null) {
			where.append(" AND t8.NUM_HAB_DOBLE_CS = ?");
			params.add(ab6301s00.getEstablecimientoData().getNumHabDobleCs());
		}
		if (ab6301s00 != null && ab6301s00.getEstablecimientoData() != null
				&& ab6301s00.getEstablecimientoData().getNumApartamentos() != null) {
			where.append(" AND t8.NUM_APARTAMENTOS = ?");
			params.add(ab6301s00.getEstablecimientoData().getNumApartamentos());
		}
		if (ab6301s00 != null && ab6301s00.getEstablecimientoData() != null
				&& ab6301s00.getEstablecimientoData().getNumSuites() != null) {
			where.append(" AND t8.NUM_SUITES = ?");
			params.add(ab6301s00.getEstablecimientoData().getNumSuites());
		}
		if (ab6301s00 != null && ab6301s00.getEstablecimientoData() != null
				&& ab6301s00.getEstablecimientoData().getComparteInstal() != null) {
			where.append(" AND t8.COMPARTE_INSTAL = ?");
			params.add(ab6301s00.getEstablecimientoData().getComparteInstal());
		}
		if (ab6301s00 != null && ab6301s00.getEstablecimientoData() != null
				&& ab6301s00.getEstablecimientoData().getNumInstalComparte() != null) {
			where.append(" AND t8.NUM_INSTAL_COMPARTE = ?");
			params.add(ab6301s00.getEstablecimientoData().getNumInstalComparte());
		}
		if (ab6301s00 != null && ab6301s00.getEstablecimientoData() != null
				&& ab6301s00.getEstablecimientoData().getNumSupAcampada() != null) {
			where.append(" AND t8.NUM_SUP_ACAMPADA = ?");
			params.add(ab6301s00.getEstablecimientoData().getNumSupAcampada());
		}
		if (ab6301s00 != null && ab6301s00.getEstablecimientoData() != null
				&& ab6301s00.getEstablecimientoData().getBar() != null) {
			where.append(" AND t8.BAR = ?");
			params.add(ab6301s00.getEstablecimientoData().getBar());
		}
		if (ab6301s00 != null && ab6301s00.getEstablecimientoData() != null
				&& ab6301s00.getEstablecimientoData().getRestaurante() != null) {
			where.append(" AND t8.RESTAURANTE = ?");
			params.add(ab6301s00.getEstablecimientoData().getRestaurante());
		}
		if (ab6301s00 != null && ab6301s00.getEstablecimientoData() != null
				&& ab6301s00.getEstablecimientoData().getPiscina() != null) {
			where.append(" AND t8.PISCINA = ?");
			params.add(ab6301s00.getEstablecimientoData().getPiscina());
		}
		if (ab6301s00 != null && ab6301s00.getEstablecimientoData() != null
				&& ab6301s00.getEstablecimientoData().getNumTotParcelas() != null) {
			where.append(" AND t8.NUM_TOT_PARCELAS = ?");
			params.add(ab6301s00.getEstablecimientoData().getNumTotParcelas());
		}
		if (ab6301s00 != null && ab6301s00.getEstablecimientoData() != null
				&& ab6301s00.getEstablecimientoData().getNumParcelasAnf() != null) {
			where.append(" AND t8.NUM_PARCELAS_ANF = ?");
			params.add(ab6301s00.getEstablecimientoData().getNumParcelasAnf());
		}
		if (ab6301s00 != null && ab6301s00.getEstablecimientoData() != null
				&& ab6301s00.getEstablecimientoData().getNumParcelasAf() != null) {
			where.append(" AND t8.NUM_PARCELAS_AF = ?");
			params.add(ab6301s00.getEstablecimientoData().getNumParcelasAf());
		}
		if (ab6301s00 != null && ab6301s00.getEstablecimientoData() != null
				&& ab6301s00.getEstablecimientoData().getNumParcelasSa() != null) {
			where.append(" AND t8.NUM_PARCELAS_SA = ?");
			params.add(ab6301s00.getEstablecimientoData().getNumParcelasSa());
		}
		if (ab6301s00 != null && ab6301s00.getEstablecimientoData() != null
				&& ab6301s00.getEstablecimientoData().getIndicadorIa() != null) {
			where.append(" AND t8.INDICADOR_IA = ?");
			params.add(ab6301s00.getEstablecimientoData().getIndicadorIa());
		}
		if (ab6301s00 != null && ab6301s00.getEstablecimientoData() != null
				&& ab6301s00.getEstablecimientoData().getFechaControlIa() != null) {
			where.append(" AND t8.FECHA_CONTROL_IA = ?");
			params.add(ab6301s00.getEstablecimientoData().getFechaControlIa());
		}
		if (ab6301s00 != null && ab6301s00.getEstablecimientoData() != null
				&& ab6301s00.getEstablecimientoData().getRequisitos() != null) {
			where.append(" AND t8.REQUISITOS = ?");
			params.add(ab6301s00.getEstablecimientoData().getRequisitos());
		}
		if (ab6301s00 != null && ab6301s00.getEstablecimientoData() != null
				&& ab6301s00.getEstablecimientoData().getNumControl() != null) {
			where.append(" AND t8.NUM_CONTROL = ?");
			params.add(ab6301s00.getEstablecimientoData().getNumControl());
		}
		if (ab6301s00 != null && ab6301s00.getEstablecimientoData() != null
				&& ab6301s00.getEstablecimientoData().getFechaAntControl() != null) {
			where.append(" AND t8.FECHA_ANT_CONTROL = ?");
			params.add(ab6301s00.getEstablecimientoData().getFechaAntControl());
		}
		if (ab6301s00 != null && ab6301s00.getEstablecimientoData() != null
				&& ab6301s00.getEstablecimientoData().getNumHabitaciones() != null) {
			where.append(" AND t8.NUM_HABITACIONES = ?");
			params.add(ab6301s00.getEstablecimientoData().getNumHabitaciones());
		}
		if (ab6301s00 != null && ab6301s00.getEstablecimientoData() != null
				&& ab6301s00.getEstablecimientoData().getNumResidentesPerm() != null) {
			where.append(" AND t8.NUM_RESIDENTES_PERM = ?");
			params.add(ab6301s00.getEstablecimientoData().getNumResidentesPerm());
		}
		if (ab6301s00 != null && ab6301s00.getEstablecimientoData() != null
				&& ab6301s00.getEstablecimientoData().getSupTotHabitac() != null) {
			where.append(" AND t8.SUP_TOT_HABITAC = ?");
			params.add(ab6301s00.getEstablecimientoData().getSupTotHabitac());
		}
		if (ab6301s00 != null && ab6301s00.getEstablecimientoData() != null
				&& ab6301s00.getEstablecimientoData().getSupRestoDepen() != null) {
			where.append(" AND t8.SUP_RESTO_DEPEN = ?");
			params.add(ab6301s00.getEstablecimientoData().getSupRestoDepen());
		}
		if (ab6301s00 != null && ab6301s00.getEstablecimientoData() != null
				&& ab6301s00.getEstablecimientoData().getFechaRegistro() != null) {
			where.append(" AND t8.FECHA_REGISTRO = ?");
			params.add(ab6301s00.getEstablecimientoData().getFechaRegistro());
		}
		if (ab6301s00 != null && ab6301s00.getEstablecimientoData() != null
				&& ab6301s00.getEstablecimientoData().getUsuarioRegistro() != null) {
			where.append(" AND t8.USUARIO_REGISTRO = ?");
			params.add(ab6301s00.getEstablecimientoData().getUsuarioRegistro());
		}
		if (ab6301s00 != null && ab6301s00.getEstablecimientoData() != null
				&& ab6301s00.getEstablecimientoData().getFechaUltmodificacion() != null) {
			where.append(" AND t8.FECHA_ULTMODIFICACION = ?");
			params.add(ab6301s00.getEstablecimientoData().getFechaUltmodificacion());
		}
		if (ab6301s00 != null && ab6301s00.getEstablecimientoData() != null
				&& ab6301s00.getEstablecimientoData().getUsuarioUltmodificacion() != null) {
			where.append(" AND t8.USUARIO_ULTMODIFICACION = ?");
			params.add(ab6301s00.getEstablecimientoData().getUsuarioUltmodificacion());
		}
		if (ab6301s00 != null && ab6301s00.getFranquicia() != null
				&& ab6301s00.getFranquicia().getIdEstablecimiento() != null) {
			where.append(" AND t9.ID_ESTABLECIMIENTO = ?");
			params.add(ab6301s00.getFranquicia().getIdEstablecimiento());
		}
		if (ab6301s00 != null && ab6301s00.getFranquicia() != null
				&& ab6301s00.getFranquicia().getFranquicia() != null) {
			where.append(" AND t9.FRANQUICIA = ?");
			params.add(ab6301s00.getFranquicia().getFranquicia());
		}
		if (ab6301s00 != null && ab6301s00.getFranquicia() != null
				&& ab6301s00.getFranquicia().getTipoFranquicia() != null
				&& ab6301s00.getFranquicia().getTipoFranquicia().getIdFranquicia() != null) {
			where.append(" AND T12.ID_FRANQUICIA = ?");
			params.add(ab6301s00.getFranquicia().getTipoFranquicia().getIdFranquicia());
		}
		if (ab6301s00 != null && ab6301s00.getFranquicia() != null
				&& ab6301s00.getFranquicia().getIndonline() != null) {
			where.append(" AND t9.INDONLINE = ?");
			params.add(ab6301s00.getFranquicia().getIndonline());
		}
		if (ab6301s00 != null && ab6301s00.getFranquicia() != null
				&& ab6301s00.getFranquicia().getIdInstalOfiPrincipal() != null) {
			where.append(" AND t9.ID_INSTAL_OFI_PRINCIPAL = ?");
			params.add(ab6301s00.getFranquicia().getIdInstalOfiPrincipal());
		}
		if (ab6301s00 != null && ab6301s00.getFranquicia() != null
				&& ab6301s00.getFranquicia().getIdOrigenOfiPrincipal() != null) {
			where.append(" AND t9.ID_ORIGEN_OFI_PRINCIPAL = ?");
			params.add(ab6301s00.getFranquicia().getIdOrigenOfiPrincipal());
		}
		if (ab6301s00 != null && ab6301s00.getFranquicia() != null
				&& ab6301s00.getFranquicia().getIdTipoCie() != null) {
			where.append(" AND t9.ID_TIPO_CIE = ?");
			params.add(ab6301s00.getFranquicia().getIdTipoCie());
		}
		if (ab6301s00 != null && ab6301s00.getFranquicia() != null
				&& ab6301s00.getFranquicia().getEtiquetaCie() != null) {
			where.append(" AND t9.ETIQUETA_CIE = ?");
			params.add(ab6301s00.getFranquicia().getEtiquetaCie());
		}
		if (ab6301s00 != null && ab6301s00.getFranquicia() != null
				&& ab6301s00.getFranquicia().getRegistroFianza() != null) {
			where.append(" AND t9.REGISTRO_FIANZA = ?");
			params.add(ab6301s00.getFranquicia().getRegistroFianza());
		}
		if (ab6301s00 != null && ab6301s00.getFranquicia() != null
				&& ab6301s00.getFranquicia().getObservFianza() != null) {
			where.append(" AND t9.OBSERV_FIANZA = ?");
			params.add(ab6301s00.getFranquicia().getObservFianza());
		}
		if (ab6301s00 != null && ab6301s00.getFranquicia() != null
				&& ab6301s00.getFranquicia().getObservSrc() != null) {
			where.append(" AND t9.OBSERV_SRC = ?");
			params.add(ab6301s00.getFranquicia().getObservSrc());
		}
		if (ab6301s00 != null && ab6301s00.getFranquicia() != null
				&& ab6301s00.getFranquicia().getIdPrimeraSucursal() != null) {
			where.append(" AND t9.ID_PRIMERA_SUCURSAL = ?");
			params.add(ab6301s00.getFranquicia().getIdPrimeraSucursal());
		}
		if (ab6301s00 != null && ab6301s00.getFranquicia() != null && ab6301s00.getFranquicia().getNumCie() != null) {
			where.append(" AND t9.NUM_CIE = ?");
			params.add(ab6301s00.getFranquicia().getNumCie());
		}
		if (ab6301s00 != null && ab6301s00.getFranquicia() != null
				&& ab6301s00.getFranquicia().getFechaRegistro() != null) {
			where.append(" AND t9.FECHA_REGISTRO = ?");
			params.add(ab6301s00.getFranquicia().getFechaRegistro());
		}
		if (ab6301s00 != null && ab6301s00.getFranquicia() != null
				&& ab6301s00.getFranquicia().getUsuarioRegistro() != null) {
			where.append(" AND t9.USUARIO_REGISTRO = ?");
			params.add(ab6301s00.getFranquicia().getUsuarioRegistro());
		}
		if (ab6301s00 != null && ab6301s00.getFranquicia() != null
				&& ab6301s00.getFranquicia().getFechaUltmodificacion() != null) {
			where.append(" AND t9.FECHA_ULTMODIFICACION = ?");
			params.add(ab6301s00.getFranquicia().getFechaUltmodificacion());
		}
		if (ab6301s00 != null && ab6301s00.getFranquicia() != null
				&& ab6301s00.getFranquicia().getUsuarioUltmodificacion() != null) {
			where.append(" AND t9.USUARIO_ULTMODIFICACION = ?");
			params.add(ab6301s00.getFranquicia().getUsuarioUltmodificacion());
		}

		Map<String, Object> mapWhere = new HashMap<String, Object>();
		mapWhere.put("query", where);
		mapWhere.put("params", params);

		return mapWhere;
	}
	// CHECKSTYLE:ON CyclomaticComplexity - GeneraciÃ³n de cÃ³digo de UDA

	/**
	 * Returns a map with the needed value to create the conditions to filter by
	 * the Ab6301s00 entity
	 *
	 * @param ab6301s00
	 *            Ab6301s00 Bean with the criteria values to filter by.
	 * @param startsWith
	 *            Boolean
	 * @return Map created with two keys key query stores the sql query syntax
	 *         key params stores the parameter values to be used in the
	 *         condition sentence.
	 */
	// CHECKSTYLE:OFF CyclomaticComplexity - GeneraciÃ³n de cÃ³digo de UDA
	private Map<String, Object> getWhereLikeMap(Establecimiento ab6301s00, Boolean startsWith) {

		StringBuilder where = new StringBuilder(EstablecimientoDaoImpl.STRING_BUILDER_INIT);
		List<Object> params = new ArrayList<Object>();

		if (ab6301s00 != null && ab6301s00.getIdEstablecimiento() != null) {
			where.append(" AND t1.ID_ESTABLECIMIENTO = ?");
			params.add(ab6301s00.getIdEstablecimiento());
		}
		if (ab6301s00 != null && ab6301s00.getRecurso() != null && ab6301s00.getRecurso().getIdRecurso() != null) {
			where.append(" AND t2.ID_RECURSO = ?");
			params.add(ab6301s00.getRecurso().getIdRecurso());
		}
		if (ab6301s00 != null && ab6301s00.getRecurso() != null && ab6301s00.getRecurso().getTipoRecurso() != null) {
			where.append(" AND UPPER(t2.TIPO_RECURSO) like ? ESCAPE  '\\'");
			if (startsWith) {
				params.add(ab6301s00.getRecurso().getTipoRecurso().toUpperCase() + "%");
			} else {
				params.add("%" + ab6301s00.getRecurso().getTipoRecurso().toUpperCase() + "%");
			}
			where.append(" AND t2.TIPO_RECURSO IS NOT NULL");
		}
		if (ab6301s00 != null && ab6301s00.getRecurso() != null && ab6301s00.getRecurso().getDescNombre() != null) {
			where.append(" AND UPPER(t2.DESC_NOMBRE) like ? ESCAPE  '\\'");
			if (startsWith) {
				params.add(ab6301s00.getRecurso().getDescNombre().toUpperCase() + "%");
			} else {
				params.add("%" + ab6301s00.getRecurso().getDescNombre().toUpperCase() + "%");
			}
			where.append(" AND t2.DESC_NOMBRE IS NOT NULL");
		}
		if (ab6301s00 != null && ab6301s00.getRecurso() != null && ab6301s00.getRecurso().getFechaBaja() != null) {
			where.append(" AND t2.FECHA_BAJA = ?");
			params.add(ab6301s00.getRecurso().getFechaBaja());
		}
		if (ab6301s00 != null && ab6301s00.getRecurso() != null && ab6301s00.getRecurso().getNumRegistro() != null) {
			where.append(" AND UPPER(t2.NUM_REGISTRO) like ? ESCAPE  '\\'");
			if (startsWith) {
				params.add(ab6301s00.getRecurso().getNumRegistro().toUpperCase() + "%");
			} else {
				params.add("%" + ab6301s00.getRecurso().getNumRegistro().toUpperCase() + "%");
			}
			where.append(" AND t2.NUM_REGISTRO IS NOT NULL");
		}
		if (ab6301s00 != null && ab6301s00.getRecurso() != null && ab6301s00.getRecurso().getFechaRegistro() != null) {
			where.append(" AND t2.FECHA_REGISTRO = ?");
			params.add(ab6301s00.getRecurso().getFechaRegistro());
		}
		if (ab6301s00 != null && ab6301s00.getRecurso() != null
				&& ab6301s00.getRecurso().getUsuarioRegistro() != null) {
			where.append(" AND UPPER(t2.USUARIO_REGISTRO) like ? ESCAPE  '\\'");
			if (startsWith) {
				params.add(ab6301s00.getRecurso().getUsuarioRegistro().toUpperCase() + "%");
			} else {
				params.add("%" + ab6301s00.getRecurso().getUsuarioRegistro().toUpperCase() + "%");
			}
			where.append(" AND t2.USUARIO_REGISTRO IS NOT NULL");
		}
		if (ab6301s00 != null && ab6301s00.getRecurso() != null
				&& ab6301s00.getRecurso().getFechaUltmodificacion() != null) {
			where.append(" AND t2.FECHA_ULTMODIFICACION = ?");
			params.add(ab6301s00.getRecurso().getFechaUltmodificacion());
		}
		if (ab6301s00 != null && ab6301s00.getRecurso() != null
				&& ab6301s00.getRecurso().getUsuarioUltmodificacion() != null) {
			where.append(" AND UPPER(t2.USUARIO_ULTMODIFICACION) like ? ESCAPE  '\\'");
			if (startsWith) {
				params.add(ab6301s00.getRecurso().getUsuarioUltmodificacion().toUpperCase() + "%");
			} else {
				params.add("%" + ab6301s00.getRecurso().getUsuarioUltmodificacion().toUpperCase() + "%");
			}
			where.append(" AND t2.USUARIO_ULTMODIFICACION IS NOT NULL");
		}
		if (ab6301s00 != null && ab6301s00.getTipoEstablecimiento() != null
				&& ab6301s00.getTipoEstablecimiento().getIdTipoEstablecimiento() != null) {
			where.append(" AND t3.ID_TIPO_ESTABLECIMIENTO = ?");
			params.add(ab6301s00.getTipoEstablecimiento().getIdTipoEstablecimiento());
		}
		if (ab6301s00 != null && ab6301s00.getTipoEstablecimiento() != null
				&& ab6301s00.getTipoEstablecimiento().getDescTipoEs() != null) {
			where.append(" AND UPPER(t3.DESC_TIPO_ES) like ? ESCAPE  '\\'");
			if (startsWith) {
				params.add(ab6301s00.getTipoEstablecimiento().getDescTipoEs().toUpperCase() + "%");
			} else {
				params.add("%" + ab6301s00.getTipoEstablecimiento().getDescTipoEs().toUpperCase() + "%");
			}
			where.append(" AND t3.DESC_TIPO_ES IS NOT NULL");
		}
		if (ab6301s00 != null && ab6301s00.getTipoEstablecimiento() != null
				&& ab6301s00.getTipoEstablecimiento().getFechaModificacion() != null) {
			where.append(" AND t3.FECHA_MODIFICACION = ?");
			params.add(ab6301s00.getTipoEstablecimiento().getFechaModificacion());
		}
		if (ab6301s00 != null && ab6301s00.getTipoEstablecimiento() != null
				&& ab6301s00.getTipoEstablecimiento().getNomUsuario() != null) {
			where.append(" AND UPPER(t3.NOM_USUARIO) like ? ESCAPE  '\\'");
			if (startsWith) {
				params.add(ab6301s00.getTipoEstablecimiento().getNomUsuario().toUpperCase() + "%");
			} else {
				params.add("%" + ab6301s00.getTipoEstablecimiento().getNomUsuario().toUpperCase() + "%");
			}
			where.append(" AND t3.NOM_USUARIO IS NOT NULL");
		}
		if (ab6301s00 != null && ab6301s00.getTipoEstablecimiento() != null
				&& ab6301s00.getTipoEstablecimiento().getBaja() != null) {
			where.append(" AND t3.BAJA = ?");
			params.add(ab6301s00.getTipoEstablecimiento().getBaja());
		}
		if (ab6301s00 != null && ab6301s00.getTipoEstablecimiento() != null
				&& ab6301s00.getTipoEstablecimiento().getDescTipoEu() != null) {
			where.append(" AND UPPER(t3.DESC_TIPO_EU) like ? ESCAPE  '\\'");
			if (startsWith) {
				params.add(ab6301s00.getTipoEstablecimiento().getDescTipoEu().toUpperCase() + "%");
			} else {
				params.add("%" + ab6301s00.getTipoEstablecimiento().getDescTipoEu().toUpperCase() + "%");
			}
			where.append(" AND t3.DESC_TIPO_EU IS NOT NULL");
		}
		if (ab6301s00 != null && ab6301s00.getTipoEstablecimiento() != null
				&& ab6301s00.getTipoEstablecimiento().getOrdenacion() != null) {
			where.append(" AND UPPER(t3.ORDENACION) like ? ESCAPE  '\\'");
			if (startsWith) {
				params.add(ab6301s00.getTipoEstablecimiento().getOrdenacion().toUpperCase() + "%");
			} else {
				params.add("%" + ab6301s00.getTipoEstablecimiento().getOrdenacion().toUpperCase() + "%");
			}
			where.append(" AND t3.ORDENACION IS NOT NULL");
		}
		if (ab6301s00 != null && ab6301s00.getTipoEstablecimiento() != null
				&& ab6301s00.getTipoEstablecimiento().getTipificacion() != null) {
			where.append(" AND UPPER(t3.TIPIFICACION) like ? ESCAPE  '\\'");
			if (startsWith) {
				params.add(ab6301s00.getTipoEstablecimiento().getTipificacion().toUpperCase() + "%");
			} else {
				params.add("%" + ab6301s00.getTipoEstablecimiento().getTipificacion().toUpperCase() + "%");
			}
			where.append(" AND t3.TIPIFICACION IS NOT NULL");
		}
		if (ab6301s00 != null && ab6301s00.getTipoEstablecimiento() != null
				&& ab6301s00.getTipoEstablecimiento().getFechaRegistro() != null) {
			where.append(" AND t3.FECHA_REGISTRO = ?");
			params.add(ab6301s00.getTipoEstablecimiento().getFechaRegistro());
		}
		if (ab6301s00 != null && ab6301s00.getTipoEstablecimiento() != null
				&& ab6301s00.getTipoEstablecimiento().getUsuarioRegistro() != null) {
			where.append(" AND UPPER(t3.USUARIO_REGISTRO) like ? ESCAPE  '\\'");
			if (startsWith) {
				params.add(ab6301s00.getTipoEstablecimiento().getUsuarioRegistro().toUpperCase() + "%");
			} else {
				params.add("%" + ab6301s00.getTipoEstablecimiento().getUsuarioRegistro().toUpperCase() + "%");
			}
			where.append(" AND t3.USUARIO_REGISTRO IS NOT NULL");
		}
		if (ab6301s00 != null && ab6301s00.getTipoEstablecimiento() != null
				&& ab6301s00.getTipoEstablecimiento().getFechaUltmodificacion() != null) {
			where.append(" AND t3.FECHA_ULTMODIFICACION = ?");
			params.add(ab6301s00.getTipoEstablecimiento().getFechaUltmodificacion());
		}
		if (ab6301s00 != null && ab6301s00.getTipoEstablecimiento() != null
				&& ab6301s00.getTipoEstablecimiento().getUsuarioUltmodificacion() != null) {
			where.append(" AND UPPER(t3.USUARIO_ULTMODIFICACION) like ? ESCAPE  '\\'");
			if (startsWith) {
				params.add(ab6301s00.getTipoEstablecimiento().getUsuarioUltmodificacion().toUpperCase() + "%");
			} else {
				params.add("%" + ab6301s00.getTipoEstablecimiento().getUsuarioUltmodificacion().toUpperCase() + "%");
			}
			where.append(" AND t3.USUARIO_ULTMODIFICACION IS NOT NULL");
		}
		if (ab6301s00 != null && ab6301s00.getGrupo() != null && ab6301s00.getGrupo().getIdGrupo() != null) {
			where.append(" AND t4.ID_GRUPO = ?");
			params.add(ab6301s00.getGrupo().getIdGrupo());
		}
		if (ab6301s00 != null && ab6301s00.getGrupo() != null && ab6301s00.getGrupo().getTipoEstablecimiento() != null
				&& ab6301s00.getGrupo().getTipoEstablecimiento().getIdTipoEstablecimiento() != null) {
			where.append(" AND UPPER(t4.ID_TIPO_ESTABLECIMIENTO) like ? ESCAPE  '\\'");
			if (startsWith) {
				params.add(
						ab6301s00.getGrupo().getTipoEstablecimiento().getIdTipoEstablecimiento().toUpperCase() + "%");
			} else {
				params.add("%" + ab6301s00.getGrupo().getTipoEstablecimiento().getIdTipoEstablecimiento().toUpperCase()
						+ "%");
			}
			where.append(" AND t4.ID_TIPO_ESTABLECIMIENTO IS NOT NULL");
		}
		if (ab6301s00 != null && ab6301s00.getGrupo() != null && ab6301s00.getGrupo().getDescGrupoEs() != null) {
			where.append(" AND UPPER(t4.DESC_GRUPO_ES) like ? ESCAPE  '\\'");
			if (startsWith) {
				params.add(ab6301s00.getGrupo().getDescGrupoEs().toUpperCase() + "%");
			} else {
				params.add("%" + ab6301s00.getGrupo().getDescGrupoEs().toUpperCase() + "%");
			}
			where.append(" AND t4.DESC_GRUPO_ES IS NOT NULL");
		}
		if (ab6301s00 != null && ab6301s00.getGrupo() != null && ab6301s00.getGrupo().getFechaModificacion() != null) {
			where.append(" AND t4.FECHA_MODIFICACION = ?");
			params.add(ab6301s00.getGrupo().getFechaModificacion());
		}
		if (ab6301s00 != null && ab6301s00.getGrupo() != null && ab6301s00.getGrupo().getNomUsuario() != null) {
			where.append(" AND UPPER(t4.NOM_USUARIO) like ? ESCAPE  '\\'");
			if (startsWith) {
				params.add(ab6301s00.getGrupo().getNomUsuario().toUpperCase() + "%");
			} else {
				params.add("%" + ab6301s00.getGrupo().getNomUsuario().toUpperCase() + "%");
			}
			where.append(" AND t4.NOM_USUARIO IS NOT NULL");
		}
		if (ab6301s00 != null && ab6301s00.getGrupo() != null && ab6301s00.getGrupo().getBaja() != null) {
			where.append(" AND t4.BAJA = ?");
			params.add(ab6301s00.getGrupo().getBaja());
		}
		if (ab6301s00 != null && ab6301s00.getGrupo() != null && ab6301s00.getGrupo().getDescGrupoEu() != null) {
			where.append(" AND UPPER(t4.DESC_GRUPO_EU) like ? ESCAPE  '\\'");
			if (startsWith) {
				params.add(ab6301s00.getGrupo().getDescGrupoEu().toUpperCase() + "%");
			} else {
				params.add("%" + ab6301s00.getGrupo().getDescGrupoEu().toUpperCase() + "%");
			}
			where.append(" AND t4.DESC_GRUPO_EU IS NOT NULL");
		}
		if (ab6301s00 != null && ab6301s00.getGrupo() != null && ab6301s00.getGrupo().getFechaRegistro() != null) {
			where.append(" AND t4.FECHA_REGISTRO = ?");
			params.add(ab6301s00.getGrupo().getFechaRegistro());
		}
		if (ab6301s00 != null && ab6301s00.getGrupo() != null && ab6301s00.getGrupo().getUsuarioRegistro() != null) {
			where.append(" AND UPPER(t4.USUARIO_REGISTRO) like ? ESCAPE  '\\'");
			if (startsWith) {
				params.add(ab6301s00.getGrupo().getUsuarioRegistro().toUpperCase() + "%");
			} else {
				params.add("%" + ab6301s00.getGrupo().getUsuarioRegistro().toUpperCase() + "%");
			}
			where.append(" AND t4.USUARIO_REGISTRO IS NOT NULL");
		}
		if (ab6301s00 != null && ab6301s00.getGrupo() != null
				&& ab6301s00.getGrupo().getFechaUltmodificacion() != null) {
			where.append(" AND t4.FECHA_ULTMODIFICACION = ?");
			params.add(ab6301s00.getGrupo().getFechaUltmodificacion());
		}
		if (ab6301s00 != null && ab6301s00.getGrupo() != null
				&& ab6301s00.getGrupo().getUsuarioUltmodificacion() != null) {
			where.append(" AND UPPER(t4.USUARIO_ULTMODIFICACION) like ? ESCAPE  '\\'");
			if (startsWith) {
				params.add(ab6301s00.getGrupo().getUsuarioUltmodificacion().toUpperCase() + "%");
			} else {
				params.add("%" + ab6301s00.getGrupo().getUsuarioUltmodificacion().toUpperCase() + "%");
			}
			where.append(" AND t4.USUARIO_ULTMODIFICACION IS NOT NULL");
		}
		if (ab6301s00 != null && ab6301s00.getCategoria() != null
				&& ab6301s00.getCategoria().getIdCategorias() != null) {
			where.append(" AND t5.ID_CATEGORIAS = ?");
			params.add(ab6301s00.getCategoria().getIdCategorias());
		}
		if (ab6301s00 != null && ab6301s00.getCategoria() != null
				&& ab6301s00.getCategoria().getTipoEstablecimiento() != null
				&& ab6301s00.getCategoria().getTipoEstablecimiento().getIdTipoEstablecimiento() != null) {
			where.append(" AND UPPER(t5.ID_TIPO_ESTABLECIMIENTO) like ? ESCAPE  '\\'");
			if (startsWith) {
				params.add(ab6301s00.getCategoria().getTipoEstablecimiento().getIdTipoEstablecimiento().toUpperCase()
						+ "%");
			} else {
				params.add(
						"%" + ab6301s00.getCategoria().getTipoEstablecimiento().getIdTipoEstablecimiento().toUpperCase()
								+ "%");
			}
			where.append(" AND t5.ID_TIPO_ESTABLECIMIENTO IS NOT NULL");
		}
		if (ab6301s00 != null && ab6301s00.getCategoria() != null
				&& ab6301s00.getCategoria().getDescCategoriaEs() != null) {
			where.append(" AND UPPER(t5.DESC_CATEGORIA_ES) like ? ESCAPE  '\\'");
			if (startsWith) {
				params.add(ab6301s00.getCategoria().getDescCategoriaEs().toUpperCase() + "%");
			} else {
				params.add("%" + ab6301s00.getCategoria().getDescCategoriaEs().toUpperCase() + "%");
			}
			where.append(" AND t5.DESC_CATEGORIA_ES IS NOT NULL");
		}
		if (ab6301s00 != null && ab6301s00.getCategoria() != null
				&& ab6301s00.getCategoria().getFechaModificacion() != null) {
			where.append(" AND t5.FECHA_MODIFICACION = ?");
			params.add(ab6301s00.getCategoria().getFechaModificacion());
		}
		if (ab6301s00 != null && ab6301s00.getCategoria() != null && ab6301s00.getCategoria().getNomUsuario() != null) {
			where.append(" AND UPPER(t5.NOM_USUARIO) like ? ESCAPE  '\\'");
			if (startsWith) {
				params.add(ab6301s00.getCategoria().getNomUsuario().toUpperCase() + "%");
			} else {
				params.add("%" + ab6301s00.getCategoria().getNomUsuario().toUpperCase() + "%");
			}
			where.append(" AND t5.NOM_USUARIO IS NOT NULL");
		}
		if (ab6301s00 != null && ab6301s00.getCategoria() != null && ab6301s00.getCategoria().getBaja() != null) {
			where.append(" AND t5.BAJA = ?");
			params.add(ab6301s00.getCategoria().getBaja());
		}
		if (ab6301s00 != null && ab6301s00.getCategoria() != null
				&& ab6301s00.getCategoria().getDescCategoriaEu() != null) {
			where.append(" AND UPPER(t5.DESC_CATEGORIA_EU) like ? ESCAPE  '\\'");
			if (startsWith) {
				params.add(ab6301s00.getCategoria().getDescCategoriaEu().toUpperCase() + "%");
			} else {
				params.add("%" + ab6301s00.getCategoria().getDescCategoriaEu().toUpperCase() + "%");
			}
			where.append(" AND t5.DESC_CATEGORIA_EU IS NOT NULL");
		}
		if (ab6301s00 != null && ab6301s00.getCategoria() != null
				&& ab6301s00.getCategoria().getFechaRegistro() != null) {
			where.append(" AND t5.FECHA_REGISTRO = ?");
			params.add(ab6301s00.getCategoria().getFechaRegistro());
		}
		if (ab6301s00 != null && ab6301s00.getCategoria() != null
				&& ab6301s00.getCategoria().getUsuarioRegistro() != null) {
			where.append(" AND UPPER(t5.USUARIO_REGISTRO) like ? ESCAPE  '\\'");
			if (startsWith) {
				params.add(ab6301s00.getCategoria().getUsuarioRegistro().toUpperCase() + "%");
			} else {
				params.add("%" + ab6301s00.getCategoria().getUsuarioRegistro().toUpperCase() + "%");
			}
			where.append(" AND t5.USUARIO_REGISTRO IS NOT NULL");
		}
		if (ab6301s00 != null && ab6301s00.getCategoria() != null
				&& ab6301s00.getCategoria().getFechaUltmodificacion() != null) {
			where.append(" AND t5.FECHA_ULTMODIFICACION = ?");
			params.add(ab6301s00.getCategoria().getFechaUltmodificacion());
		}
		if (ab6301s00 != null && ab6301s00.getCategoria() != null
				&& ab6301s00.getCategoria().getUsuarioUltmodificacion() != null) {
			where.append(" AND UPPER(t5.USUARIO_ULTMODIFICACION) like ? ESCAPE  '\\'");
			if (startsWith) {
				params.add(ab6301s00.getCategoria().getUsuarioUltmodificacion().toUpperCase() + "%");
			} else {
				params.add("%" + ab6301s00.getCategoria().getUsuarioUltmodificacion().toUpperCase() + "%");
			}
			where.append(" AND t5.USUARIO_ULTMODIFICACION IS NOT NULL");
		}
		if (ab6301s00 != null && ab6301s00.getEspecialidad() != null
				&& ab6301s00.getEspecialidad().getIdEspecialidad() != null) {
			where.append(" AND t6.ID_ESPECIALIDAD = ?");
			params.add(ab6301s00.getEspecialidad().getIdEspecialidad());
		}
		if (ab6301s00 != null && ab6301s00.getEspecialidad() != null
				&& ab6301s00.getEspecialidad().getTipoEstablecimiento() != null
				&& ab6301s00.getEspecialidad().getTipoEstablecimiento().getIdTipoEstablecimiento() != null) {
			where.append(" AND UPPER(t6.ID_TIPO_ESTABLECIMIENTO) like ? ESCAPE  '\\'");
			if (startsWith) {
				params.add(ab6301s00.getEspecialidad().getTipoEstablecimiento().getIdTipoEstablecimiento().toUpperCase()
						+ "%");
			} else {
				params.add("%"
						+ ab6301s00.getEspecialidad().getTipoEstablecimiento().getIdTipoEstablecimiento().toUpperCase()
						+ "%");
			}
			where.append(" AND t6.ID_TIPO_ESTABLECIMIENTO IS NOT NULL");
		}
		if (ab6301s00 != null && ab6301s00.getEspecialidad() != null
				&& ab6301s00.getEspecialidad().getDescCategoriaEs() != null) {
			where.append(" AND UPPER(t6.DESC_CATEGORIA_ES) like ? ESCAPE  '\\'");
			if (startsWith) {
				params.add(ab6301s00.getEspecialidad().getDescCategoriaEs().toUpperCase() + "%");
			} else {
				params.add("%" + ab6301s00.getEspecialidad().getDescCategoriaEs().toUpperCase() + "%");
			}
			where.append(" AND t6.DESC_CATEGORIA_ES IS NOT NULL");
		}
		if (ab6301s00 != null && ab6301s00.getEspecialidad() != null
				&& ab6301s00.getEspecialidad().getFechaModificacion() != null) {
			where.append(" AND t6.FECHA_MODIFICACION = ?");
			params.add(ab6301s00.getEspecialidad().getFechaModificacion());
		}
		if (ab6301s00 != null && ab6301s00.getEspecialidad() != null
				&& ab6301s00.getEspecialidad().getNomUsuario() != null) {
			where.append(" AND UPPER(t6.NOM_USUARIO) like ? ESCAPE  '\\'");
			if (startsWith) {
				params.add(ab6301s00.getEspecialidad().getNomUsuario().toUpperCase() + "%");
			} else {
				params.add("%" + ab6301s00.getEspecialidad().getNomUsuario().toUpperCase() + "%");
			}
			where.append(" AND t6.NOM_USUARIO IS NOT NULL");
		}
		if (ab6301s00 != null && ab6301s00.getEspecialidad() != null && ab6301s00.getEspecialidad().getBaja() != null) {
			where.append(" AND t6.BAJA = ?");
			params.add(ab6301s00.getEspecialidad().getBaja());
		}
		if (ab6301s00 != null && ab6301s00.getEspecialidad() != null
				&& ab6301s00.getEspecialidad().getDescCategoriaEu() != null) {
			where.append(" AND UPPER(t6.DESC_CATEGORIA_EU) like ? ESCAPE  '\\'");
			if (startsWith) {
				params.add(ab6301s00.getEspecialidad().getDescCategoriaEu().toUpperCase() + "%");
			} else {
				params.add("%" + ab6301s00.getEspecialidad().getDescCategoriaEu().toUpperCase() + "%");
			}
			where.append(" AND t6.DESC_CATEGORIA_EU IS NOT NULL");
		}
		if (ab6301s00 != null && ab6301s00.getEspecialidad() != null
				&& ab6301s00.getEspecialidad().getFechaRegistro() != null) {
			where.append(" AND t6.FECHA_REGISTRO = ?");
			params.add(ab6301s00.getEspecialidad().getFechaRegistro());
		}
		if (ab6301s00 != null && ab6301s00.getEspecialidad() != null
				&& ab6301s00.getEspecialidad().getUsuarioRegistro() != null) {
			where.append(" AND UPPER(t6.USUARIO_REGISTRO) like ? ESCAPE  '\\'");
			if (startsWith) {
				params.add(ab6301s00.getEspecialidad().getUsuarioRegistro().toUpperCase() + "%");
			} else {
				params.add("%" + ab6301s00.getEspecialidad().getUsuarioRegistro().toUpperCase() + "%");
			}
			where.append(" AND t6.USUARIO_REGISTRO IS NOT NULL");
		}
		if (ab6301s00 != null && ab6301s00.getEspecialidad() != null
				&& ab6301s00.getEspecialidad().getFechaUltmodificacion() != null) {
			where.append(" AND t6.FECHA_ULTMODIFICACION = ?");
			params.add(ab6301s00.getEspecialidad().getFechaUltmodificacion());
		}
		if (ab6301s00 != null && ab6301s00.getEspecialidad() != null
				&& ab6301s00.getEspecialidad().getUsuarioUltmodificacion() != null) {
			where.append(" AND UPPER(t6.USUARIO_ULTMODIFICACION) like ? ESCAPE  '\\'");
			if (startsWith) {
				params.add(ab6301s00.getEspecialidad().getUsuarioUltmodificacion().toUpperCase() + "%");
			} else {
				params.add("%" + ab6301s00.getEspecialidad().getUsuarioUltmodificacion().toUpperCase() + "%");
			}
			where.append(" AND t6.USUARIO_ULTMODIFICACION IS NOT NULL");
		}
		if (ab6301s00 != null && ab6301s00.getModalidad() != null
				&& ab6301s00.getModalidad().getIdModalidad() != null) {
			where.append(" AND t7.ID_MODALIDAD = ?");
			params.add(ab6301s00.getModalidad().getIdModalidad());
		}
		if (ab6301s00 != null && ab6301s00.getModalidad() != null
				&& ab6301s00.getModalidad().getTipoEstablecimiento() != null
				&& ab6301s00.getModalidad().getTipoEstablecimiento().getIdTipoEstablecimiento() != null) {
			where.append(" AND UPPER(t7.ID_TIPO_ESTABLECIMIENTO) like ? ESCAPE  '\\'");
			if (startsWith) {
				params.add(ab6301s00.getModalidad().getTipoEstablecimiento().getIdTipoEstablecimiento().toUpperCase()
						+ "%");
			} else {
				params.add(
						"%" + ab6301s00.getModalidad().getTipoEstablecimiento().getIdTipoEstablecimiento().toUpperCase()
								+ "%");
			}
			where.append(" AND t7.ID_TIPO_ESTABLECIMIENTO IS NOT NULL");
		}
		if (ab6301s00 != null && ab6301s00.getModalidad() != null
				&& ab6301s00.getModalidad().getDescModalidadEs() != null) {
			where.append(" AND UPPER(t7.DESC_MODALIDAD_ES) like ? ESCAPE  '\\'");
			if (startsWith) {
				params.add(ab6301s00.getModalidad().getDescModalidadEs().toUpperCase() + "%");
			} else {
				params.add("%" + ab6301s00.getModalidad().getDescModalidadEs().toUpperCase() + "%");
			}
			where.append(" AND t7.DESC_MODALIDAD_ES IS NOT NULL");
		}
		if (ab6301s00 != null && ab6301s00.getModalidad() != null
				&& ab6301s00.getModalidad().getFechaModificacion() != null) {
			where.append(" AND t7.FECHA_MODIFICACION = ?");
			params.add(ab6301s00.getModalidad().getFechaModificacion());
		}
		if (ab6301s00 != null && ab6301s00.getModalidad() != null && ab6301s00.getModalidad().getNomUsuario() != null) {
			where.append(" AND UPPER(t7.NOM_USUARIO) like ? ESCAPE  '\\'");
			if (startsWith) {
				params.add(ab6301s00.getModalidad().getNomUsuario().toUpperCase() + "%");
			} else {
				params.add("%" + ab6301s00.getModalidad().getNomUsuario().toUpperCase() + "%");
			}
			where.append(" AND t7.NOM_USUARIO IS NOT NULL");
		}
		if (ab6301s00 != null && ab6301s00.getModalidad() != null && ab6301s00.getModalidad().getBaja() != null) {
			where.append(" AND t7.BAJA = ?");
			params.add(ab6301s00.getModalidad().getBaja());
		}
		if (ab6301s00 != null && ab6301s00.getModalidad() != null
				&& ab6301s00.getModalidad().getDescModalidadEu() != null) {
			where.append(" AND UPPER(t7.DESC_MODALIDAD_EU) like ? ESCAPE  '\\'");
			if (startsWith) {
				params.add(ab6301s00.getModalidad().getDescModalidadEu().toUpperCase() + "%");
			} else {
				params.add("%" + ab6301s00.getModalidad().getDescModalidadEu().toUpperCase() + "%");
			}
			where.append(" AND t7.DESC_MODALIDAD_EU IS NOT NULL");
		}
		if (ab6301s00 != null && ab6301s00.getModalidad() != null
				&& ab6301s00.getModalidad().getFechaRegistro() != null) {
			where.append(" AND t7.FECHA_REGISTRO = ?");
			params.add(ab6301s00.getModalidad().getFechaRegistro());
		}
		if (ab6301s00 != null && ab6301s00.getModalidad() != null
				&& ab6301s00.getModalidad().getUsuarioRegistro() != null) {
			where.append(" AND UPPER(t7.USUARIO_REGISTRO) like ? ESCAPE  '\\'");
			if (startsWith) {
				params.add(ab6301s00.getModalidad().getUsuarioRegistro().toUpperCase() + "%");
			} else {
				params.add("%" + ab6301s00.getModalidad().getUsuarioRegistro().toUpperCase() + "%");
			}
			where.append(" AND t7.USUARIO_REGISTRO IS NOT NULL");
		}
		if (ab6301s00 != null && ab6301s00.getModalidad() != null
				&& ab6301s00.getModalidad().getFechaUltmodificacion() != null) {
			where.append(" AND t7.FECHA_ULTMODIFICACION = ?");
			params.add(ab6301s00.getModalidad().getFechaUltmodificacion());
		}
		if (ab6301s00 != null && ab6301s00.getModalidad() != null
				&& ab6301s00.getModalidad().getUsuarioUltmodificacion() != null) {
			where.append(" AND UPPER(t7.USUARIO_ULTMODIFICACION) like ? ESCAPE  '\\'");
			if (startsWith) {
				params.add(ab6301s00.getModalidad().getUsuarioUltmodificacion().toUpperCase() + "%");
			} else {
				params.add("%" + ab6301s00.getModalidad().getUsuarioUltmodificacion().toUpperCase() + "%");
			}
			where.append(" AND t7.USUARIO_ULTMODIFICACION IS NOT NULL");
		}
		if (ab6301s00 != null && ab6301s00.getIdentificadorEstablecimiento() != null) {

			where.append(" AND UPPER(t1.IDENTIFICADOR_ESTABLECIMIENTO) like UPPER(?) ESCAPE  '\\'");

			if (null != ab6301s00.getTipoEstSignaturaFilter() && null != ab6301s00.getZonaSignaturaFilter()
					&& null != ab6301s00.getCorrelativoSignaturaFilter()) {
				params.add(ab6301s00.getTipoEstSignaturaFilter().toUpperCase()
						+ ab6301s00.getZonaSignaturaFilter().toUpperCase()
						+ ab6301s00.getCorrelativoSignaturaFilter().toUpperCase());
			} else {
				StringBuffer stringBuffer = new StringBuffer();
				stringBuffer.append(null != ab6301s00.getTipoEstSignaturaFilter()
						? ab6301s00.getTipoEstSignaturaFilter().toUpperCase() + "%" : "");
				stringBuffer.append(null != ab6301s00.getZonaSignaturaFilter()
						? "%" + ab6301s00.getZonaSignaturaFilter().toUpperCase() + "%" : "");
				stringBuffer.append(null != ab6301s00.getCorrelativoSignaturaFilter()
						? "%" + ab6301s00.getCorrelativoSignaturaFilter().toUpperCase() : "");
				params.add(stringBuffer.toString().replace("%%", "%"));
			}
			where.append(" AND t1.IDENTIFICADOR_ESTABLECIMIENTO IS NOT NULL");
		}
		if (ab6301s00 != null && ab6301s00.getDescrNombre() != null) {
			where.append(" AND UPPER(t1.DESC_NOMBRE) like ? ESCAPE  '\\'");
			if (startsWith) {
				params.add(ab6301s00.getDescrNombre().toUpperCase() + "%");
			} else {
				params.add("%" + ab6301s00.getDescrNombre().toUpperCase() + "%");
			}
			where.append(" AND t1.DESC_NOMBRE IS NOT NULL");
		}
		if (ab6301s00 != null && ab6301s00.getVisibleweb() != null) {
			where.append(" AND UPPER(t1.VISIBLEWEB) like ? ESCAPE  '\\'");
			if (startsWith) {
				params.add(ab6301s00.getVisibleweb().toUpperCase() + "%");
			} else {
				params.add("%" + ab6301s00.getVisibleweb().toUpperCase() + "%");
			}
			where.append(" AND t1.VISIBLEWEB IS NOT NULL");
		}
		if (ab6301s00 != null && ab6301s00.getTemporada() != null) {
			where.append(" AND UPPER(t1.TEMPORADA) like ? ESCAPE  '\\'");
			if (startsWith) {
				params.add(ab6301s00.getTemporada().toUpperCase() + "%");
			} else {
				params.add("%" + ab6301s00.getTemporada().toUpperCase() + "%");
			}
			where.append(" AND t1.TEMPORADA IS NOT NULL");
		}
		if (ab6301s00 != null && ab6301s00.getUrlweb() != null) {
			where.append(" AND UPPER(t1.URLWEB) like ? ESCAPE  '\\'");
			if (startsWith) {
				params.add(ab6301s00.getUrlweb().toUpperCase() + "%");
			} else {
				params.add("%" + ab6301s00.getUrlweb().toUpperCase() + "%");
			}
			where.append(" AND t1.URLWEB IS NOT NULL");
		}
		if (ab6301s00 != null && ab6301s00.getIdDefectos() != null) {
			where.append(" AND UPPER(t1.ID_DEFECTOS) like ? ESCAPE  '\\'");
			if (startsWith) {
				params.add(ab6301s00.getIdDefectos().toUpperCase() + "%");
			} else {
				params.add("%" + ab6301s00.getIdDefectos().toUpperCase() + "%");
			}
			where.append(" AND t1.ID_DEFECTOS IS NOT NULL");
		}
		if (ab6301s00 != null && ab6301s00.getNumUnidadesAlojamiento() != null) {
			where.append(" AND t1.NUM_UNIDADES_ALOJAMIENTO = ?");
			params.add(ab6301s00.getNumUnidadesAlojamiento());
		}
		if (ab6301s00 != null && ab6301s00.getObservaciones() != null) {
			where.append(" AND UPPER(t1.OBSERVACIONES) like ? ESCAPE  '\\'");
			if (startsWith) {
				params.add(ab6301s00.getObservaciones().toUpperCase() + "%");
			} else {
				params.add("%" + ab6301s00.getObservaciones().toUpperCase() + "%");
			}
			where.append(" AND t1.OBSERVACIONES IS NOT NULL");
		}
		if (ab6301s00 != null && ab6301s00.getFechaApertura() != null) {
			where.append(" AND t1.FECHA_APERTURA = ?");
			params.add(ab6301s00.getFechaApertura());
		}
		if (ab6301s00 != null && ab6301s00.getFechaBaja() != null) {
			where.append(" AND t1.FECHA_BAJA = ?");
			params.add(ab6301s00.getFechaBaja());
		}
		if (ab6301s00 != null && ab6301s00.getFechaInicierretemp() != null) {
			where.append(" AND t1.FECHA_INICIERRETEMP = ?");
			params.add(ab6301s00.getFechaInicierretemp());
		}
		if (ab6301s00 != null && ab6301s00.getFechaFincierretemp() != null) {
			where.append(" AND t1.FECHA_FINCIERRETEMP = ?");
			params.add(ab6301s00.getFechaFincierretemp());
		}
		if (ab6301s00 != null && ab6301s00.getFechaVctoCierre() != null) {
			where.append(" AND t1.FECHA_VCTO_CIERRE = ?");
			params.add(ab6301s00.getFechaVctoCierre());
		}
		if (ab6301s00 != null && ab6301s00.getFechaUltNotificacion() != null) {
			where.append(" AND t1.FECHA_ULT_NOTIFICACION = ?");
			params.add(ab6301s00.getFechaUltNotificacion());
		}
		if (ab6301s00 != null && ab6301s00.getFechaUltInspeccion() != null) {
			where.append(" AND t1.FECHA_ULT_INSPECCION = ?");
			params.add(ab6301s00.getFechaUltInspeccion());
		}
		if (ab6301s00 != null && ab6301s00.getFechaProInspeccion() != null) {
			where.append(" AND t1.FECHA_PRO_INSPECCION = ?");
			params.add(ab6301s00.getFechaProInspeccion());
		}
		if (ab6301s00 != null && ab6301s00.getFechaUltActualizacion() != null) {
			where.append(" AND t1.FECHA_ULT_ACTUALIZACION = ?");
			params.add(ab6301s00.getFechaUltActualizacion());
		}
		if (ab6301s00 != null && ab6301s00.getFechaClausura() != null) {
			where.append(" AND t1.FECHA_CLAUSURA = ?");
			params.add(ab6301s00.getFechaClausura());
		}
		if (ab6301s00 != null && ab6301s00.getFechaUltReforma() != null) {
			where.append(" AND t1.FECHA_ULT_REFORMA = ?");
			params.add(ab6301s00.getFechaUltReforma());
		}
		if (ab6301s00 != null && ab6301s00.getEliminado() != null) {
			where.append(" AND UPPER(t1.ELIMINADO) like ? ESCAPE  '\\'");
			if (startsWith) {
				params.add(ab6301s00.getEliminado().toUpperCase() + "%");
			} else {
				params.add("%" + ab6301s00.getEliminado().toUpperCase() + "%");
			}
			where.append(" AND t1.ELIMINADO IS NOT NULL");
		}
		if (ab6301s00 != null && ab6301s00.getExpedienteb29() != null) {
			where.append(" AND UPPER(t1.EXPEDIENTEB29) like ? ESCAPE  '\\'");
			if (startsWith) {
				params.add(ab6301s00.getExpedienteb29().toUpperCase() + "%");
			} else {
				params.add("%" + ab6301s00.getExpedienteb29().toUpperCase() + "%");
			}
			where.append(" AND t1.EXPEDIENTEB29 IS NOT NULL");
		}
		if (ab6301s00 != null && ab6301s00.getIdPortalS41() != null) {
			where.append(" AND t1.ID_PORTAL_S41 = ?");
			params.add(ab6301s00.getIdPortalS41());
		}
		if (ab6301s00 != null && ab6301s00.getUrlPortalS41() != null) {
			where.append(" AND UPPER(t1.URL_PORTAL_S41) like ? ESCAPE  '\\'");
			if (startsWith) {
				params.add(ab6301s00.getUrlPortalS41().toUpperCase() + "%");
			} else {
				params.add("%" + ab6301s00.getUrlPortalS41().toUpperCase() + "%");
			}
			where.append(" AND t1.URL_PORTAL_S41 IS NOT NULL");
		}
		if (ab6301s00 != null && ab6301s00.getFechaControlS41() != null) {
			where.append(" AND t1.FECHA_CONTROL_S41 = ?");
			params.add(ab6301s00.getFechaControlS41());
		}
		if (ab6301s00 != null && ab6301s00.getNumInstalacionAnterior() != null) {
			where.append(" AND UPPER(t1.NUM_INSTALACION_ANTERIOR) like ? ESCAPE  '\\'");
			if (startsWith) {
				params.add(ab6301s00.getNumInstalacionAnterior().toUpperCase() + "%");
			} else {
				params.add("%" + ab6301s00.getNumInstalacionAnterior().toUpperCase() + "%");
			}
			where.append(" AND t1.NUM_INSTALACION_ANTERIOR IS NOT NULL");
		}
		if (ab6301s00 != null && ab6301s00.getFechaInscripcion() != null) {
			where.append(" AND t1.FECHA_INSCRIPCION = ?");
			params.add(ab6301s00.getFechaInscripcion());
		}
		if (ab6301s00 != null && ab6301s00.getNumInstalacionWz() != null) {
			where.append(" AND UPPER(t1.NUM_INSTALACION_WZ) like ? ESCAPE  '\\'");
			if (startsWith) {
				params.add(ab6301s00.getNumInstalacionWz().toUpperCase() + "%");
			} else {
				params.add("%" + ab6301s00.getNumInstalacionWz().toUpperCase() + "%");
			}
			where.append(" AND t1.NUM_INSTALACION_WZ IS NOT NULL");
		}
		if (ab6301s00 != null && ab6301s00.getObservaciones2() != null) {
			where.append(" AND UPPER(t1.OBSERVACIONES2) like ? ESCAPE  '\\'");
			if (startsWith) {
				params.add(ab6301s00.getObservaciones2().toUpperCase() + "%");
			} else {
				params.add("%" + ab6301s00.getObservaciones2().toUpperCase() + "%");
			}
			where.append(" AND t1.OBSERVACIONES2 IS NOT NULL");
		}
		if (ab6301s00 != null && ab6301s00.getNotasMigracion() != null) {
			where.append(" AND UPPER(t1.NOTAS_MIGRACION) like ? ESCAPE  '\\'");
			if (startsWith) {
				params.add(ab6301s00.getNotasMigracion().toUpperCase() + "%");
			} else {
				params.add("%" + ab6301s00.getNotasMigracion().toUpperCase() + "%");
			}
			where.append(" AND t1.NOTAS_MIGRACION IS NOT NULL");
		}
		if (ab6301s00 != null && ab6301s00.getAgrupacion() != null) {
			where.append(" AND UPPER(t1.AGRUPACION) like ? ESCAPE  '\\'");
			if (startsWith) {
				params.add(ab6301s00.getAgrupacion().toUpperCase() + "%");
			} else {
				params.add("%" + ab6301s00.getAgrupacion().toUpperCase() + "%");
			}
			where.append(" AND t1.AGRUPACION IS NOT NULL");
		}
		if (ab6301s00 != null && ab6301s00.getRefCatastral() != null) {
			where.append(" AND UPPER(t1.REF_CATASTRAL) like ? ESCAPE  '\\'");
			if (startsWith) {
				params.add(ab6301s00.getRefCatastral().toUpperCase() + "%");
			} else {
				params.add("%" + ab6301s00.getRefCatastral().toUpperCase() + "%");
			}
			where.append(" AND t1.REF_CATASTRAL IS NOT NULL");
		}
		if (ab6301s00 != null && ab6301s00.getObsSegrespcivil() != null) {
			where.append(" AND UPPER(t1.OBS_SEGRESPCIVIL) like ? ESCAPE  '\\'");
			if (startsWith) {
				params.add(ab6301s00.getObsSegrespcivil().toUpperCase() + "%");
			} else {
				params.add("%" + ab6301s00.getObsSegrespcivil().toUpperCase() + "%");
			}
			where.append(" AND t1.OBS_SEGRESPCIVIL IS NOT NULL");
		}
		if (ab6301s00 != null && ab6301s00.getFechaRegistro() != null) {
			where.append(" AND t1.FECHA_REGISTRO = ?");
			params.add(ab6301s00.getFechaRegistro());
		}
		if (ab6301s00 != null && ab6301s00.getUsuarioRegistro() != null) {
			where.append(" AND UPPER(t1.USUARIO_REGISTRO) like ? ESCAPE  '\\'");
			if (startsWith) {
				params.add(ab6301s00.getUsuarioRegistro().toUpperCase() + "%");
			} else {
				params.add("%" + ab6301s00.getUsuarioRegistro().toUpperCase() + "%");
			}
			where.append(" AND t1.USUARIO_REGISTRO IS NOT NULL");
		}
		if (ab6301s00 != null && ab6301s00.getFechaUltmodificacion() != null) {
			where.append(" AND t1.FECHA_ULTMODIFICACION = ?");
			params.add(ab6301s00.getFechaUltmodificacion());
		}
		if (ab6301s00 != null && ab6301s00.getUsuarioUltmodificacion() != null) {
			where.append(" AND UPPER(t1.USUARIO_ULTMODIFICACION) like ? ESCAPE  '\\'");
			if (startsWith) {
				params.add(ab6301s00.getUsuarioUltmodificacion().toUpperCase() + "%");
			} else {
				params.add("%" + ab6301s00.getUsuarioUltmodificacion().toUpperCase() + "%");
			}
			where.append(" AND t1.USUARIO_ULTMODIFICACION IS NOT NULL");
		}
		if (ab6301s00 != null && ab6301s00.getEstablecimientoData() != null
				&& ab6301s00.getEstablecimientoData().getIdEstablecimiento() != null) {
			where.append(" AND t8.ID_ESTABLECIMIENTO = ?");
			params.add(ab6301s00.getEstablecimientoData().getIdEstablecimiento());
		}
		if (ab6301s00 != null && ab6301s00.getEstablecimientoData() != null
				&& ab6301s00.getEstablecimientoData().getFechaAnoConstruccion() != null) {
			where.append(" AND t8.FECHA_ANO_CONSTRUCCION = ?");
			params.add(ab6301s00.getEstablecimientoData().getFechaAnoConstruccion());
		}
		if (ab6301s00 != null && ab6301s00.getEstablecimientoData() != null
				&& ab6301s00.getEstablecimientoData().getFechaAnoRenovacion() != null) {
			where.append(" AND t8.FECHA_ANO_RENOVACION = ?");
			params.add(ab6301s00.getEstablecimientoData().getFechaAnoRenovacion());
		}
		if (ab6301s00 != null && ab6301s00.getEstablecimientoData() != null
				&& ab6301s00.getEstablecimientoData().getDerechoCocina() != null) {
			where.append(" AND t8.DERECHO_COCINA = ?");
			params.add(ab6301s00.getEstablecimientoData().getDerechoCocina());
		}
		if (ab6301s00 != null && ab6301s00.getEstablecimientoData() != null
				&& ab6301s00.getEstablecimientoData().getServicioComedor() != null) {
			where.append(" AND t8.SERVICIO_COMEDOR = ?");
			params.add(ab6301s00.getEstablecimientoData().getServicioComedor());
		}
		if (ab6301s00 != null && ab6301s00.getEstablecimientoData() != null
				&& ab6301s00.getEstablecimientoData().getNumSalones() != null) {
			where.append(" AND t8.NUM_SALONES = ?");
			params.add(ab6301s00.getEstablecimientoData().getNumSalones());
		}
		if (ab6301s00 != null && ab6301s00.getEstablecimientoData() != null
				&& ab6301s00.getEstablecimientoData().getNumSalonesComedor() != null) {
			where.append(" AND t8.NUM_SALONES_COMEDOR = ?");
			params.add(ab6301s00.getEstablecimientoData().getNumSalonesComedor());
		}
		if (ab6301s00 != null && ab6301s00.getEstablecimientoData() != null
				&& ab6301s00.getEstablecimientoData().getNumComedores() != null) {
			where.append(" AND t8.NUM_COMEDORES = ?");
			params.add(ab6301s00.getEstablecimientoData().getNumComedores());
		}
		if (ab6301s00 != null && ab6301s00.getEstablecimientoData() != null
				&& ab6301s00.getEstablecimientoData().getNumBanosGenerales() != null) {
			where.append(" AND t8.NUM_BAÑOS_GENERALES = ?");
			params.add(ab6301s00.getEstablecimientoData().getNumBanosGenerales());
		}
		if (ab6301s00 != null && ab6301s00.getEstablecimientoData() != null
				&& ab6301s00.getEstablecimientoData().getNumConjuntos() != null) {
			where.append(" AND t8.NUM_CONJUNTOS = ?");
			params.add(ab6301s00.getEstablecimientoData().getNumConjuntos());
		}
		if (ab6301s00 != null && ab6301s00.getEstablecimientoData() != null
				&& ab6301s00.getEstablecimientoData().getNumEstudios() != null) {
			where.append(" AND t8.NUM_ESTUDIOS = ?");
			params.add(ab6301s00.getEstablecimientoData().getNumEstudios());
		}
		if (ab6301s00 != null && ab6301s00.getEstablecimientoData() != null
				&& ab6301s00.getEstablecimientoData().getNumHabDoble() != null) {
			where.append(" AND t8.NUM_HAB_DOBLE = ?");
			params.add(ab6301s00.getEstablecimientoData().getNumHabDoble());
		}
		if (ab6301s00 != null && ab6301s00.getEstablecimientoData() != null
				&& ab6301s00.getEstablecimientoData().getNumHabIndividuales() != null) {
			where.append(" AND t8.NUM_HAB_INDIVIDUALES = ?");
			params.add(ab6301s00.getEstablecimientoData().getNumHabIndividuales());
		}
		if (ab6301s00 != null && ab6301s00.getEstablecimientoData() != null
				&& ab6301s00.getEstablecimientoData().getNumMaximoSupletorias() != null) {
			where.append(" AND t8.NUM_MAXIMO_SUPLETORIAS = ?");
			params.add(ab6301s00.getEstablecimientoData().getNumMaximoSupletorias());
		}
		if (ab6301s00 != null && ab6301s00.getEstablecimientoData() != null
				&& ab6301s00.getEstablecimientoData().getNumPlazas() != null) {
			where.append(" AND t8.NUM_PLAZAS = ?");
			params.add(ab6301s00.getEstablecimientoData().getNumPlazas());
		}
		if (ab6301s00 != null && ab6301s00.getEstablecimientoData() != null
				&& ab6301s00.getEstablecimientoData().getEdificioCatalogado() != null) {
			where.append(" AND t8.EDIFICIO_CATALOGADO = ?");
			params.add(ab6301s00.getEstablecimientoData().getEdificioCatalogado());
		}
		if (ab6301s00 != null && ab6301s00.getEstablecimientoData() != null
				&& ab6301s00.getEstablecimientoData().getNumHabMas4() != null) {
			where.append(" AND t8.NUM_HAB_MAS_4 = ?");
			params.add(ab6301s00.getEstablecimientoData().getNumHabMas4());
		}
		if (ab6301s00 != null && ab6301s00.getEstablecimientoData() != null
				&& ab6301s00.getEstablecimientoData().getNumHabMenos4() != null) {
			where.append(" AND t8.NUM_HAB_MENOS_4 = ?");
			params.add(ab6301s00.getEstablecimientoData().getNumHabMenos4());
		}
		if (ab6301s00 != null && ab6301s00.getEstablecimientoData() != null
				&& ab6301s00.getEstablecimientoData().getComparteViviendas() != null) {
			where.append(" AND t8.COMPARTE_VIVIENDAS = ?");
			params.add(ab6301s00.getEstablecimientoData().getComparteViviendas());
		}
		if (ab6301s00 != null && ab6301s00.getEstablecimientoData() != null
				&& ab6301s00.getEstablecimientoData().getNumHabDobleCs() != null) {
			where.append(" AND t8.NUM_HAB_DOBLE_CS = ?");
			params.add(ab6301s00.getEstablecimientoData().getNumHabDobleCs());
		}
		if (ab6301s00 != null && ab6301s00.getEstablecimientoData() != null
				&& ab6301s00.getEstablecimientoData().getNumApartamentos() != null) {
			where.append(" AND t8.NUM_APARTAMENTOS = ?");
			params.add(ab6301s00.getEstablecimientoData().getNumApartamentos());
		}
		if (ab6301s00 != null && ab6301s00.getEstablecimientoData() != null
				&& ab6301s00.getEstablecimientoData().getNumSuites() != null) {
			where.append(" AND t8.NUM_SUITES = ?");
			params.add(ab6301s00.getEstablecimientoData().getNumSuites());
		}
		if (ab6301s00 != null && ab6301s00.getEstablecimientoData() != null
				&& ab6301s00.getEstablecimientoData().getComparteInstal() != null) {
			where.append(" AND t8.COMPARTE_INSTAL = ?");
			params.add(ab6301s00.getEstablecimientoData().getComparteInstal());
		}
		if (ab6301s00 != null && ab6301s00.getEstablecimientoData() != null
				&& ab6301s00.getEstablecimientoData().getNumInstalComparte() != null) {
			where.append(" AND UPPER(t8.NUM_INSTAL_COMPARTE) like ? ESCAPE  '\\'");
			if (startsWith) {
				params.add(ab6301s00.getEstablecimientoData().getNumInstalComparte().toUpperCase() + "%");
			} else {
				params.add("%" + ab6301s00.getEstablecimientoData().getNumInstalComparte().toUpperCase() + "%");
			}
			where.append(" AND t8.NUM_INSTAL_COMPARTE IS NOT NULL");
		}
		if (ab6301s00 != null && ab6301s00.getEstablecimientoData() != null
				&& ab6301s00.getEstablecimientoData().getNumSupAcampada() != null) {
			where.append(" AND t8.NUM_SUP_ACAMPADA = ?");
			params.add(ab6301s00.getEstablecimientoData().getNumSupAcampada());
		}
		if (ab6301s00 != null && ab6301s00.getEstablecimientoData() != null
				&& ab6301s00.getEstablecimientoData().getBar() != null) {
			where.append(" AND t8.BAR = ?");
			params.add(ab6301s00.getEstablecimientoData().getBar());
		}
		if (ab6301s00 != null && ab6301s00.getEstablecimientoData() != null
				&& ab6301s00.getEstablecimientoData().getRestaurante() != null) {
			where.append(" AND t8.RESTAURANTE = ?");
			params.add(ab6301s00.getEstablecimientoData().getRestaurante());
		}
		if (ab6301s00 != null && ab6301s00.getEstablecimientoData() != null
				&& ab6301s00.getEstablecimientoData().getPiscina() != null) {
			where.append(" AND t8.PISCINA = ?");
			params.add(ab6301s00.getEstablecimientoData().getPiscina());
		}
		if (ab6301s00 != null && ab6301s00.getEstablecimientoData() != null
				&& ab6301s00.getEstablecimientoData().getNumTotParcelas() != null) {
			where.append(" AND t8.NUM_TOT_PARCELAS = ?");
			params.add(ab6301s00.getEstablecimientoData().getNumTotParcelas());
		}
		if (ab6301s00 != null && ab6301s00.getEstablecimientoData() != null
				&& ab6301s00.getEstablecimientoData().getNumParcelasAnf() != null) {
			where.append(" AND t8.NUM_PARCELAS_ANF = ?");
			params.add(ab6301s00.getEstablecimientoData().getNumParcelasAnf());
		}
		if (ab6301s00 != null && ab6301s00.getEstablecimientoData() != null
				&& ab6301s00.getEstablecimientoData().getNumParcelasAf() != null) {
			where.append(" AND t8.NUM_PARCELAS_AF = ?");
			params.add(ab6301s00.getEstablecimientoData().getNumParcelasAf());
		}
		if (ab6301s00 != null && ab6301s00.getEstablecimientoData() != null
				&& ab6301s00.getEstablecimientoData().getNumParcelasSa() != null) {
			where.append(" AND t8.NUM_PARCELAS_SA = ?");
			params.add(ab6301s00.getEstablecimientoData().getNumParcelasSa());
		}
		if (ab6301s00 != null && ab6301s00.getEstablecimientoData() != null
				&& ab6301s00.getEstablecimientoData().getIndicadorIa() != null) {
			where.append(" AND t8.INDICADOR_IA = ?");
			params.add(ab6301s00.getEstablecimientoData().getIndicadorIa());
		}
		if (ab6301s00 != null && ab6301s00.getEstablecimientoData() != null
				&& ab6301s00.getEstablecimientoData().getFechaControlIa() != null) {
			where.append(" AND t8.FECHA_CONTROL_IA = ?");
			params.add(ab6301s00.getEstablecimientoData().getFechaControlIa());
		}
		if (ab6301s00 != null && ab6301s00.getEstablecimientoData() != null
				&& ab6301s00.getEstablecimientoData().getRequisitos() != null) {
			where.append(" AND UPPER(t8.REQUISITOS) like ? ESCAPE  '\\'");
			if (startsWith) {
				params.add(ab6301s00.getEstablecimientoData().getRequisitos().toUpperCase() + "%");
			} else {
				params.add("%" + ab6301s00.getEstablecimientoData().getRequisitos().toUpperCase() + "%");
			}
			where.append(" AND t8.REQUISITOS IS NOT NULL");
		}
		if (ab6301s00 != null && ab6301s00.getEstablecimientoData() != null
				&& ab6301s00.getEstablecimientoData().getNumControl() != null) {
			where.append(" AND t8.NUM_CONTROL = ?");
			params.add(ab6301s00.getEstablecimientoData().getNumControl());
		}
		if (ab6301s00 != null && ab6301s00.getEstablecimientoData() != null
				&& ab6301s00.getEstablecimientoData().getFechaAntControl() != null) {
			where.append(" AND t8.FECHA_ANT_CONTROL = ?");
			params.add(ab6301s00.getEstablecimientoData().getFechaAntControl());
		}
		if (ab6301s00 != null && ab6301s00.getEstablecimientoData() != null
				&& ab6301s00.getEstablecimientoData().getNumHabitaciones() != null) {
			where.append(" AND UPPER(t8.NUM_HABITACIONES) like ? ESCAPE  '\\'");
			if (startsWith) {
				params.add(ab6301s00.getEstablecimientoData().getNumHabitaciones().toUpperCase() + "%");
			} else {
				params.add("%" + ab6301s00.getEstablecimientoData().getNumHabitaciones().toUpperCase() + "%");
			}
			where.append(" AND t8.NUM_HABITACIONES IS NOT NULL");
		}
		if (ab6301s00 != null && ab6301s00.getEstablecimientoData() != null
				&& ab6301s00.getEstablecimientoData().getNumResidentesPerm() != null) {
			where.append(" AND UPPER(t8.NUM_RESIDENTES_PERM) like ? ESCAPE  '\\'");
			if (startsWith) {
				params.add(ab6301s00.getEstablecimientoData().getNumResidentesPerm().toUpperCase() + "%");
			} else {
				params.add("%" + ab6301s00.getEstablecimientoData().getNumResidentesPerm().toUpperCase() + "%");
			}
			where.append(" AND t8.NUM_RESIDENTES_PERM IS NOT NULL");
		}
		if (ab6301s00 != null && ab6301s00.getEstablecimientoData() != null
				&& ab6301s00.getEstablecimientoData().getSupTotHabitac() != null) {
			where.append(" AND UPPER(t8.SUP_TOT_HABITAC) like ? ESCAPE  '\\'");
			if (startsWith) {
				params.add(ab6301s00.getEstablecimientoData().getSupTotHabitac().toUpperCase() + "%");
			} else {
				params.add("%" + ab6301s00.getEstablecimientoData().getSupTotHabitac().toUpperCase() + "%");
			}
			where.append(" AND t8.SUP_TOT_HABITAC IS NOT NULL");
		}
		if (ab6301s00 != null && ab6301s00.getEstablecimientoData() != null
				&& ab6301s00.getEstablecimientoData().getSupRestoDepen() != null) {
			where.append(" AND t8.SUP_RESTO_DEPEN = ? ");
			params.add(ab6301s00.getEstablecimientoData().getSupRestoDepen());
		}
		if (ab6301s00 != null && ab6301s00.getEstablecimientoData() != null
				&& ab6301s00.getEstablecimientoData().getFechaRegistro() != null) {
			where.append(" AND t8.FECHA_REGISTRO = ?");
			params.add(ab6301s00.getEstablecimientoData().getFechaRegistro());
		}
		if (ab6301s00 != null && ab6301s00.getEstablecimientoData() != null
				&& ab6301s00.getEstablecimientoData().getUsuarioRegistro() != null) {
			where.append(" AND UPPER(t8.USUARIO_REGISTRO) like ? ESCAPE  '\\'");
			if (startsWith) {
				params.add(ab6301s00.getEstablecimientoData().getUsuarioRegistro().toUpperCase() + "%");
			} else {
				params.add("%" + ab6301s00.getEstablecimientoData().getUsuarioRegistro().toUpperCase() + "%");
			}
			where.append(" AND t8.USUARIO_REGISTRO IS NOT NULL");
		}
		if (ab6301s00 != null && ab6301s00.getEstablecimientoData() != null
				&& ab6301s00.getEstablecimientoData().getFechaUltmodificacion() != null) {
			where.append(" AND t8.FECHA_ULTMODIFICACION = ?");
			params.add(ab6301s00.getEstablecimientoData().getFechaUltmodificacion());
		}
		if (ab6301s00 != null && ab6301s00.getEstablecimientoData() != null
				&& ab6301s00.getEstablecimientoData().getUsuarioUltmodificacion() != null) {
			where.append(" AND UPPER(t8.USUARIO_ULTMODIFICACION) like ? ESCAPE  '\\'");
			if (startsWith) {
				params.add(ab6301s00.getEstablecimientoData().getUsuarioUltmodificacion().toUpperCase() + "%");
			} else {
				params.add("%" + ab6301s00.getEstablecimientoData().getUsuarioUltmodificacion().toUpperCase() + "%");
			}
			where.append(" AND t8.USUARIO_ULTMODIFICACION IS NOT NULL");
		}
		if (ab6301s00 != null && ab6301s00.getFranquicia() != null
				&& ab6301s00.getFranquicia().getIdEstablecimiento() != null) {
			where.append(" AND t9.ID_ESTABLECIMIENTO = ?");
			params.add(ab6301s00.getFranquicia().getIdEstablecimiento());
		}
		if (ab6301s00 != null && ab6301s00.getFranquicia() != null
				&& ab6301s00.getFranquicia().getFranquicia() != null) {
			where.append(" AND t9.FRANQUICIA = ?");
			params.add(ab6301s00.getFranquicia().getFranquicia());
		}
		if (ab6301s00 != null && ab6301s00.getFranquicia() != null
				&& ab6301s00.getFranquicia().getTipoFranquicia() != null
				&& ab6301s00.getFranquicia().getTipoFranquicia().getIdFranquicia() != null) {
			where.append(" AND t9.ID_FRANQUICIA = ?");
			params.add(ab6301s00.getFranquicia().getTipoFranquicia().getIdFranquicia());
		}
		if (ab6301s00 != null && ab6301s00.getFranquicia() != null
				&& ab6301s00.getFranquicia().getIndonline() != null) {
			where.append(" AND t9.INDONLINE = ?");
			params.add(ab6301s00.getFranquicia().getIndonline());
		}
		if (ab6301s00 != null && ab6301s00.getFranquicia() != null
				&& ab6301s00.getFranquicia().getIdInstalOfiPrincipal() != null) {
			where.append(" AND UPPER(t9.ID_INSTAL_OFI_PRINCIPAL) like ? ESCAPE  '\\'");
			if (startsWith) {
				params.add(ab6301s00.getFranquicia().getIdInstalOfiPrincipal().toUpperCase() + "%");
			} else {
				params.add("%" + ab6301s00.getFranquicia().getIdInstalOfiPrincipal().toUpperCase() + "%");
			}
			where.append(" AND t9.ID_INSTAL_OFI_PRINCIPAL IS NOT NULL");
		}
		if (ab6301s00 != null && ab6301s00.getFranquicia() != null
				&& ab6301s00.getFranquicia().getIdOrigenOfiPrincipal() != null) {
			where.append(" AND UPPER(t9.ID_ORIGEN_OFI_PRINCIPAL) like ? ESCAPE  '\\'");
			if (startsWith) {
				params.add(ab6301s00.getFranquicia().getIdOrigenOfiPrincipal().toUpperCase() + "%");
			} else {
				params.add("%" + ab6301s00.getFranquicia().getIdOrigenOfiPrincipal().toUpperCase() + "%");
			}
			where.append(" AND t9.ID_ORIGEN_OFI_PRINCIPAL IS NOT NULL");
		}
		if (ab6301s00 != null && ab6301s00.getFranquicia() != null
				&& ab6301s00.getFranquicia().getIdTipoCie() != null) {
			where.append(" AND UPPER(t9.ID_TIPO_CIE) like ? ESCAPE  '\\'");
			if (startsWith) {
				params.add(ab6301s00.getFranquicia().getIdTipoCie().toUpperCase() + "%");
			} else {
				params.add("%" + ab6301s00.getFranquicia().getIdTipoCie().toUpperCase() + "%");
			}
			where.append(" AND t9.ID_TIPO_CIE IS NOT NULL");
		}
		if (ab6301s00 != null && ab6301s00.getFranquicia() != null
				&& ab6301s00.getFranquicia().getEtiquetaCie() != null) {
			where.append(" AND UPPER(t9.ETIQUETA_CIE) like ? ESCAPE  '\\'");
			if (startsWith) {
				params.add(ab6301s00.getFranquicia().getEtiquetaCie().toUpperCase() + "%");
			} else {
				params.add("%" + ab6301s00.getFranquicia().getEtiquetaCie().toUpperCase() + "%");
			}
			where.append(" AND t9.ETIQUETA_CIE IS NOT NULL");
		}
		if (ab6301s00 != null && ab6301s00.getFranquicia() != null
				&& ab6301s00.getFranquicia().getRegistroFianza() != null) {
			where.append(" AND UPPER(t9.REGISTRO_FIANZA) like ? ESCAPE  '\\'");
			if (startsWith) {
				params.add(ab6301s00.getFranquicia().getRegistroFianza().toUpperCase() + "%");
			} else {
				params.add("%" + ab6301s00.getFranquicia().getRegistroFianza().toUpperCase() + "%");
			}
			where.append(" AND t9.REGISTRO_FIANZA IS NOT NULL");
		}
		if (ab6301s00 != null && ab6301s00.getFranquicia() != null
				&& ab6301s00.getFranquicia().getObservFianza() != null) {
			where.append(" AND UPPER(t9.OBSERV_FIANZA) like ? ESCAPE  '\\'");
			if (startsWith) {
				params.add(ab6301s00.getFranquicia().getObservFianza().toUpperCase() + "%");
			} else {
				params.add("%" + ab6301s00.getFranquicia().getObservFianza().toUpperCase() + "%");
			}
			where.append(" AND t9.OBSERV_FIANZA IS NOT NULL");
		}
		if (ab6301s00 != null && ab6301s00.getFranquicia() != null
				&& ab6301s00.getFranquicia().getObservSrc() != null) {
			where.append(" AND UPPER(t9.OBSERV_SRC) like ? ESCAPE  '\\'");
			if (startsWith) {
				params.add(ab6301s00.getFranquicia().getObservSrc().toUpperCase() + "%");
			} else {
				params.add("%" + ab6301s00.getFranquicia().getObservSrc().toUpperCase() + "%");
			}
			where.append(" AND t9.OBSERV_SRC IS NOT NULL");
		}
		if (ab6301s00 != null && ab6301s00.getFranquicia() != null
				&& ab6301s00.getFranquicia().getIdPrimeraSucursal() != null) {
			where.append(" AND UPPER(t9.ID_PRIMERA_SUCURSAL) like ? ESCAPE  '\\'");
			if (startsWith) {
				params.add(ab6301s00.getFranquicia().getIdPrimeraSucursal().toUpperCase() + "%");
			} else {
				params.add("%" + ab6301s00.getFranquicia().getIdPrimeraSucursal().toUpperCase() + "%");
			}
			where.append(" AND t9.ID_PRIMERA_SUCURSAL IS NOT NULL");
		}
		if (ab6301s00 != null && ab6301s00.getFranquicia() != null && ab6301s00.getFranquicia().getNumCie() != null) {
			where.append(" AND UPPER(t9.NUM_CIE) like ? ESCAPE  '\\'");
			if (startsWith) {
				params.add(ab6301s00.getFranquicia().getNumCie().toUpperCase() + "%");
			} else {
				params.add("%" + ab6301s00.getFranquicia().getNumCie().toUpperCase() + "%");
			}
			where.append(" AND t9.NUM_CIE IS NOT NULL");
		}
		if (ab6301s00 != null && ab6301s00.getFranquicia() != null
				&& ab6301s00.getFranquicia().getFechaRegistro() != null) {
			where.append(" AND t9.FECHA_REGISTRO = ?");
			params.add(ab6301s00.getFranquicia().getFechaRegistro());
		}
		if (ab6301s00 != null && ab6301s00.getFranquicia() != null
				&& ab6301s00.getFranquicia().getUsuarioRegistro() != null) {
			where.append(" AND UPPER(t9.USUARIO_REGISTRO) like ? ESCAPE  '\\'");
			if (startsWith) {
				params.add(ab6301s00.getFranquicia().getUsuarioRegistro().toUpperCase() + "%");
			} else {
				params.add("%" + ab6301s00.getFranquicia().getUsuarioRegistro().toUpperCase() + "%");
			}
			where.append(" AND t9.USUARIO_REGISTRO IS NOT NULL");
		}
		if (ab6301s00 != null && ab6301s00.getFranquicia() != null
				&& ab6301s00.getFranquicia().getFechaUltmodificacion() != null) {
			where.append(" AND t9.FECHA_ULTMODIFICACION = ?");
			params.add(ab6301s00.getFranquicia().getFechaUltmodificacion());
		}
		if (ab6301s00 != null && ab6301s00.getFranquicia() != null
				&& ab6301s00.getFranquicia().getUsuarioUltmodificacion() != null) {
			where.append(" AND UPPER(t9.USUARIO_ULTMODIFICACION) like ? ESCAPE  '\\'");
			if (startsWith) {
				params.add(ab6301s00.getFranquicia().getUsuarioUltmodificacion().toUpperCase() + "%");
			} else {
				params.add("%" + ab6301s00.getFranquicia().getUsuarioUltmodificacion().toUpperCase() + "%");
			}
			where.append(" AND t9.USUARIO_ULTMODIFICACION IS NOT NULL");
		}
		if (ab6301s00 != null && ab6301s00.getAperturaDesde() != null) {
			where.append(" AND t1.FECHA_APERTURA >= ? ");
			params.add(ab6301s00.getAperturaDesde());
		}
		if (ab6301s00 != null && ab6301s00.getAperturaHasta() != null) {
			where.append(" AND t1.FECHA_APERTURA <= ? ");
			params.add(ab6301s00.getAperturaHasta());
		}
		if (ab6301s00 != null && ab6301s00.getUltimaInspeccionDesde() != null) {
			where.append(" AND t1.FECHA_ULT_INSPECCION >= ? ");
			params.add(ab6301s00.getUltimaInspeccionDesde());
		}
		if (ab6301s00 != null && ab6301s00.getUltimaInspeccionHasta() != null) {
			where.append(" AND t1.FECHA_ULT_INSPECCION <= ? ");
			params.add(ab6301s00.getUltimaInspeccionHasta());
		}
		if (ab6301s00 != null && ab6301s00.getUltimaModificacionDesde() != null) {
			where.append(" AND t1.FECHA_ULTMODIFICACION >= ? ");
			params.add(ab6301s00.getUltimaModificacionDesde());
		}
		if (ab6301s00 != null && ab6301s00.getUltimaModificacionHasta() != null) {
			where.append(" AND t1.FECHA_ULTMODIFICACION <= ? ");
			params.add(ab6301s00.getUltimaModificacionHasta());
		}
		/*
		 * if (ab6301s00 != null && ab6301s00.getIncluirSucursales() != null) {
		 * where.append(" AND = ? ");
		 * params.add(ab6301s00.getIncluirSucursales()); }
		 */
		if (ab6301s00 != null && ab6301s00.getCIE() != null) {
			where.append(" AND t9.NUM_CIE= ? ");
			params.add(ab6301s00.getCIE());
		}
		if (ab6301s00 != null && ab6301s00.getMostrar() != null) {
			if (ab6301s00.getMostrar() == Constantes.ACTIVOS) {
				where.append(" AND T1.FECHA_BAJA IS NULL");

			} else if (ab6301s00.getMostrar() == Constantes.BAJA) {
				where.append(" AND t1.FECHA_BAJA IS NOT NULL ");
			}
		}

		if (ab6301s00 != null && ab6301s00.getTelefonoBusqueda() != null) {
			where.append(" AND (vs10.TELEFONO = ? OR t1.TELEFONO = ?)");
			params.add(ab6301s00.getTelefonoBusqueda());
			params.add(ab6301s00.getTelefonoBusqueda());
		}

		if (ab6301s00 != null && ab6301s00.getCorreoElectronicoBusqueda() != null) {
			where.append(" AND (vs10.EMAIL = ? OR t1.EMAIL = ?)");
			params.add(ab6301s00.getCorreoElectronicoBusqueda());
			params.add(ab6301s00.getCorreoElectronicoBusqueda());
		}

		if (ab6301s00 != null && ab6301s00.getDatosTerceros() != null
				&& ab6301s00.getDatosTerceros().getDocumento() != null) {
			where.append(" AND vs10.DOCUMENTO = ? ");
			params.add(ab6301s00.getDatosTerceros().getDocumento());
		}

		if (ab6301s00 != null && ab6301s00.getDatosTerceros() != null
				&& ab6301s00.getDatosTerceros().getNombre() != null) {

			where.append(
					" AND UPPER(vs10.NOMBRE || ' ' || vs10.APELLIDO1 || ' ' || vs10.APELLIDO2) LIKE UPPER(?) ESCAPE  '\\'");
			if (startsWith) {
				params.add(ab6301s00.getDatosTerceros().getNombre().toUpperCase() + "%");
			} else {
				params.add("%" + ab6301s00.getDatosTerceros().getNombre().toUpperCase() + "%");
			}
		}

		if (ab6301s00 != null && ab6301s00.getDatosDirecciones() != null
				&& ab6301s00.getDatosDirecciones().getIdProvincia() != null) {
			where.append(" AND   t36.ID_PROVINCIA = ?");
			params.add(ab6301s00.getDatosDirecciones().getIdProvincia());
		}

		if (ab6301s00 != null && ab6301s00.getDatosDirecciones() != null
				&& ab6301s00.getDatosDirecciones().getIdMunicipio() != null) {
			where.append(" AND   t36.ID_MUNICIPIO = ?");
			params.add(ab6301s00.getDatosDirecciones().getIdMunicipio());
		}

		if (ab6301s00 != null && ab6301s00.getDatosDirecciones() != null
				&& ab6301s00.getDatosDirecciones().getIdLocalidad() != null) {
			where.append(" AND   t36.ID_LOCALIDAD = ?");
			params.add(ab6301s00.getDatosDirecciones().getIdLocalidad());
		}

		if (ab6301s00 != null && ab6301s00.getDatosDirecciones() != null
				&& ab6301s00.getDatosDirecciones().getNumero() != null) {
			where.append(" AND   t36.NUMERO = ?");
			params.add(ab6301s00.getDatosDirecciones().getNumero());
		}

		if (ab6301s00 != null && ab6301s00.getDatosDirecciones() != null
				&& ab6301s00.getDatosDirecciones().getDireccion() != null) {

			where.append(" AND UPPER(t36.DIRECCION) like UPPER(?) ESCAPE  '\\'");
			if (startsWith) {
				params.add(ab6301s00.getDatosDirecciones().getDireccion().toUpperCase() + "%");
			} else {
				params.add("%" + ab6301s00.getDatosDirecciones().getDireccion().toUpperCase() + "%");
			}
			where.append(" AND t36.DIRECCION IS NOT NULL");

		}

		/*
		 * if (ab6301s00 != null && ab6301s00.getDatosDirecciones() != null &&
		 * ab6301s00.getDatosDirecciones().getDireccion() != null) {
		 * where.append(" AND   t36.DIRECCION = ?");
		 * params.add(ab6301s00.getDatosDirecciones().getDireccion()); }
		 */

		if (ab6301s00 != null && ab6301s00.getDatosDirecciones() != null
				&& ab6301s00.getDatosDirecciones().getEscalera() != null) {
			where.append(" AND   t36.ESCALERA = ?");
			params.add(ab6301s00.getDatosDirecciones().getEscalera());
		}
		if (ab6301s00 != null && ab6301s00.getDatosDirecciones() != null
				&& ab6301s00.getDatosDirecciones().getPiso() != null) {
			where.append(" AND   t36.PISO = ?");
			params.add(ab6301s00.getDatosDirecciones().getPiso());
		}
		if (ab6301s00 != null && ab6301s00.getDatosDirecciones() != null
				&& ab6301s00.getDatosDirecciones().getLetra() != null) {
			where.append(" AND   t36.LETRA = ?");
			params.add(ab6301s00.getDatosDirecciones().getLetra());
		}
		if (ab6301s00 != null && ab6301s00.getDatosDirecciones() != null
				&& ab6301s00.getDatosDirecciones().getCodigoPostal() != null) {
			where.append(" AND   t36.CODIGO_POSTAL = ?");
			params.add(ab6301s00.getDatosDirecciones().getCodigoPostal());
		}
		// Custom
		if (ab6301s00 != null && ab6301s00.getAutocompleteEstablecimiento() != null) {
			where.append(
					" AND UPPER(t1.IDENTIFICADOR_ESTABLECIMIENTO||' - '||t1.DESC_NOMBRE) like UPPER(?) ESCAPE  '\\'");
			if (startsWith) {
				params.add(ab6301s00.getAutocompleteEstablecimiento() + "%");
			} else {
				params.add("%" + ab6301s00.getAutocompleteEstablecimiento() + "%");
			}
			where.append(" AND t1.IDENTIFICADOR_ESTABLECIMIENTO IS NOT NULL");
		}
		if (ab6301s00 != null && ab6301s00.getTipoRegistro() != null) {
			where.append(" AND t1.TIPO_REGISTRO = ?");
			params.add(ab6301s00.getTipoRegistro());
		}
		// t1.TIPO_REGISTRO

		Map<String, Object> mapWhere = new HashMap<String, Object>();
		mapWhere.put("query", where);
		mapWhere.put("params", params);

		return mapWhere;
	}
	// CHECKSTYLE:ON CyclomaticComplexity - GeneraciÃ³n de cÃ³digo de UDA

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

	@Override
	public Establecimiento updateDatosEspecificosEstablecimiento(Establecimiento establecimiento) {

		String query = "UPDATE AB6301T00 SET NUM_UNIDADES_ALOJAMIENTO=?, PERIODO_PUENTES=?, PERIODO_VACACIONES=?, PERIODO_VERANO=?, SIN_PERIODO_PREF=?, FECHA_ULTMODIFICACION=SYSDATE, USUARIO_ULTMODIFICACION=? WHERE ID_ESTABLECIMIENTO=?";

		this.jdbcTemplate.update(query, establecimiento.getNumUnidadesAlojamiento(),
				establecimiento.getPeriodoPuentes(), establecimiento.getPeriodoVacaciones(),
				establecimiento.getPeriodoVerano(), establecimiento.getSinPeriodoPref(),
				PermisosXLNETS.getUserConnected(), establecimiento.getIdEstablecimiento());
		return establecimiento;
	}

	@Override
	public Establecimiento updateDatosEspecificosEstablecimientoData(Establecimiento establecimiento) {

		// String query = "UPDATE AB6321S00 SET NUM_BAÑOS_GENERALES=?,
		// NUM_PLAZAS=?, NUM_HABITACIONES=?, NUM_RESIDENTES_PERM=?,
		// SUPERFICIE_TOTAL=?, SUP_RESTO_DEPEN=?, DISPONE_COCINA=?,
		// DISPONE_SALON=? WHERE ID_ESTABLECIMIENTO=?";
		//
		// this.jdbcTemplate.update(query,
		// establecimiento.getEstablecimientoData().getNumBanosGenerales(),
		// establecimiento.getEstablecimientoData().getNumPlazas(),
		// establecimiento.getEstablecimientoData().getNumHabitaciones(),
		// establecimiento.getEstablecimientoData().getNumResidentesPerm(),
		// establecimiento.getEstablecimientoData().getSuperficieTotal(),
		// establecimiento.getEstablecimientoData().getSupRestoDepen(),
		// establecimiento.getEstablecimientoData().getDisponeCocina(),
		// establecimiento.getEstablecimientoData().getDisponeSalon(),
		// establecimiento.getIdEstablecimiento());
		//
		// return establecimiento;

		StringBuilder sql = new StringBuilder(
				"UPDATE AB6321S00 SET NUM_PLAZAS=?, NUM_HABITACIONES=?, NUM_BAÑOS_GENERALES=?, SUPERFICIE_TOTAL=?, SUP_RESTO_DEPEN=?, DISPONE_COCINA=?, DISPONE_SALON=?");

		// List<Object> params = new ArrayList<Object>();

		// params.add(establecimiento.getEstablecimientoData().getNumPlazas());
		// params.add(establecimiento.getEstablecimientoData().getNumHabitaciones());
		// params.add(establecimiento.getEstablecimientoData().getNumBanosGenerales());
		// params.add(establecimiento.getEstablecimientoData().getSuperficieTotal());
		// params.add(establecimiento.getEstablecimientoData().getSupRestoDepen());
		// params.add(establecimiento.getEstablecimientoData().getDisponeCocina());
		// params.add(establecimiento.getEstablecimientoData().getDisponeSalon());

		boolean esp = false;
		if (establecimiento.getTipoEstablecimiento() != null) {

			if (Constantes.HABITACIONES_CASAS_PARTICULARES
					.equals(establecimiento.getTipoEstablecimiento().getIdTipoEstablecimiento())) {

				esp = true;

				sql.append(", NUM_RESIDENTES_PERM=?, NUM_DORM_USUARIO=?, NUM_DORM_RESID=?");
				// params.add(establecimiento.getEstablecimientoData().getNumResidentesPerm());
				// params.add(establecimiento.getEstablecimientoData().getNumDormitoriosUsuarios());
				// params.add(establecimiento.getEstablecimientoData().getNumDormitoriosResidentes());
			}
		}

		sql.append(", FECHA_ULTMODIFICACION=SYSDATE, USUARIO_ULTMODIFICACION=? WHERE ID_ESTABLECIMIENTO=? ");
		// params.add(PermisosXLNETS.getUserConnected().toString());
		// params.add(establecimiento.getIdEstablecimiento());

		// this.jdbcTemplate.update(sql.toString(), params);

		if (esp) {
			this.jdbcTemplate.update(sql.toString(), establecimiento.getEstablecimientoData().getNumPlazas(),
					establecimiento.getEstablecimientoData().getNumHabitaciones(),
					establecimiento.getEstablecimientoData().getNumBanosGenerales(),
					establecimiento.getEstablecimientoData().getSuperficieTotal(),
					establecimiento.getEstablecimientoData().getSupRestoDepen(),
					establecimiento.getEstablecimientoData().getDisponeCocina(),
					establecimiento.getEstablecimientoData().getDisponeSalon(),
					establecimiento.getEstablecimientoData().getNumResidentesPerm(),
					establecimiento.getEstablecimientoData().getNumDormitoriosUsuarios(),
					establecimiento.getEstablecimientoData().getNumDormitoriosResidentes(),
					PermisosXLNETS.getUserConnected(), establecimiento.getIdEstablecimiento());
		} else {
			this.jdbcTemplate.update(sql.toString(), establecimiento.getEstablecimientoData().getNumPlazas(),
					establecimiento.getEstablecimientoData().getNumHabitaciones(),
					establecimiento.getEstablecimientoData().getNumBanosGenerales(),
					establecimiento.getEstablecimientoData().getSuperficieTotal(),
					establecimiento.getEstablecimientoData().getSupRestoDepen(),
					establecimiento.getEstablecimientoData().getDisponeCocina(),
					establecimiento.getEstablecimientoData().getDisponeSalon(), PermisosXLNETS.getUserConnected(),
					establecimiento.getIdEstablecimiento());
		}

		return establecimiento;
	}

	@Override
	public Establecimiento updateDatosEspecificosDispensasEstablecimiento(Establecimiento establecimiento) {
		String query = "UPDATE AB6320T00 SET FECHA_DISPENSA=?, OBSERVACIONES_DESC_ES=?, OBSERVACIONES_DESC_EU=?, FECHA_ULTMODIFICACION=SYSDATE, USUARIO_ULTMODIFICACION=? WHERE ID_ESTABLECIMIENTO=?";

		Object fechaDispensaAux = null;
		Object descDispensaEsAux = null;
		Object descDispensaEuAux = null;

		if (establecimiento.getEstablecimientoData() != null
				&& establecimiento.getEstablecimientoData().getDispensaEstablecimiento() != null) {

			if (establecimiento.getEstablecimientoData().getDispensaEstablecimiento().getFechaDispensa() != null) {
				fechaDispensaAux = establecimiento.getEstablecimientoData().getDispensaEstablecimiento()
						.getFechaDispensa();
			}

			if (establecimiento.getEstablecimientoData().getDispensaEstablecimiento()
					.getObservacionesDescEs() != null) {
				descDispensaEsAux = establecimiento.getEstablecimientoData().getDispensaEstablecimiento()
						.getObservacionesDescEs();
			}

			if (establecimiento.getEstablecimientoData().getDispensaEstablecimiento()
					.getObservacionesDescEu() != null) {
				descDispensaEuAux = establecimiento.getEstablecimientoData().getDispensaEstablecimiento()
						.getObservacionesDescEu();
			}

		}

		this.jdbcTemplate.update(query, fechaDispensaAux, descDispensaEsAux, descDispensaEuAux,
				PermisosXLNETS.getUserConnected(), establecimiento.getIdEstablecimiento());

		return establecimiento;
	}

	@Override
	public Establecimiento updateDatosEmpresaEstablecimiento(Establecimiento establecimiento) throws Exception {

		String query = "UPDATE AB6301T00 SET ID_TIPO_ESTABLECIMIENTO=?, DESC_NOMBRE=?, ID_MODALIDAD=?, ID_CATEGORIAS=?, ID_GRUPO=?, ID_ESPECIALIDAD=?, NUM_INSTALACION_ANTERIOR=?, URLWEB=?, TELEFONO=?, EMAIL=?, REF_CATASTRAL=?, FECHA_INSCRIPCION=?, FECHA_APERTURA=?, FECHA_INICIERRETEMP=?, FECHA_FINCIERRETEMP=?, FECHA_VCTO_CIERRE=?, FECHA_BAJA=?, FECHA_ULTMODIFICACION=SYSDATE, USUARIO_ULTMODIFICACION=?, FECHA_ULT_REFORMA=?, FECHA_ULT_INSPECCION=?, TEMPORADA=?, VISIBLEWEB=?, OBSERVACIONES=? WHERE ID_ESTABLECIMIENTO=?";

		Object establecimientoIdModalidadAux = null;
		if (establecimiento.getModalidad() != null && establecimiento.getModalidad().getIdModalidad() != null) {
			establecimientoIdModalidadAux = establecimiento.getModalidad().getIdModalidad();
		}

		Object establecimientoIdCategoriaAux = null;
		if (establecimiento.getCategoria() != null && establecimiento.getCategoria().getIdCategorias() != null) {
			establecimientoIdCategoriaAux = establecimiento.getCategoria().getIdCategorias();
		}

		Object establecimientoIdGrupoAux = null;
		if (establecimiento.getGrupo() != null && establecimiento.getGrupo().getIdGrupo() != null) {
			establecimientoIdGrupoAux = establecimiento.getGrupo().getIdGrupo();
		}

		Object establecimientoIdEspecialidadAux = null;
		if (establecimiento.getEspecialidad() != null
				&& establecimiento.getEspecialidad().getIdEspecialidad() != null) {
			establecimientoIdEspecialidadAux = establecimiento.getEspecialidad().getIdEspecialidad();
		}

		int resultado = this.jdbcTemplate.update(query,
				establecimiento.getTipoEstablecimiento().getIdTipoEstablecimiento(), establecimiento.getDescrNombre(),
				establecimientoIdModalidadAux, establecimientoIdCategoriaAux, establecimientoIdGrupoAux,
				establecimientoIdEspecialidadAux, establecimiento.getNumInstalacionAnterior(),
				establecimiento.getUrlweb(), establecimiento.getTelefono(), establecimiento.getCorreoElectronico(),
				establecimiento.getRefCatastral(), establecimiento.getFechaInscripcion(),
				establecimiento.getFechaApertura(), establecimiento.getFechaInicierretemp(),
				establecimiento.getFechaFincierretemp(), establecimiento.getFechaVctoCierre(),
				establecimiento.getFechaBaja(), PermisosXLNETS.getUserConnected(), establecimiento.getFechaUltReforma(),
				establecimiento.getFechaUltInspeccion(), establecimiento.getTemporada(),
				establecimiento.getVisibleweb(), establecimiento.getObservaciones(),
				establecimiento.getIdEstablecimiento());

		if (resultado == 1) {

			return establecimiento;

		} else {

			throw new Exception("Error update BD");

		}

	}

	@Override
	public Establecimiento updateDatosEmpresaEstablecimientoData(Establecimiento establecimiento) throws Exception {

		if (null != establecimiento.getEstablecimientoData()
				&& null != establecimiento.getEstablecimientoData().getIdEstablecimiento()
				&& establecimiento.getEstablecimientoData().getIdEstablecimiento() > 0) {

			String query = "UPDATE AB6321S00 SET FECHA_ANO_CONSTRUCCION=?, FECHA_ULTMODIFICACION=SYSDATE, USUARIO_ULTMODIFICACION=? WHERE ID_ESTABLECIMIENTO=?";

			Object fechaAnoConstruccionAux = null;
			if (null != establecimiento.getEstablecimientoData().getFechaAnoConstruccion()) {
				fechaAnoConstruccionAux = establecimiento.getEstablecimientoData().getFechaAnoConstruccion();
			}

			int resultado = this.jdbcTemplate.update(query, fechaAnoConstruccionAux, PermisosXLNETS.getUserConnected(),
					establecimiento.getEstablecimientoData().getIdEstablecimiento());

			if (resultado == 1) {

				return establecimiento;

			} else {

				throw new Exception("Error update BD");
			}

		} else {

			throw new Exception("No existen datos técnicos del establecimiento [establecimientoData]");
		}

	}

	@Override
	public Establecimiento addDatosEmpresaDireccion(Establecimiento establecimiento) {
		String query = "INSERT INTO AB61.AB6136T00(ID_DIRECCION, ID_TERCERO, ID_TIPO_DIRECCION, ID_PAIS, ID_PROVINCIA, ID_MUNICIPIO, ID_LOCALIDAD, DIRECCION, NUMERO, PISO, LETRA, ESCALERA, CODIGO_POSTAL, DESCRIPCION_CIUDAD, DESCRIPCION_PROVINCIA, FECHA_REGISTRO, USUARIO_REGISTRO) VALUES (AB61.S_AB6136T00.NEXTVAL, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, SYSDATE, ?) ";
		this.jdbcTemplate.update(query, establecimiento.getDatosDirecciones().getDatosTerceros().getIdTercero(),
				Constantes.ID_DIRECCION_ACTIVIDAD, establecimiento.getDatosDirecciones().getIdPais(),
				establecimiento.getDatosDirecciones().getIdProvincia(),
				establecimiento.getDatosDirecciones().getIdMunicipio(),
				establecimiento.getDatosDirecciones().getIdLocalidad(),
				establecimiento.getDatosDirecciones().getDireccion(), establecimiento.getDatosDirecciones().getNumero(),
				establecimiento.getDatosDirecciones().getPiso(), establecimiento.getDatosDirecciones().getLetra(),
				establecimiento.getDatosDirecciones().getEscalera(),
				establecimiento.getDatosDirecciones().getCodigoPostal(),
				establecimiento.getDatosDirecciones().getDescCiudadExtranjera(),
				establecimiento.getDatosDirecciones().getDescProvinciaExtranjera(), PermisosXLNETS.getUserConnected());
		return establecimiento;
	}

	@Override
	public Establecimiento updateDatosEmpresaDireccion(Establecimiento establecimiento) {
		String query = "UPDATE DATOS_DIRECCIONES SET ID_PAIS=?, ID_PROVINCIA=?, ID_MUNICIPIO=?, ID_LOCALIDAD=?, DIRECCION=?, NUMERO=?, PISO=?, LETRA=?, ESCALERA=?, CODIGO_POSTAL=?, DESCRIPCION_CIUDAD=?, DESCRIPCION_PROVINCIA=?, FECHA_ULTMODIFICACION=SYSDATE, USUARIO_ULTMODIFICACION=? WHERE ID_DIRECCION=?";
		this.jdbcTemplate.update(query, establecimiento.getDatosDirecciones().getIdPais(),
				establecimiento.getDatosDirecciones().getIdProvincia(),
				establecimiento.getDatosDirecciones().getIdMunicipio(),
				establecimiento.getDatosDirecciones().getIdLocalidad(),
				establecimiento.getDatosDirecciones().getDireccion(), establecimiento.getDatosDirecciones().getNumero(),
				establecimiento.getDatosDirecciones().getPiso(), establecimiento.getDatosDirecciones().getLetra(),
				establecimiento.getDatosDirecciones().getEscalera(),
				establecimiento.getDatosDirecciones().getCodigoPostal(),
				establecimiento.getDatosDirecciones().getDescCiudadExtranjera(),
				establecimiento.getDatosDirecciones().getDescProvinciaExtranjera(), PermisosXLNETS.getUserConnected(),
				establecimiento.getDatosDirecciones().getIdDireccion());
		return establecimiento;
	}

	@Override
	public Boolean isEsencialChange(InitForm initForm) {
		String queryCount = "SELECT COUNT(MODIF_ESENCIAL)  FROM AB6301S00 WHERE ID_EXPEDIENTE = ? ";
		Long count = this.jdbcTemplate.queryForObject(queryCount, Long.class, initForm.getIdExpediente());
		if (count != null && count > 0) {
			String query = "SELECT MODIF_ESENCIAL MODIFESENCIAL FROM AB6301S00 WHERE ID_EXPEDIENTE = ? ";
			String esencial = this.jdbcTemplate.queryForObject(query, String.class, initForm.getIdExpediente());
			return esencial != null && "S".equalsIgnoreCase(esencial);
		}
		return false;
	}

	@Override
	public Long checkRefCatastral(Establecimiento establecimiento) {

		String query = "SELECT COUNT(1) FROM AB6301T00 WHERE TRIM(UPPER(REF_CATASTRAL)) = TRIM(UPPER(?)) AND REF_CATASTRAL IS NOT NULL AND TIPO_REGISTRO <> 'T'";
		List<Object> params = new ArrayList<Object>();
		params.add(establecimiento.getRefCatastral());

		return this.jdbcTemplate.queryForObject(query.toString(), Long.class, params.toArray());
	}

	@Override
	public Boolean canChangeIdentifiadorExp(Integer idExpediente) {
		String query = "SELECT CAN_MOD_IDESTAB_SOLIC CANMODNUMREG FROM AB6301T00 WHERE ID_EXPEDIENTE = ?  AND ID_EXPEDIENTE IS NOT NULL";
		List<Object> params = new ArrayList<Object>();
		params.add(idExpediente);
		List<String> establecimientoList = this.jdbcTemplate.query(query, this.rwMapCanMod, idExpediente);
		String canModIdEstSolic = "0";
		if (!establecimientoList.isEmpty()) {
			canModIdEstSolic = establecimientoList.get(0);
		}

		return "1".equalsIgnoreCase(canModIdEstSolic);

	}

	@Override
	public void disableChangeIdentifiadorExp(Integer idExpediente) {
		String query = "UPDATE AB6301S00 SET CAN_MOD_IDESTAB_SOLIC='0' WHERE ID_EXPEDIENTE=?";
		this.jdbcTemplate.update(query, idExpediente);

	}

	@Override
	public Establecimiento updateEstablecimientoDescNombre(Establecimiento establecimiento) {

		String query = "UPDATE AB6301T00 SET DESC_NOMBRE=?, FECHA_ULTMODIFICACION=SYSDATE, USUARIO_ULTMODIFICACION=? WHERE ID_ESTABLECIMIENTO=?";

		this.jdbcTemplate.update(query, establecimiento.getDescrNombre(), PermisosXLNETS.getUserConnected(),
				establecimiento.getIdEstablecimiento());

		return establecimiento;
	}

	@Override
	public Establecimiento updateDatosEspecificosEstablecimientoFranquicia(Establecimiento establecimiento)
			throws Exception {

		if (null != establecimiento.getAgenciaData() && null != establecimiento.getAgenciaData().getIdEstablecimiento()
				&& establecimiento.getAgenciaData().getIdEstablecimiento() > 0) {

			Object idFranquiciaAux = null;
			if (null != establecimiento.getAgenciaData().getTipoFranquicia()
					&& null != establecimiento.getAgenciaData().getTipoFranquicia().getIdFranquicia()) {
				idFranquiciaAux = establecimiento.getAgenciaData().getTipoFranquicia().getIdFranquicia();
			}

			String query = "UPDATE AB6335T00 SET FRANQUICIA=?, ID_FRANQUICIA=?, INDONLINE=?, REGISTRO_FIANZA=?, OBSERV_FIANZA=?, OBSERV_SRC=?, FECHA_ULTMODIFICACION=SYSDATE, USUARIO_ULTMODIFICACION=? WHERE ID_ESTABLECIMIENTO=?";

			int resultado = this.jdbcTemplate.update(query, establecimiento.getAgenciaData().getFranquicia(),
					idFranquiciaAux, establecimiento.getAgenciaData().getIndonline(),
					establecimiento.getAgenciaData().getRegistroFianza(),
					establecimiento.getAgenciaData().getObservFianza(), establecimiento.getAgenciaData().getObservSrc(),
					PermisosXLNETS.getUserConnected(), establecimiento.getAgenciaData().getIdEstablecimiento());

			if (resultado == 1) {

				return establecimiento;

			} else {

				throw new Exception("Error update BD");
			}

		} else {

			throw new Exception("No existen datos técnicos de la agencia [agenciaData]");
		}

	}

	@Override
	public Establecimiento updateDatosEstablecimientoAgencia(Establecimiento establecimiento) throws Exception {

		if (null != establecimiento.getAgenciaData() && null != establecimiento.getAgenciaData().getIdEstablecimiento()
				&& establecimiento.getAgenciaData().getIdEstablecimiento() > 0) {

			String query = "UPDATE AB6335T00 SET ID_INSTAL_OFI_PRINCIPAL=?, ID_ORIGEN_OFI_PRINCIPAL=?, ID_TIPO_CIE=?, ID_PRIMERA_SUCURSAL=?, NUM_CIE=?,FECHA_ULTMODIFICACION=SYSDATE, USUARIO_ULTMODIFICACION=? WHERE ID_ESTABLECIMIENTO=?";

			int resultado = this.jdbcTemplate.update(query, establecimiento.getAgenciaData().getIdInstalOfiPrincipal(),
					establecimiento.getAgenciaData().getIdOrigenOfiPrincipal(),
					establecimiento.getAgenciaData().getIdTipoCie(),
					establecimiento.getAgenciaData().getIdPrimeraSucursal(),
					establecimiento.getAgenciaData().getNumCie(), PermisosXLNETS.getUserConnected(),
					establecimiento.getAgenciaData().getIdEstablecimiento());

			if (resultado == 1) {

				return establecimiento;

			} else {

				throw new Exception("Error update BD");
			}

		} else {

			throw new Exception("No existen datos técnicos de la agencia [agenciaData]");
		}

	}

	@Override
	public List<Establecimiento> findEstablecimientoByOfiPpal(Establecimiento ab6301s00,
			JQGridRequestDto jqGridRequestDto, Boolean startsWith, Boolean notPrincipalesFilter) {

		StringBuilder query = new StringBuilder(
				"SELECT DISTINCT t1.id_establecimiento idestablecimiento, t1.identificador_establecimiento identificadorestablecimiento, t1.desc_nombre descnombre, t1.fecha_baja fechabaja, t9.registro_fianza franqregistrofianza, t9.id_primera_sucursal idprimerasucursal, t36.id_direccion, t36.id_provincia, t36.id_municipio, t36.id_localidad, t36.direccion, t36.numero, t36.escalera, t36.piso, t36.letra, t36.codigo_postal, t36.idpais FROM ab6301s00 t1, ab6335s00 t9, (SELECT t11.*, t10.id_tipo_tercero, t10.id_establecimiento FROM ab6339s00 t10, datos_DIRECCIONES t11 WHERE t10.id_tercero = t11.id_tercero AND t10.id_tipo_tercero = 9 AND t11.id_tipo_direccion =2) tercero, (SELECT dir.id_direccion, dir.id_tercero, dir.id_provincia, dir.id_municipio, dir.id_localidad, dir.direccion, dir.numero, dir.escalera, dir.piso, dir.letra, dir.codigo_postal, dir.id_pais idpais, dir.descripcion_provincia descripcionprovinciaextr, dir.descripcion_ciudad descripcionciudadextr, t17.ds_o municipiodso FROM datos_direcciones dir, municipios t17 WHERE dir.id_tipo_direccion = 2 AND dir.id_provincia = t17.provincia_id (+) AND dir.id_municipio = t17.id (+)) t36 WHERE t1.id_establecimiento  = t9.id_establecimiento(+) AND t1.id_establecimiento = tercero.id_establecimiento(+) AND t36.id_tercero(+) = tercero.id_tercero AND t9.NUM_CIE = ? AND t1.TIPO_REGISTRO IN('D') ");

		if (notPrincipalesFilter) {
			query.append(" AND t1.ID_MODALIDAD NOT IN ('P')");
		}
		List<Object> params = new ArrayList<Object>();
		params.add(ab6301s00.getFranquicia().getNumCie());

		if (jqGridRequestDto != null) {
			query = JQGridManager.getPaginationQuery(jqGridRequestDto, query,
					EstablecimientoDaoImpl.ORDER_BY_WHITE_LIST);
		}

		return (List<Establecimiento>) this.jdbcTemplate.query(query.toString(), this.rwMapEstRelAgencias,
				params.toArray());
	}

	@Override
	public Long findEstablecimientoByOfiPpalCount(Establecimiento ab6301s00, Boolean startsWith,
			Boolean flagSucursalesPvBaja) {

		StringBuilder query = new StringBuilder(
				"SELECT COUNT(1) FROM ab6301s00 t1, ab6335s00 t9, (SELECT t11.*, t10.id_tipo_tercero, t10.id_establecimiento FROM ab6339s00 t10, datos_DIRECCIONES t11 WHERE t10.id_tercero = t11.id_tercero AND t10.id_tipo_tercero = 9 AND t11.id_tipo_direccion =2) tercero, (SELECT dir.id_direccion, dir.id_tercero, dir.id_provincia, dir.id_municipio, dir.id_localidad, dir.direccion, dir.numero, dir.escalera, dir.piso, dir.letra, dir.codigo_postal, dir.id_pais idpais, dir.descripcion_provincia descripcionprovinciaextr, dir.descripcion_ciudad descripcionciudadextr, t17.ds_o municipiodso FROM datos_direcciones dir, municipios t17 WHERE dir.id_tipo_direccion = 2 AND dir.id_provincia = t17.provincia_id (+) AND dir.id_municipio = t17.id (+)) t36 WHERE t1.id_establecimiento  = t9.id_establecimiento(+) AND t1.id_establecimiento = tercero.id_establecimiento(+) AND t36.id_tercero(+) = tercero.id_tercero AND t9.NUM_CIE = ? AND t1.TIPO_REGISTRO IN('D') ");

		if (flagSucursalesPvBaja) {
			query.append(" AND t1.FECHA_BAJA IS NULL");
		}
		List<Object> params = new ArrayList<Object>();
		params.add(ab6301s00.getFranquicia().getNumCie());

		return this.jdbcTemplate.queryForObject(query.toString(), Long.class, params.toArray());
	}

	@Override
	public Establecimiento updateDatosEspecificosEstablecimientoDataCamping(Establecimiento establecimiento)
			throws Exception {

		if (null != establecimiento.getEstablecimientoData()
				&& null != establecimiento.getEstablecimientoData().getIdEstablecimiento()
				&& establecimiento.getEstablecimientoData().getIdEstablecimiento() > 0) {

			String query = "UPDATE AB6321S00 SET COMPARTE_INSTAL=?, NUM_INSTAL_COMPARTE=?, NUM_SUP_ACAMPADA=?, FECHA_ANO_RENOVACION=?, BAR=?, RESTAURANTE=?, PISCINA=?, NUM_TOT_PARCELAS=?, NUM_PARCELAS_ANF=?, NUM_PARCELAS_AF=?, NUM_PARCELAS_SA=?, NUM_PLAZAS=?, FECHA_ULTMODIFICACION=SYSDATE, USUARIO_ULTMODIFICACION=? WHERE ID_ESTABLECIMIENTO=?";

			int resultado = this.jdbcTemplate.update(query,
					establecimiento.getEstablecimientoData().getComparteInstal(),
					establecimiento.getEstablecimientoData().getNumInstalComparte(),
					establecimiento.getEstablecimientoData().getNumSupAcampada(),
					establecimiento.getEstablecimientoData().getFechaAnoRenovacion(),
					establecimiento.getEstablecimientoData().getBar(),
					establecimiento.getEstablecimientoData().getRestaurante(),
					establecimiento.getEstablecimientoData().getPiscina(),
					establecimiento.getEstablecimientoData().getNumTotParcelas(),
					establecimiento.getEstablecimientoData().getNumParcelasAnf(),
					establecimiento.getEstablecimientoData().getNumParcelasAf(),
					establecimiento.getEstablecimientoData().getNumParcelasSa(),
					establecimiento.getEstablecimientoData().getNumPlazas(), PermisosXLNETS.getUserConnected(),
					establecimiento.getEstablecimientoData().getIdEstablecimiento());

			if (resultado == 1) {

				return establecimiento;

			} else {

				throw new Exception("Error update BD");
			}

		} else {

			throw new Exception("No existen datos técnicos del establecimiento [establecimientoData]");
		}

	}

	@Override
	public Establecimiento updateDatosEspecificosEstablecimientoCamping(Establecimiento establecimiento)
			throws Exception {

		String query = "UPDATE AB6301T00 SET FECHA_ULTMODIFICACION=SYSDATE, USUARIO_ULTMODIFICACION=? WHERE ID_ESTABLECIMIENTO=?";

		int resultado = this.jdbcTemplate.update(query, PermisosXLNETS.getUserConnected(),
				establecimiento.getIdEstablecimiento());

		if (resultado == 1) {
			return establecimiento;
		} else {
			throw new Exception("Error update BD");
		}

	}

	@Override
	public Establecimiento updateDatosEspecificosEstablecimientoDataHotel(Establecimiento establecimiento)
			throws Exception {

		if (null != establecimiento.getEstablecimientoData()
				&& null != establecimiento.getEstablecimientoData().getIdEstablecimiento()
				&& establecimiento.getEstablecimientoData().getIdEstablecimiento() > 0) {

			String query = "UPDATE AB6321T00 SET SERVICIO_COMEDOR=?, EDIFICIO_CATALOGADO=?, FECHA_ANO_RENOVACION=?, NUM_PLAZAS=?, FECHA_ULTMODIFICACION=SYSDATE, USUARIO_ULTMODIFICACION=? WHERE ID_ESTABLECIMIENTO=?";

			int resultado = this.jdbcTemplate.update(query,
					establecimiento.getEstablecimientoData().getServicioComedor(),
					establecimiento.getEstablecimientoData().getEdificioCatalogado(),
					establecimiento.getEstablecimientoData().getFechaAnoRenovacion(),
					establecimiento.getEstablecimientoData().getNumPlazas(), PermisosXLNETS.getUserConnected(),
					establecimiento.getEstablecimientoData().getIdEstablecimiento());

			if (resultado == 1) {
				return establecimiento;
			} else {
				throw new Exception("Error update BD");
			}

		} else {
			throw new Exception("No existen datos técnicos del establecimiento [establecimientoData]");
		}

	}

	@Override
	public Establecimiento updateDatosEspecificosEstablecimientoHotel(Establecimiento establecimiento)
			throws Exception {

		String query = "UPDATE AB6301T00 SET NUM_UNIDADES_ALOJAMIENTO=?, FECHA_ULTMODIFICACION=SYSDATE, USUARIO_ULTMODIFICACION=? WHERE ID_ESTABLECIMIENTO=?";

		int resultado = this.jdbcTemplate.update(query, establecimiento.getNumUnidadesAlojamiento(),
				PermisosXLNETS.getUserConnected(), establecimiento.getIdEstablecimiento());

		if (resultado == 1) {
			return establecimiento;
		} else {
			throw new Exception("Error update BD");
		}

	}

	@Override
	public Establecimiento updateDatosEspecificosEstablecimientoDataApto(Establecimiento establecimiento)
			throws Exception {

		if (null != establecimiento.getEstablecimientoData()
				&& null != establecimiento.getEstablecimientoData().getIdEstablecimiento()
				&& establecimiento.getEstablecimientoData().getIdEstablecimiento() > 0) {

			String query = "UPDATE AB6321T00 SET EDIFICIO_CATALOGADO=?, FECHA_ANO_RENOVACION=?, NUM_PLAZAS=?, FECHA_ULTMODIFICACION=SYSDATE, USUARIO_ULTMODIFICACION=? WHERE ID_ESTABLECIMIENTO=?";

			int resultado = this.jdbcTemplate.update(query,
					establecimiento.getEstablecimientoData().getEdificioCatalogado(),
					establecimiento.getEstablecimientoData().getFechaAnoRenovacion(),
					establecimiento.getEstablecimientoData().getNumPlazas(), PermisosXLNETS.getUserConnected(),
					establecimiento.getIdEstablecimiento());

			if (resultado == 1) {
				return establecimiento;
			} else {
				throw new Exception("Error update BD");
			}

		} else {

			throw new Exception("No existen datos técnicos del establecimiento [establecimientoData]");

		}

	}

	@Override
	public Establecimiento updateDatosEspecificosEstablecimientoDataAlbergue(Establecimiento establecimiento)
			throws Exception {

		if (null != establecimiento.getEstablecimientoData()
				&& null != establecimiento.getEstablecimientoData().getIdEstablecimiento()
				&& establecimiento.getEstablecimientoData().getIdEstablecimiento() > 0) {

			String query = "UPDATE AB6321T00 SET SERVICIO_COMEDOR=?, DERECHO_COCINA=?, EDIFICIO_CATALOGADO=?, COMPARTE_VIVIENDAS=?, FECHA_ANO_RENOVACION=?, NUM_PLAZAS=?, NUM_SUP_COCINA=?, FECHA_ULTMODIFICACION=SYSDATE, USUARIO_ULTMODIFICACION=? WHERE ID_ESTABLECIMIENTO=?";

			int resultado = this.jdbcTemplate.update(query,
					establecimiento.getEstablecimientoData().getServicioComedor(),
					establecimiento.getEstablecimientoData().getDerechoCocina(),
					establecimiento.getEstablecimientoData().getEdificioCatalogado(),
					establecimiento.getEstablecimientoData().getComparteViviendas(),
					establecimiento.getEstablecimientoData().getFechaAnoRenovacion(),
					establecimiento.getEstablecimientoData().getNumPlazas(),
					establecimiento.getEstablecimientoData().getNumSupCocina(), PermisosXLNETS.getUserConnected(),
					establecimiento.getEstablecimientoData().getIdEstablecimiento());

			if (resultado == 1) {
				return establecimiento;
			} else {
				throw new Exception("Error update BD");
			}

		} else {
			throw new Exception("No existen datos técnicos del establecimiento [establecimientoData]");
		}

	}

	@Override
	public Establecimiento updateDatosEspecificosEstablecimientoDataCasaRural(Establecimiento establecimiento)
			throws Exception {

		if (null != establecimiento.getEstablecimientoData()
				&& null != establecimiento.getEstablecimientoData().getIdEstablecimiento()
				&& establecimiento.getEstablecimientoData().getIdEstablecimiento() > 0) {

			String query = "UPDATE AB6321T00 SET SERVICIO_COMEDOR=?, DERECHO_COCINA=?, EDIFICIO_CATALOGADO=?, FECHA_ANO_RENOVACION=?, NUM_PLAZAS=?, FECHA_ULTMODIFICACION=SYSDATE, USUARIO_ULTMODIFICACION=?, NUM_MAXIMO_SUPLETORIAS =? WHERE ID_ESTABLECIMIENTO=?";

			int resultado = this.jdbcTemplate.update(query,
					establecimiento.getEstablecimientoData().getServicioComedor(),
					establecimiento.getEstablecimientoData().getDerechoCocina(),
					establecimiento.getEstablecimientoData().getEdificioCatalogado(),
					establecimiento.getEstablecimientoData().getFechaAnoRenovacion(),
					establecimiento.getEstablecimientoData().getNumPlazas(), PermisosXLNETS.getUserConnected(),
					establecimiento.getEstablecimientoData().getNumMaximoSupletorias(),
					establecimiento.getEstablecimientoData().getIdEstablecimiento());

			if (resultado == 1) {
				return establecimiento;
			} else {
				throw new Exception("Error update BD");
			}

		} else {
			throw new Exception("No existen datos técnicos del establecimiento [establecimientoData]");
		}

	}

	@Override
	public Establecimiento getDatosOficinaPpalAAVV(String numCie) {

		// String query = "SELECT EST.ID_ESTABLECIMIENTO,
		// EST.IDENTIFICADOR_ESTABLECIMIENTO, EST.DESC_NOMBRE, DIR.DIRECCION,
		// DIR.NUMERO, DIR.ESCALERA, DIR.PISO, DIR.LETRA, DIR.CODIGO_POSTAL,
		// T17.DS_O MUNICIPIODSO FROM AB6301T00 EST, AB6335T00 AG, AB6339T00
		// REL, AB61.AB6136T00 DIR, MUNICIPIOS T17 WHERE EST.ID_ESTABLECIMIENTO
		// = REL.ID_ESTABLECIMIENTO AND REL.ID_TERCERO = DIR.ID_TERCERO AND
		// DIR.ID_TIPO_DIRECCION = 2 AND EST.ID_ESTABLECIMIENTO =
		// AG.ID_ESTABLECIMIENTO AND EST.ID_MODALIDAD = 'P' AND AG.NUM_CIE = ?
		// AND DIR.ID_PROVINCIA = T17.PROVINCIA_ID (+) AND DIR.ID_MUNICIPIO =
		// T17.ID (+) AND EST.TIPO_REGISTRO NOT IN ('T')";

		// QUERY ARRIBA versión que está en produccion 17/10/2019

		// Arreglado en local (no subido a desa ni produ) 17/10/2019
		String query = "SELECT EST.ID_ESTABLECIMIENTO, EST.IDENTIFICADOR_ESTABLECIMIENTO, EST.DESC_NOMBRE, DIR.DIRECCION, DIR.NUMERO, DIR.ESCALERA, DIR.PISO, DIR.LETRA, DIR.CODIGO_POSTAL, T17.DS_O MUNICIPIODSO FROM AB6301T00 EST, AB6335T00 AG, AB6339T00 REL, AB61.AB6136T00 DIR, MUNICIPIOS T17 WHERE EST.ID_ESTABLECIMIENTO = REL.ID_ESTABLECIMIENTO AND REL.ID_TERCERO = DIR.ID_TERCERO (+) AND DIR.ID_TIPO_DIRECCION(+) = 2 AND EST.ID_ESTABLECIMIENTO = AG.ID_ESTABLECIMIENTO AND EST.ID_MODALIDAD = 'P' AND AG.NUM_CIE = ? AND DIR.ID_PROVINCIA = T17.PROVINCIA_ID (+) AND DIR.ID_MUNICIPIO = T17.ID (+) AND EST.TIPO_REGISTRO NOT IN ('T') AND REL.ID_TIPO_TERCERO IN (9)";
		List<Establecimiento> establecimientoList = this.jdbcTemplate.query(query, this.rwMapDatosOficinaPpalAAVV,
				numCie);
		if (!establecimientoList.isEmpty()) {
			return establecimientoList.get(0);
		}
		return new Establecimiento();
	}

	public List<Establecimiento> findSucursalesOficinaPrincipal(Integer idEstablecimiento) {

		StringBuilder query = new StringBuilder(
				"SELECT t1.id_establecimiento FROM ab6301t00 t1 WHERE t1.id_establecimiento IN (SELECT t2.id_establecimiento FROM ab6301t00 t4, ab6335t00 t2 WHERE 1 = 1 AND t4.id_establecimiento = t2.id_instal_ofi_principal AND t4.id_establecimiento = ?) AND t1.ID_MODALIDAD = 'S'");

		return this.jdbcTemplate.query(query.toString(), this.rwMapSucursales, idEstablecimiento);
	}

	@Override
	public void updateCamposS41(Establecimiento establecimiento) {
		String query = "UPDATE AB6301T00 SET FECHA_CONTROL_S41=?, URL_PORTAL_S41=?, ID_PORTAL_S41=? WHERE IDENTIFICADOR_ESTABLECIMIENTO=?";

		EstablecimientoDaoImpl.logger.error("sql --> " + query);
		EstablecimientoDaoImpl.logger.error("fecha contros --> " + establecimiento.getFechaControlS41());
		EstablecimientoDaoImpl.logger.error("urlPortal --> " + establecimiento.getUrlPortalS41());
		EstablecimientoDaoImpl.logger.error("idPortal --> " + establecimiento.getIdPortalS41());
		EstablecimientoDaoImpl.logger
				.error("idEstablecimiento --> " + establecimiento.getIdentificadorEstablecimiento());

		this.jdbcTemplate.update(query, establecimiento.getFechaControlS41(), establecimiento.getUrlPortalS41(),
				establecimiento.getIdPortalS41(), establecimiento.getIdentificadorEstablecimiento());
	}
}
