package com.ejie.m62fb.dao.registroVPP;

import com.ejie.m62fb.dao.SQLGenericas;
import com.ejie.m62fb.utils.constants.BDConstantes;

public class ViviendasDaoSql {

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

	public static final String SEQUENCE_NAME = "";

	public static final String TABLA = BDConstantes.VIVIENDA;
	public static final String VISTA_GRID = BDConstantes.VIS_VIVIENDA_GRID;
	public static final String VISTA_DET = BDConstantes.VIS_VIVIENDA_DETALLE;
	public static final String TABLA_EXP = BDConstantes.EXPEDIENTE_VIVIENDA;
	public static final String TABLA_PROP = BDConstantes.PROPIETARIOS;
	public static final String TABLA_INQ = BDConstantes.INQUILINO;

	public static final String ALIAS = " VIV";
	public static final String ALIAS_EXP = " EXP";
	public static final String ALIAS_PROP = " PROP";
	public static final String ALIAS_INQ = " INQ";
	// public static final String ALIAS_P28_ACCESO = " ACC";
	// public static final String ALIAS_P28_TENENC = " TEN";

	public static final String ALIAS_DIR = "";

	public static final String PK = "NUM_VIVIENDA";

	public static final String SQL_INSERT = "INSERT INTO"
			+ TABLA
			+ "(NUM_VIVIENDA, COD_REG_ACCESO, COD_REG_TENENCIA"
			+ ", IND_BAJA_DENSIDAD, IND_ARI, IND_VIV_ADAPTADA, IND_FAMILIA_NUMER, IND_VIV_UNIFAMILIAR"
			+ ", NUM_DORMITORIOS, NUM_BANYOS, SUP_UTIL_VIV, FEC_INSCRIP_DER_SUP"
			+ ", NOM_REGISTRO_PROP, NUM_REGISTRO_PROP, DES_TOMO, DES_LIBRO, DES_FOLIO, DES_FINCA, DES_INSCRIPCION"
			+ ", NUM_FIJO_IBI, COD_REF_CATASTRAL, COD_TIPO_ELEM"
			+ ", FEC_CALIFICACION, NUM_PLAZO_CALIF, FEC_DESCALIFICA, FEC_ESCRITURA_SUEL, TEX_OBSERVACIONES"
			+ ", NUM_TIPO_REGULACION, NUM_TIPO_REG_ACCESO, NUM_CLA_INICIATIVA, NUM_TIPO_PROMOTOR, NUM_TIPO_PROPIETARIO"
			+ ", NUM_ADJUDICACION, NUM_ADJ_QUIEN, NUM_ADJ_COMO, NUM_ADJ_PORQUE,DES_CALLE"
			+ SQLGenericas.INSERT_DIRECCION_CLASS_SQL
			+ SQLGenericas.INSERT_ABSTRACT_CLASS_SQL + ") VALUES ("
			+ "(SELECT MAX(NUM_VIVIENDA)+1 FROM" + TABLA + ")" + ",?,?"
			+ ",?,?,?,?,?" + ",?,?,?,?" + ",?,?,?,?,?,?,?" + ",?,?,?"
			+ ",?,?,?,?,?,?" + ",?,?,?,?,?" + ",?,?,?,?"
			+ SQLGenericas.INSERT_DIRECCION_CLASS_QUESTION_TAGS
			+ SQLGenericas.INSERT_ABSTRACT_CLASS_QUESTION_TAGS + ")";

	public static final String SQL_UPDATE = "UPDATE "
			+ TABLA
			+ " SET COD_REG_ACCESO = ?, COD_REG_TENENCIA = ?"
			+ ", IND_BAJA_DENSIDAD = ?, IND_ARI = ?, IND_VIV_ADAPTADA = ?, IND_FAMILIA_NUMER = ?, IND_VIV_UNIFAMILIAR = ?"
			+ ", NUM_DORMITORIOS = ?, NUM_BANYOS = ?, SUP_UTIL_VIV = ?, FEC_INSCRIP_DER_SUP = ?"
			+ ", NOM_REGISTRO_PROP = ?, NUM_REGISTRO_PROP = ?, DES_TOMO = ?, DES_LIBRO = ?, DES_FOLIO = ?, DES_FINCA = ?, DES_INSCRIPCION = ?"
			+ ", NUM_FIJO_IBI = ?, COD_REF_CATASTRAL = ?"
			+ ", FEC_CALIFICACION = ?, NUM_PLAZO_CALIF = ?, FEC_DESCALIFICA = ?, FEC_ESCRITURA_SUEL = ?, TEX_OBSERVACIONES = ?"
			+ ", NUM_TIPO_REGULACION = ?, NUM_TIPO_REG_ACCESO = ?, NUM_CLA_INICIATIVA = ?, NUM_TIPO_PROMOTOR = ?, NUM_TIPO_PROPIETARIO = ?"
			+ ", NUM_ADJUDICACION = ?, NUM_ADJ_QUIEN = ?, NUM_ADJ_COMO = ?, NUM_ADJ_PORQUE = ?"
			+ SQLGenericas.UPDATE_DIRECCION_CLASS_SQL
			+ SQLGenericas.UPDATE_ABSTRACT_CLASS_SQL + " WHERE NUM_VIVIENDA=?";
//	public static final String SQL_UPDATE_DES_CALLE = "UPDATE "
//		+ TABLA
//		+ " SET DES_CALLE = ?"+ " WHERE NUM_VIVIENDA=?";

	public static final String SQL_SELECT = "SELECT" //
			+ ViviendasDaoSql.ALIAS
			+ ".NUM_VIVIENDA NUMVIVIENDA, "
			+ ViviendasDaoSql.ALIAS
			+ ".SUP_UTIL_VIV SUPUTILVIV, "
			+ ViviendasDaoSql.ALIAS
			+ ".NUM_DORMITORIOS NUMDORMITORIOS, "
			+ ViviendasDaoSql.ALIAS
			+ ".NUM_BANYOS NUMBANYOS, "
			+ ViviendasDaoSql.ALIAS
			+ ".IND_VIV_ADAPTADA INDVIVADAPTADA, "
			+ ViviendasDaoSql.ALIAS
			+ ".FEC_CALIFICACION FECCALIFICACION, "
			+ ViviendasDaoSql.ALIAS
			+ ".FEC_DESCALIFICA FECDESCALIFICA, "
			+ ViviendasDaoSql.ALIAS
			+ ".NUM_PLAZO_CALIF NUMPLAZOCALIF, "
			+ ViviendasDaoSql.ALIAS
			+ ".NOM_REGISTRO_PROP NOMREGISTROPROP, "
			+ ViviendasDaoSql.ALIAS
			+ ".NUM_REGISTRO_PROP NUMREGISTROPROP, "
			+ ViviendasDaoSql.ALIAS
			+ ".DES_TOMO DESTOMO, "
			+ ViviendasDaoSql.ALIAS
			+ ".DES_LIBRO DESLIBRO, "
			+ ViviendasDaoSql.ALIAS
			+ ".DES_FOLIO DESFOLIO, "
			+ ViviendasDaoSql.ALIAS
			+ ".DES_FINCA DESFINCA, "
			+ ViviendasDaoSql.ALIAS
			+ ".DES_INSCRIPCION DESINSCRIPCION, "
			+ ViviendasDaoSql.ALIAS
			+ ".TEX_OBSERVACIONES TEXOBSERVACIONES, "
			+ ViviendasDaoSql.ALIAS
			+ ".NUM_FIJO_IBI NUMFIJOIBI, "
			+ ViviendasDaoSql.ALIAS
			+ ".NUM_ORGANO_GESTOR NUMORGANOGESTOR, "
			+ ViviendasDaoSql.ALIAS
			+ ".FEC_INI_GESTION FECINIGESTION, "
			+ ViviendasDaoSql.ALIAS
			+ ".FEC_FIN_GESTION FECFINGESTION, "
			+ ViviendasDaoSql.ALIAS
			+ ".FEC_ENV_ORG_GESTOR FECENVORGGESTOR, "
			+ ViviendasDaoSql.ALIAS
			+ ".IND_LOCAL_EN_VIV INDLOCALENVIV, "
			+ ViviendasDaoSql.ALIAS
			+ ".COD_TIPO_ELEM CODTIPOELEM, "
			+ ViviendasDaoSql.ALIAS
			+ ".ID_PROMOCION IDPROMOCION, "
			+ ViviendasDaoSql.ALIAS
			+ ".DEC_SIT_ELEM DECSITELEM, "
			+ ViviendasDaoSql.ALIAS
			+ ".IND_USO_INDIV INDUSOINDIV, "
			+ ViviendasDaoSql.ALIAS
			+ ".IND_CALIF_PERMAN INDCALIFPERMAN, "
			+ ViviendasDaoSql.ALIAS
			+ ".IND_BAJA_DENSIDAD INDBAJADENSIDAD, "
			+ ViviendasDaoSql.ALIAS
			+ ".IND_VIV_CONCER INDVIVCONCER, "
			+ ViviendasDaoSql.ALIAS
			+ ".NUM_TIPO_REGULACION NUMTIPOREGULACION, "
			+ ViviendasDaoSql.ALIAS
			+ ".NUM_TIPO_REG_ACCESO NUMTIPOREGACCESO, "
			+ ViviendasDaoSql.ALIAS
			+ ".NUM_CLA_INICIATIVA NUMCLAINICIATIVA, "
			+ ViviendasDaoSql.ALIAS
			+ ".NUM_TIPO_PROMOTOR NUMTIPOPROMOTOR, "
			+ ViviendasDaoSql.ALIAS
			+ ".NUM_TIPO_PROPIETARIO NUMTIPOPROPIETARIO, "
			+ ViviendasDaoSql.ALIAS
			+ ".NUM_ADJUDICACION NUMADJUDICACION, "
			+ ViviendasDaoSql.ALIAS
			+ ".NUM_ADJ_QUIEN NUMADJQUIEN, "
			+ ViviendasDaoSql.ALIAS
			+ ".NUM_ADJ_COMO NUMADJCOMO, "
			+ ViviendasDaoSql.ALIAS
			+ ".NUM_ADJ_PORQUE NUMADJPORQUE, "
			+ ViviendasDaoSql.ALIAS
			+ ".IND_VIV_UNIFAMILIAR INDVIVUNIFAMILIAR, "
			+ ViviendasDaoSql.ALIAS
			+ ".COD_REF_CATASTRAL CODREFCATASTRAL, "
			+ ViviendasDaoSql.ALIAS
			+ ".IND_FAMILIA_NUMER INDFAMILIANUMER, "
			+ ViviendasDaoSql.ALIAS
			+ ".FEC_INSCRIP_DER_SUP FECINSCRIPDERSUP, "
			+ ViviendasDaoSql.ALIAS
			+ ".FEC_ESCRITURA_SUEL FECESCRITURASUEL, "
			+ ViviendasDaoSql.ALIAS
			+ ".IND_ARI INDARI, "
			// E33
			+ ViviendasDaoSql.ALIAS
			+ ".IND_ELIMINAR_RESERVA INDELIMINARRESERVA, "
			// InformacionSuelo
			+ ViviendasDaoSql.ALIAS
			+ ".CUOTA_PARTICIPACION CUOTAPARTICIPACION "
			// RegimenAcceso (P28)
			+ "," + ViviendasDaoSql.ALIAS + ".COD_REG_ACCESO CODREGACCESO "
			// RegimenTenencia (P28)
			+ "," + ViviendasDaoSql.ALIAS + ".COD_REG_TENENCIA CODREGTENENCIA "
			// Direccion
			+ SQLGenericas.getSqlCamposDireccionCompleta(ALIAS, ALIAS_DIR)
			// AbstractM62FBModel
			+ SQLGenericas.getSqlCamposAbstractClass(ViviendasDaoSql.ALIAS);

	private static final String SQL_FROM = " FROM " + VISTA_DET + ALIAS;

	private static final String SQL_WHERE = " WHERE " + ALIAS
			+ ".NUM_VIVIENDA = ?";

	private static final String SQL_WHERE_FOR_UPDATE = SQL_WHERE
			+ " AND FEH_ULT_MODIF = ?";

	public static final String SQL_FIND = SQL_SELECT + SQL_FROM + SQL_WHERE;
	public static final String SQL_SELECT_COUNT = "SELECT COUNT(1)";

	public static final String SQL_CHECK_FOR_UPDATE = SQL_SELECT_COUNT
			+ SQL_FROM + SQL_WHERE_FOR_UPDATE;

	/** **************************** **/
	/** INI SQLs SELECCION VIVIENDAS **/
	/** **************************** **/
	// SQLs para el mantenimiento de Seleccion de Viviendas
	private static final String SQL_SELECT_MANT_SELECCION_VIV = "SELECT "
			+ ViviendasDaoSql.ALIAS
			+ ".NUM_VIVIENDA NUMVIVIENDA, "
			+ ViviendasDaoSql.ALIAS
			+ ".ROW_ID ROW_ID, "
			+ ViviendasDaoSql.ALIAS
			+ ".NUM_EXPEDIENTE NUMEXPEDIENTE, "
			+ ViviendasDaoSql.ALIAS
			+ ".FEC_CALIFICACION FECCALIFICACION, "
			+ ViviendasDaoSql.ALIAS
			+ ".NUM_PLAZO_CALIF NUMPLAZOCALIF, "
			+ ViviendasDaoSql.ALIAS
			+ ".FEC_DESCALIFICA FECDESCALIFICA, "
			+ ViviendasDaoSql.ALIAS
			+ ".FEC_FIN_CALIF FECFINCALIF, "
			// Nuevos para ActMasiva
			+ ViviendasDaoSql.ALIAS
			+ ".IND_FAMILIA_NUMER INDFAMILIANUMER, "
			+ ViviendasDaoSql.ALIAS
			+ ".IND_USO_INDIV INDUSOINDIV, "
			+ ViviendasDaoSql.ALIAS
			+ ".IND_BAJA_DENSIDAD INDBAJADENSIDAD, "
			+ ViviendasDaoSql.ALIAS
			+ ".IND_ARI INDARI, "
			+ ViviendasDaoSql.ALIAS
			+ ".IND_VIV_UNIFAMILIAR INDVIVUNIFAMILIAR, "
			+ ViviendasDaoSql.ALIAS
			+ ".COD_REF_CATASTRAL CODREFCATASTRAL, "
			+ ViviendasDaoSql.ALIAS
			+ ".NUM_FIJO_IBI NUMFIJOIBI, "
			+ ViviendasDaoSql.ALIAS
			+ ".FEC_ESCRITURA_SUEL FECESCRITURASUEL, "
			+ ViviendasDaoSql.ALIAS
			+ ".NUM_TIPO_REGULACION NUMTIPOREGULACION, "
			+ ViviendasDaoSql.ALIAS
			+ ".NUM_TIPO_REG_ACCESO NUMTIPOREGACCESO, "
			+ ViviendasDaoSql.ALIAS
			+ ".NUM_CLA_INICIATIVA NUMCLAINICIATIVA, "
			+ ViviendasDaoSql.ALIAS
			+ ".NUM_TIPO_PROMOTOR NUMTIPOPROMOTOR, "
			+ ViviendasDaoSql.ALIAS
			+ ".NUM_TIPO_PROPIETARIO NUMTIPOPROPIETARIO, "
			+ ViviendasDaoSql.ALIAS
			+ ".NUM_ADJUDICACION NUMADJUDICACION, "
			+ ViviendasDaoSql.ALIAS
			+ ".NUM_ADJ_QUIEN NUMADJQUIEN, "
			+ ViviendasDaoSql.ALIAS
			+ ".NUM_ADJ_COMO NUMADJCOMO, "
			+ ViviendasDaoSql.ALIAS
			+ ".NUM_ADJ_PORQUE NUMADJPORQUE, "
			// RegimenAcceso (P28)
			// + SQLGenericas.getSqlCamposP28(ALIAS_P28_ACCESO)
			+ ViviendasDaoSql.ALIAS
			+ ".COD_REG_ACCESO CODREGACCESO, "
			+ ViviendasDaoSql.ALIAS
			+ ".DESC_REG_ACCESO_ES DESCREGACCESOES, "
			+ ViviendasDaoSql.ALIAS
			+ ".DESC_REG_ACCESO_EU DESCREGACCESOEU, "
			// RegimenTenencia (P28)
			// + SQLGenericas.getSqlCamposP28(ALIAS_P28_TENENC)
			+ ViviendasDaoSql.ALIAS
			+ ".COD_REG_TENENCIA CODREGTENENCIA, "
			+ ViviendasDaoSql.ALIAS
			+ ".DESC_REG_TENENCIA_ES DESCREGTENENCIAES, "
			+ ViviendasDaoSql.ALIAS
			+ ".DESC_REG_TENENCIA_EU DESCREGTENENCIAEU "
			// Direccion
			+ SQLGenericas.getSqlCamposDireccionCompleta(ALIAS, ALIAS_DIR);

	// FROMs
	private static final String SQL_FROM_MANT_SELECCION_VIV_SIN_TITULAR = " FROM "
			+ VISTA_GRID + ALIAS;
//	private static final String SQL_FROM_MANT_SELECCION_VIV_SIN_TITULAR_CON_EXP = " FROM "
//			+ VISTA_GRID + ALIAS + ", " + TABLA_EXP + ALIAS_EXP;
	private static final String SQL_FROM_MANT_SELECCION_VIV_CON_TITULAR_COMPRA = " FROM "
			+ VISTA_GRID + ALIAS + ", " + TABLA_PROP + ALIAS_PROP;
	private static final String SQL_FROM_MANT_SELECCION_VIV_CON_TITULAR_ALQUILER = " FROM "
			+ VISTA_GRID + ALIAS + ", " + TABLA_INQ + ALIAS_INQ;

	// JOINs COMUNES
	private static final String SQL_FROM_JOIN_COMUNES_MANT_SELECCION_VIV = ""
	// + SQLGenericas.getSqlJoinP28(ALIAS_P28_ACCESO)
	// + SQLGenericas.getSqlJoinP28(ALIAS_P28_TENENC)
	;

	// WHEREs JOINs COMUNES
	private static final String SQL_WHERE_JOIN_COMUNES_MANT_SELECCION_VIV = ""
	// + SQLGenericas.getSqlWhereJoinP28(ALIAS, "COD_REG_ACCESO",
	// ALIAS_P28_ACCESO, P28Tipos.REGIMEN_ACCESO)
	// + SQLGenericas.getSqlWhereJoinP28(ALIAS, "COD_REG_TENENCIA",
	// ALIAS_P28_TENENC, P28Tipos.REGIMEN_TENENCIA)
	;

	// WHEREs JOINs
	public static final String SQL_WHERE_ALL_MANT_SELECCION_VIV_SIN_TITULAR = " WHERE 1 = 1 "
			+ SQL_WHERE_JOIN_COMUNES_MANT_SELECCION_VIV;
//	public static final String SQL_WHERE_ALL_MANT_SELECCION_VIV_SIN_TITULAR_CON_EXP = " WHERE "
//			+ ALIAS
//			+ ".NUM_VIVIENDA = "
//			+ ALIAS_EXP
//			+ ".NUM_VIVIENDA (+)"
//			+ SQL_WHERE_JOIN_COMUNES_MANT_SELECCION_VIV;
	public static final String SQL_WHERE_ALL_MANT_SELECCION_VIV_CON_TITULAR_COMPRA = " WHERE "
			+ ALIAS
			+ ".NUM_VIVIENDA = "
			+ ALIAS_PROP
			+ ".NUM_VIVIENDA "
			+ SQL_WHERE_JOIN_COMUNES_MANT_SELECCION_VIV;
	public static final String SQL_WHERE_ALL_MANT_SELECCION_VIV_CON_TITULAR_ALQUILER = " WHERE "
			+ ALIAS
			+ ".NUM_VIVIENDA = "
			+ ALIAS_INQ
			+ ".NUM_VIVIENDA "
			+ SQL_WHERE_JOIN_COMUNES_MANT_SELECCION_VIV;

	// FINDs ALL
	public static final String SQL_FIND_ALL_MANT_SELECCION_VIV_SIN_TITULAR = SQL_SELECT_MANT_SELECCION_VIV
			+ SQL_FROM_MANT_SELECCION_VIV_SIN_TITULAR
			+ SQL_FROM_JOIN_COMUNES_MANT_SELECCION_VIV;
//	public static final String SQL_FIND_ALL_MANT_SELECCION_VIV_SIN_TITULAR_CON_EXP = SQL_SELECT_MANT_SELECCION_VIV
//			+ SQL_FROM_MANT_SELECCION_VIV_SIN_TITULAR_CON_EXP
//			+ SQL_FROM_JOIN_COMUNES_MANT_SELECCION_VIV;
	public static final String SQL_FIND_ALL_MANT_SELECCION_VIV_CON_TITULAR_COMPRA = SQL_SELECT_MANT_SELECCION_VIV
			+ SQL_FROM_MANT_SELECCION_VIV_CON_TITULAR_COMPRA
			+ SQL_FROM_JOIN_COMUNES_MANT_SELECCION_VIV;
	public static final String SQL_FIND_ALL_MANT_SELECCION_VIV_CON_TITULAR_ALQUILER = SQL_SELECT_MANT_SELECCION_VIV
			+ SQL_FROM_MANT_SELECCION_VIV_CON_TITULAR_ALQUILER
			+ SQL_FROM_JOIN_COMUNES_MANT_SELECCION_VIV;
	/** **************************** **/
	/** FIN SQLs SELECCION VIVIENDAS **/
	/** **************************** **/

	public static final String SQL_FIND_NUMVIVIENDA = "SELECT " + ViviendasDaoSql.ALIAS
	+ ".NUM_VIVIENDA NUMVIVIENDA " + SQL_FROM_MANT_SELECCION_VIV_SIN_TITULAR + " WHERE " + ALIAS
	+ ".ROW_ID = ?";
	
	public static final String SQL_FIND_LUPA = SQL_SELECT + "," + ViviendasDaoSql.ALIAS
			+ ".NUM_EXPEDIENTE NUMEXPEDIENTE FROM "
			+ VISTA_GRID + ALIAS + SQL_WHERE;
}