/** * @(#) PersistenciaTapolfac.java */ package com.tarisan.control; import com.tarisan.data.Tapolfac; import com.tarisan.log.*; import com.tarisan.util.Utilidades; import com.tarisan.excepcion.ExcepcionTarisan; import java.sql.*; import java.util.Vector; /** * Controla los accesos a la persistencia para la entidad Tapolfac. * @author Dpto. Informática. * @version 1.0, 24/09/2003 */ public class PersistenciaTapolfac { /** * El objeto Paginacion que controla el número de filas a mostrar por cada página. */ private Paginacion objPaginacion = new Paginacion(); /** * Obtiene el valor del objeto Paginacion para saber que página se está visualizando. * @return El objeto Paginacion. */ public Paginacion getPaginacion() { return objPaginacion; } /** * Selecciona los registros de la tabla TAPOLFAC en función de la sentencia SELECT indicada. * @param sqlSelect La sentencia SELECT de selección. * @param pagina Número de página a mostrar. * @param aCondiciones Array que contiene los parámetros utilizados en la sentencia SELECT. * @return El Vector con los registros seleccionados (todos pertenencientes a la clase Tapolfac). * @throws */ public Vector seleccionar(String sqlSelect, int pagina, Object[] aCondiciones) throws ExcepcionTarisan { int elementosPaginacion=1; Vector vResultado = new Vector(); Tapolfac tapolfac = null; try { Connection conexion = ParametrosConfiguracion.dataStore.obtenerConexion(); ResultSet rs = ParametrosConfiguracion.dataStore.seleccionar(conexion, sqlSelect, aCondiciones); objPaginacion.inicializarPaginacion(rs); if (objPaginacion.getNumeroRegistrosTotales()!=0) { objPaginacion.realizarPaginacion(rs, pagina); while(rs.next() && (elementosPaginacion <= Paginacion.getFilasPorPagina())) { tapolfac = new Tapolfac(); tapolfac.setTitular(rs.getString("TITULAR")); tapolfac.setColec(rs.getInt("COLEC")); tapolfac.setPoliza(rs.getDouble("POLIZA")); tapolfac.setBeneficiarios(rs.getInt("BENEFICIARIOS")); vResultado.addElement(tapolfac); if (pagina!=0) //Se quiere realizar la paginacion elementosPaginacion++; } } rs.close(); ParametrosConfiguracion.dataStore.liberarConexion(conexion); LogTarisan.logger.log(NivelLog.DEBUG, "Seleccionados " + vResultado.size() + " registros de la tabla TAPOLFAC (" + sqlSelect + ")"); } catch (ExcepcionTarisan sqle) { LogTarisan.logger.log(NivelLog.ERROR, "Error en la selección de TAPOLFAC: " + sqle + " (" + sqlSelect + ")"); throw (ExcepcionTarisan)sqle; } catch(SQLException sqle) { LogTarisan.logger.log(NivelLog.ERROR, "Error en la selección de TAPOLFAC: " + sqle + " (" + sqlSelect + ")"); throw new ExcepcionTarisan(sqle.getMessage()); } catch(Exception sqle) { LogTarisan.logger.log(NivelLog.ERROR, "Error en la selección de TAPOLFAC: " + sqle + " (" + sqlSelect + ")"); throw new ExcepcionTarisan(sqle.getMessage()); } catch(Throwable sqle) { LogTarisan.logger.log(NivelLog.ERROR, "Error en la selección de TAPOLFAC: " + sqle + " (" + sqlSelect + ")"); throw new ExcepcionTarisan(sqle.getMessage()); } return vResultado; } public int obtenerNumerPolizasMedicos(int medico) { int resul = 0; String strSql = ""; try { strSql = "Select count(*) from tapolfac where medico = " + medico +" group by colec, poliza"; Connection conexion = ParametrosConfiguracion.dataStore.obtenerConexion(); ResultSet rs = ParametrosConfiguracion.dataStore.seleccionar(conexion, strSql); if(rs.next()) { rs.last(); resul = rs.getRow(); } } catch (ExcepcionTarisan sqle) { LogTarisan.logger.log(NivelLog.ERROR, "Error en la selección obtenerNumerPolizasMedicos: " + sqle + " (" + strSql + ")"); } catch (SQLException e) { LogTarisan.logger.log(NivelLog.ERROR, "Error en la selección obtenerNumerPolizasMedicos: " + e + " (" + strSql + ")"); } return resul; } /** * Obtiene el número total de beneficiarios del total de pólizas de la tabla TAPOLFAC dependiendo del médico que este conectado. * @param medico El código del médico conectado a la aplicación. * @return El número total de beneficiarios del total de pólizas pertenecientes al médico conectado. * @throws */ public int obtenerNumTotalBeneficiarios(int medico) throws ExcepcionTarisan { String strSql=""; int intTotalBeneficiarios=0; try { strSql = "select count(*) as totalBeneficiarios from tapolfac where medico=" + medico; Connection conexion = ParametrosConfiguracion.dataStore.obtenerConexion(); ResultSet rs = ParametrosConfiguracion.dataStore.seleccionar(conexion, strSql); if (rs.next()) intTotalBeneficiarios = rs.getInt("totalBeneficiarios"); rs.close(); ParametrosConfiguracion.dataStore.liberarConexion(conexion); LogTarisan.logger.log(NivelLog.DEBUG, "Total beneficiarios " + intTotalBeneficiarios + " de la tabla TAPOLFAC (" + strSql + ")"); } catch (ExcepcionTarisan sqle) { LogTarisan.logger.log(NivelLog.ERROR, "Error en la selección obtenerNumTotalBeneficiarios: " + sqle + " (" + strSql + ")"); throw (ExcepcionTarisan)sqle; } catch(SQLException sqle) { LogTarisan.logger.log(NivelLog.ERROR, "Error en la selección obtenerNumTotalBeneficiarios: " + sqle + " (" + strSql + ")"); throw new ExcepcionTarisan(sqle.getMessage()); } catch(Exception sqle) { LogTarisan.logger.log(NivelLog.ERROR, "Error en la selección obtenerNumTotalBeneficiarios: " + sqle + " (" + strSql + ")"); throw new ExcepcionTarisan(sqle.getMessage()); } catch(Throwable sqle) { LogTarisan.logger.log(NivelLog.ERROR, "Error en la selección obtenerNumTotalBeneficiarios: " + sqle + " (" + strSql + ")"); throw new ExcepcionTarisan(sqle.getMessage()); } return intTotalBeneficiarios; } /** * Indica si la póliza es una de las igualas de un determinado médico. * @param medico El código del médico. * @param colectivo El código del colectivo. * @param poliza El código de la póliza. * @return Valor entero que indica si la póliza es una de las igualas del médico (1), es iguala de otro médico (2) o no es * iguala (0) * @throws * */ public Integer esPolizaIgualaMedico(int medico, long colectivo, double poliza) throws ExcepcionTarisan { StringBuffer strSql = new StringBuffer(); Object aCondiciones[]=null; Integer blnEsPolizaIgualaMedico = 0; Integer blnEsMutualista = 0; /* * Manda el Dr. Indave una incidencia: * https://incidencias.imqnavarra.com/soporte/scp/tickets.php?id=52142 * para que los mutualistas puedan ir al médico de cabecera que quieran * pero solo los mutualistas, no los directos. */ strSql.append("Select count(*) from TTCOLECT where "); strSql.append("COLECTIVO=? and "); strSql.append("contrato in (711, 712,713)"); aCondiciones = new Object[1]; aCondiciones[0]=Long.valueOf(colectivo); Connection conexion = ParametrosConfiguracion.dataStore.obtenerConexion(); ResultSet rs = ParametrosConfiguracion.dataStore.seleccionar(conexion, strSql.toString(), aCondiciones); try{ LogTarisan.logger.log(NivelLog.DEBUG, "Vamos a comprobar si es mutualista"); if(rs.next()) { LogTarisan.logger.log(NivelLog.DEBUG, "Es mutualista "); blnEsMutualista = 1; rs.close(); ParametrosConfiguracion.dataStore.liberarConexion(conexion); aCondiciones=null; } else{ rs.close(); ParametrosConfiguracion.dataStore.liberarConexion(conexion); LogTarisan.logger.log(NivelLog.DEBUG, "No es mutualista, seguimos comprobando"); aCondiciones=null; } } catch(SQLException sqle) { LogTarisan.logger.log(NivelLog.ERROR, "Error en la selección de TAPOLFAC: " + sqle + " (" + strSql.toString() + ")"); throw new ExcepcionTarisan(sqle.getMessage()); } try { strSql = new StringBuffer(); strSql.append("SELECT *"); strSql.append(" FROM tapolfac"); //strSql.append(" WHERE medico=?"); //strSql.append(" AND colec=?"); strSql.append(" where colec=?"); strSql.append(" AND poliza=?"); //strSql.append(" and medico != 0"); /* * El médico 0 es el sns, si ponemos la excepcion consideramos que los que tienen SNS pueden ir a los medicos de cabecera del cuadro. * Si la quitamos, los que van a SNS no pueden ir a los médicos del cuadro. * */ aCondiciones = new Object[2]; /*aCondiciones[0]=Integer.valueOf(medico); aCondiciones[1]=Integer.valueOf(colectivo); aCondiciones[2]=Double.valueOf(poliza);*/ aCondiciones[0]=Long.valueOf(colectivo); aCondiciones[1]=Double.valueOf(poliza); /* * No necesitamos volver a definir las variables, ya que las hemos definido arriba para comprobar si es mutualista. */ conexion = ParametrosConfiguracion.dataStore.obtenerConexion(); rs = ParametrosConfiguracion.dataStore.seleccionar(conexion, strSql.toString(), aCondiciones); //nos posicionamos en el registro if (rs.next()){ int sql_medico = rs.getInt("medico"); if(sql_medico == medico){ //la poliza se trata de una iguala del medico blnEsPolizaIgualaMedico = 1; LogTarisan.logger.log(NivelLog.DEBUG, "La poliza es una de las igualas del medico " + blnEsPolizaIgualaMedico + " (" + strSql.toString() + ")"); } else{ //la poliza es iguala de otro médico if(blnEsMutualista == 1){ //Los mutualistas pueden ir a cualquier médico de cabecera. blnEsPolizaIgualaMedico = 0; } else{ blnEsPolizaIgualaMedico = 2; } LogTarisan.logger.log(NivelLog.DEBUG, "La poliza es una de las igualas pero de otro medico " + blnEsPolizaIgualaMedico + " (" + strSql.toString() + ")"); } } rs.close(); ParametrosConfiguracion.dataStore.liberarConexion(conexion); } catch (ExcepcionTarisan sqle) { LogTarisan.logger.log(NivelLog.ERROR, "Error en la selección de TAPOLFAC: " + sqle + " (" + strSql.toString() + ")"); throw (ExcepcionTarisan)sqle; } catch(SQLException sqle) { LogTarisan.logger.log(NivelLog.ERROR, "Error en la selección de TAPOLFAC: " + sqle + " (" + strSql.toString() + ")"); throw new ExcepcionTarisan(sqle.getMessage()); } catch(Exception sqle) { LogTarisan.logger.log(NivelLog.ERROR, "Error en la selección de TAPOLFAC: " + sqle + " (" + strSql.toString() + ")"); throw new ExcepcionTarisan(sqle.getMessage()); } catch(Throwable sqle) { LogTarisan.logger.log(NivelLog.ERROR, "Error en la selección de TAPOLFAC: " + sqle + " (" + strSql.toString() + ")"); throw new ExcepcionTarisan(sqle.getMessage()); } return blnEsPolizaIgualaMedico; } public Vector listado_igualados(String igualado, int medico, int intPagina) { Vector resul = new Vector(); StringBuffer strSql = new StringBuffer(); Object [] aCondiciones = new Object[1]; String consulta = ""; if(igualado.length()==0) { strSql.append("SELECT TITULAR, COLEC, POLIZA, BENEFICIARIOS"); strSql.append(" FROM TAPOLFAC"); strSql.append(" WHERE MEDICO=?"); strSql.append(" ORDER BY TITULAR"); } else { strSql.append("SELECT TITULAR, COLEC, POLIZA, BENEFICIARIOS"); strSql.append(" FROM TAPOLFAC"); strSql.append(" WHERE MEDICO=?"); strSql.append(" AND TITULAR LIKE '%"+igualado+"%'"); strSql.append(" ORDER BY TITULAR"); } aCondiciones[0] = Integer.valueOf(medico); try { resul = this.seleccionar(strSql.toString(), intPagina, aCondiciones); consulta = Utilidades.obtenerSentenciaSQL(strSql, null, aCondiciones); } catch (ExcepcionTarisan e) { LogTarisan.logger.log(NivelLog.ERROR, "Error en la selección de Tapolfac (listado_igualados): " + e + " (" + consulta + ")"); } return resul; } }