691 lines
23 KiB
Java
691 lines
23 KiB
Java
/**
|
|
* @(#) PersistenciaUsuario.java
|
|
*/
|
|
|
|
package com.tarisan.control;
|
|
|
|
import com.tarisan.data.Tamedico;
|
|
import com.tarisan.data.Usuario;
|
|
import com.tarisan.excepcion.*;
|
|
import com.tarisan.log.*;
|
|
import com.tarisan.util.Utilidades;
|
|
import java.sql.*;
|
|
import java.util.Calendar;
|
|
import java.util.Vector;
|
|
|
|
/**
|
|
* Controla los accesos a la persistencia para la entidad <code>Usuario</code>.
|
|
* @author <a href="mailto:sistemas@imqnavarra.com">Dpto. Informática</a>.
|
|
* @version 1.0, 24/09/2003
|
|
*/
|
|
public class PersistenciaUsuario implements Constantes
|
|
{
|
|
|
|
/**
|
|
* El objeto <code>Paginacion</code> que controla el número de filas a mostrar por cada página.
|
|
*/
|
|
private Paginacion objPaginacion = new Paginacion();
|
|
|
|
|
|
/**
|
|
* Obtiene el valor del objeto <code>Paginacion</code> para saber que página se está visualizando.
|
|
* @return El objeto <code>Paginacion</code>
|
|
*/
|
|
public Paginacion getPaginacion()
|
|
{
|
|
return objPaginacion;
|
|
}
|
|
|
|
/**
|
|
* Selecciona el primer registro de la tabla TAMEDICO encontrado para el usuario conectado a la aplicación Tarisan.
|
|
* <br>Retorna uno de los siguientes objetos:<ul>
|
|
* <li><code>null</code>: si se produce algún error incontrolado</li>
|
|
* <li><code>Usuario</code>: el usuario correcto encontrado en la base de datos</li>
|
|
* <li><code>Integer</code>: el código de error correspondiente al proceso de autenticación</li>
|
|
* </ul>
|
|
* @param codigo El código de usuario introducido en la página de conexión.
|
|
* @param clave La clave de usuario introducida en la página de conexión.
|
|
* @return El objeto resultante del proceso de validación.
|
|
* @throws
|
|
*/
|
|
public Object seleccionar(int codigo, String clave) throws ExcepcionTarisan
|
|
{
|
|
Object retorno = null;
|
|
Usuario usuario = null;
|
|
StringBuffer sqlSelect = new StringBuffer();
|
|
Connection conexion = null;
|
|
|
|
try
|
|
{
|
|
sqlSelect.append("SELECT MEDICO");
|
|
sqlSelect.append(", NOMBRE");
|
|
sqlSelect.append(", APELLIDOS");
|
|
sqlSelect.append(", ESPECIALIDAD");
|
|
sqlSelect.append(", TARIFA");
|
|
sqlSelect.append(", NOMBRE_CAB");
|
|
sqlSelect.append(", DIRECCION_CAB");
|
|
sqlSelect.append(", POBLACION_CAB");
|
|
sqlSelect.append(", TELEFONO_CAB");
|
|
sqlSelect.append(", EMAIL_CAB");
|
|
sqlSelect.append(", COLEGIADO_CAB");
|
|
sqlSelect.append(", ESPECIALIDAD_CAB");
|
|
sqlSelect.append(", BLOQUEO_CLAVE");
|
|
sqlSelect.append(", FECHA_ULT_ACCESO");
|
|
sqlSelect.append(", FECHA_MODIF_CLAVE");
|
|
sqlSelect.append(", PASSWORD");
|
|
sqlSelect.append(" FROM TAMEDICO");
|
|
sqlSelect.append(" WHERE MEDICO = ?");
|
|
|
|
|
|
conexion = ParametrosConfiguracion.dataStore.obtenerConexion();
|
|
|
|
|
|
Object aCondiciones[] = new Object[1];
|
|
aCondiciones[0] = Integer.valueOf(codigo);
|
|
|
|
String bloqueo = "";
|
|
Timestamp fecModifClave = null;
|
|
String password = "";
|
|
Calendar calHoy = null;
|
|
Calendar calInactividad = null;
|
|
Calendar calCaducidad = null;
|
|
Calendar calPreaviso = null;
|
|
|
|
ResultSet rs = ParametrosConfiguracion.dataStore.seleccionar(conexion, sqlSelect.toString(), aCondiciones);
|
|
|
|
while(rs.next())
|
|
{
|
|
|
|
String nombre = "";
|
|
if (rs.getString("NOMBRE") != null){
|
|
nombre = rs.getString("NOMBRE") + " ";
|
|
}
|
|
|
|
String ape = "";
|
|
if (rs.getString("APELLIDOS") != null){
|
|
ape = rs.getString("APELLIDOS");
|
|
}
|
|
|
|
String nombreCab = "";
|
|
if (rs.getString("NOMBRE_CAB") != null){
|
|
nombreCab = rs.getString("NOMBRE_CAB");
|
|
}
|
|
|
|
usuario = new Usuario();
|
|
usuario.setMedico(rs.getInt("MEDICO"));
|
|
usuario.setNombre(nombre + ape);
|
|
usuario.setEspecialidad(rs.getInt("ESPECIALIDAD"));
|
|
usuario.setTarifa(rs.getInt("TARIFA"));
|
|
usuario.setNombreCab(nombreCab);
|
|
usuario.setDireccionCab(rs.getString("DIRECCION_CAB"));
|
|
usuario.setPoblacionCab(rs.getString("POBLACION_CAB"));
|
|
usuario.setTelefonoCab(rs.getString("TELEFONO_CAB"));
|
|
usuario.setEmailCab(rs.getString("EMAIL_CAB"));
|
|
usuario.setColegiadoCab(rs.getString("COLEGIADO_CAB"));
|
|
usuario.setEspecialidadCab(rs.getString("ESPECIALIDAD_CAB"));
|
|
usuario.setFechaUltAcceso(rs.getTimestamp("FECHA_ULT_ACCESO"));
|
|
|
|
bloqueo = rs.getString("BLOQUEO_CLAVE");
|
|
fecModifClave = rs.getTimestamp("FECHA_MODIF_CLAVE");
|
|
password = rs.getString("PASSWORD");
|
|
}
|
|
rs.close();
|
|
|
|
//Primero: se calculan las fechas para su tratamiento posterior
|
|
calHoy = Calendar.getInstance();
|
|
|
|
if (usuario != null)
|
|
{
|
|
|
|
if(usuario.getFechaUltAcceso() != null)
|
|
{
|
|
|
|
//Cálculo de la fecha de fin de actividad de la clave
|
|
calInactividad = Calendar.getInstance();
|
|
calInactividad.setTime((java.util.Date)usuario.getFechaUltAcceso());
|
|
calInactividad.add(Calendar.DATE, ParametrosConfiguracion.diasActividad);
|
|
}
|
|
|
|
if(fecModifClave != null)
|
|
{
|
|
|
|
//Cálculo de la fecha de caducidad de la clave
|
|
calCaducidad = Calendar.getInstance();
|
|
calCaducidad.setTime((java.util.Date)fecModifClave);
|
|
calCaducidad.add(Calendar.DATE, ParametrosConfiguracion.diasCaducidad);
|
|
|
|
//Cálculo de la fecha de preaviso de caducidad de la clave
|
|
calPreaviso = Calendar.getInstance();
|
|
calPreaviso.setTime((java.util.Date)fecModifClave);
|
|
calPreaviso.add(Calendar.DATE, ParametrosConfiguracion.diasCaducidad - ParametrosConfiguracion.diasPreaviso);
|
|
}
|
|
}
|
|
|
|
//Segundo: se evalúa la selección del usuario realizada en la base de datos
|
|
if (usuario == null)
|
|
{
|
|
|
|
//El usuario no se ha encontrado en la base de datos
|
|
retorno = USUARIO_INEXISTENTE;
|
|
}
|
|
else
|
|
{
|
|
|
|
if(usuario.getFechaUltAcceso() == null)
|
|
{
|
|
|
|
//El usuario realiza el primer acceso a la aplicación
|
|
if(password.compareTo(clave) != 0)
|
|
{
|
|
|
|
//El usuario no existe (la clave sin encriptar en la base de datos no es la misma que la escrita en el formulario de login)
|
|
retorno = USUARIO_ERROR_CLAVE;
|
|
}
|
|
else
|
|
{
|
|
|
|
//El usuario existe y se le redigirá a la introducción de la nueva clave, para su encriptación
|
|
retorno = usuario;
|
|
}
|
|
}
|
|
else
|
|
{
|
|
|
|
if(password.compareTo(Utilidades.encripta(clave, String.valueOf(codigo))) != 0)
|
|
{
|
|
|
|
//El usuario no existe (la clave encriptada en la base de datos no es la misma que la escrita en el formulario de login)
|
|
retorno = USUARIO_ERROR_CLAVE;
|
|
}
|
|
else if((bloqueo != null) && (bloqueo.trim().toUpperCase().compareTo("S") == 0))
|
|
{
|
|
|
|
//El usuario está bloqueado
|
|
retorno = USUARIO_BLOQUEADO;
|
|
}
|
|
else if((calCaducidad != null) && calCaducidad.before(calHoy))
|
|
{
|
|
|
|
//El usuario se bloquea por haber excedido la fecha de caducidad
|
|
this.bloquearUsuario(codigo, calHoy);
|
|
retorno = USUARIO_CADUCADO;
|
|
}
|
|
else if((calPreaviso != null) && calPreaviso.before(calHoy) && calHoy.before(calCaducidad))
|
|
{
|
|
|
|
//Se muestra mensaje al usuario de cambio de clave por proximidad de la fecha de caducidad
|
|
usuario.setFechaCaducidad(new Date(calCaducidad.getTimeInMillis()));
|
|
retorno = usuario;
|
|
}
|
|
else if((calInactividad != null) && calInactividad.before(calHoy))
|
|
{
|
|
|
|
//El usuario está bloqueado por período de inactividad
|
|
this.bloquearUsuario(codigo, calHoy);
|
|
retorno = USUARIO_INACTIVO;
|
|
}
|
|
else
|
|
{
|
|
|
|
//El usuario introducido es correcto
|
|
retorno = usuario;
|
|
}
|
|
}
|
|
}
|
|
|
|
ParametrosConfiguracion.dataStore.liberarConexion(conexion);
|
|
LogTarisan.logger.log(NivelLog.DEBUG, "Seleccionado el usuario " + usuario + " de la tabla TAMEDICO (" + sqlSelect + ")");
|
|
}
|
|
catch(SQLException sqle)
|
|
{
|
|
usuario = null;
|
|
LogTarisan.logger.log(NivelLog.ERROR, "Error en la selección de usuario: " + sqle + " (" + sqlSelect + ")");
|
|
throw new ExcepcionTarisan();
|
|
}
|
|
catch(Exception e)
|
|
{
|
|
usuario = null;
|
|
LogTarisan.logger.log(NivelLog.ERROR, "Error en la selección de usuario: " + e + " (" + sqlSelect + ")");
|
|
throw new ExcepcionTarisan();
|
|
}
|
|
|
|
return retorno;
|
|
}
|
|
|
|
|
|
public Usuario seleccionar(int medico) throws ExcepcionTarisan
|
|
{
|
|
return this.seleccionar(medico, 0);
|
|
}
|
|
/**
|
|
* Selecciona el primer registro de la tabla TAMEDICO encontrado para el usuario conectado a la aplicación Tarisan.
|
|
* @param medico El código de usuario introducido en la página de conexión.
|
|
* @param especialidad El código de especialidad del usuario conectado.
|
|
* @return El <code>Usuario</code> encontrado en la tabla de médicos,
|
|
* un objeto vacío <code>Usuario</code> si no se cumplen las condiciones de búsqueda o null si se produce alguna excepción.
|
|
* @throws
|
|
*/
|
|
public Usuario seleccionar(int medico, int especialidad) throws ExcepcionTarisan
|
|
{
|
|
Usuario usuario = null;
|
|
StringBuffer sqlSelect = new StringBuffer();
|
|
|
|
try
|
|
{
|
|
sqlSelect.append("SELECT MEDICO");
|
|
sqlSelect.append(", NOMBRE");
|
|
sqlSelect.append(", APELLIDOS");
|
|
sqlSelect.append(", ESPECIALIDAD");
|
|
sqlSelect.append(", TARIFA");
|
|
sqlSelect.append(", NOMBRE_CAB");
|
|
sqlSelect.append(", DIRECCION_CAB");
|
|
sqlSelect.append(", POBLACION_CAB");
|
|
sqlSelect.append(", TELEFONO_CAB");
|
|
sqlSelect.append(", EMAIL_CAB");
|
|
sqlSelect.append(", COLEGIADO_CAB");
|
|
sqlSelect.append(", ESPECIALIDAD_CAB");
|
|
sqlSelect.append(" FROM TAMEDICO");
|
|
sqlSelect.append(" WHERE MEDICO = ?");
|
|
if(especialidad >0)
|
|
sqlSelect.append(" AND ESPECIALIDAD = ?");
|
|
|
|
Connection conexion = ParametrosConfiguracion.dataStore.obtenerConexion();
|
|
Object aCondiciones[] = null;
|
|
if(especialidad > 0)
|
|
{
|
|
aCondiciones = new Object[2];
|
|
aCondiciones[0] = Integer.valueOf(medico);
|
|
aCondiciones[1] = Integer.valueOf(especialidad);
|
|
}
|
|
else
|
|
{
|
|
aCondiciones = new Object[1];
|
|
aCondiciones[0] = Integer.valueOf(medico);
|
|
}
|
|
|
|
ResultSet rs = ParametrosConfiguracion.dataStore.seleccionar(conexion, sqlSelect.toString(), aCondiciones);
|
|
|
|
while(rs.next())
|
|
{
|
|
usuario = new Usuario();
|
|
usuario.setMedico(rs.getInt("MEDICO"));
|
|
usuario.setNombre(rs.getString("NOMBRE") + " " + rs.getString("APELLIDOS"));
|
|
usuario.setEspecialidad(rs.getInt("ESPECIALIDAD"));
|
|
usuario.setTarifa(rs.getInt("TARIFA"));
|
|
usuario.setNombreCab(rs.getString("NOMBRE_CAB"));
|
|
usuario.setDireccionCab(rs.getString("DIRECCION_CAB"));
|
|
usuario.setPoblacionCab(rs.getString("POBLACION_CAB"));
|
|
usuario.setTelefonoCab(rs.getString("TELEFONO_CAB"));
|
|
usuario.setEmailCab(rs.getString("EMAIL_CAB"));
|
|
usuario.setColegiadoCab(rs.getString("COLEGIADO_CAB"));
|
|
usuario.setEspecialidadCab(rs.getString("ESPECIALIDAD_CAB"));
|
|
}
|
|
rs.close();
|
|
ParametrosConfiguracion.dataStore.liberarConexion(conexion);
|
|
LogTarisan.logger.log(NivelLog.DEBUG, "Seleccionado el usuario " + usuario + " de la tabla TAMEDICO (" + sqlSelect + ")");
|
|
}
|
|
catch(SQLException sqle)
|
|
{
|
|
usuario = null;
|
|
LogTarisan.logger.log(NivelLog.ERROR, "Error en la selección de usuario: " + sqle + " (" + sqlSelect + ")");
|
|
throw new ExcepcionTarisan();
|
|
}
|
|
|
|
return usuario;
|
|
}
|
|
|
|
|
|
/**
|
|
* Modifica el registro correspondiente al usuario conectado marcándolo como bloqueado.
|
|
* <br>Escribe 'S' en el campo BLOQUEO_CLAVE de la tabla TAMEDICO.
|
|
* @param codigo El código de usuario que se intenta conectar.
|
|
* @param fechaAcceso Fecha en la que el usuario ha realizado el acceso a la aplicación. Utilizado para introducir un nuevo registro en la tabla de seguimiento TAREGLOG.
|
|
* @return El resultado de la actualización en base de datos.
|
|
* @throws
|
|
*/
|
|
public boolean bloquearUsuario(int codigo, Calendar fechaAcceso) throws ExcepcionTarisan
|
|
{
|
|
boolean resultado = true;
|
|
|
|
StringBuffer sqlUpdate = new StringBuffer();
|
|
sqlUpdate.append("UPDATE TAMEDICO");
|
|
sqlUpdate.append(" SET BLOQUEO_CLAVE = ?");
|
|
sqlUpdate.append(" WHERE MEDICO = ?");
|
|
|
|
try
|
|
{
|
|
Object[] aValores = new Object[1];
|
|
aValores[0] = "S";
|
|
|
|
Object[] aCondiciones = new Object[1];
|
|
aCondiciones[0] = Integer.valueOf(codigo);
|
|
|
|
Connection conexion = ParametrosConfiguracion.dataStore.obtenerConexion();
|
|
ParametrosConfiguracion.dataStore.iniciarTransaccion(conexion);
|
|
|
|
try
|
|
{
|
|
//dejamos al usuario bloqueado
|
|
LogTarisan.logger.log(NivelLog.DEBUG, "Llega 332: "+sqlUpdate.toString());
|
|
resultado = ParametrosConfiguracion.dataStore.actualizar(sqlUpdate.toString(), aValores, aCondiciones, conexion);
|
|
LogTarisan.logger.log(NivelLog.DEBUG, "Llega 334, ha actualizado ");
|
|
/////////////////////////////////////////////////////////////////////
|
|
//insertamos un registro en la tabla tareglog para indicar los movimientos realizados por el usuario
|
|
Timestamp tsFechaAcceso = new Timestamp(fechaAcceso.getTimeInMillis());
|
|
PersistenciaTareglog perTareglog = new PersistenciaTareglog();
|
|
//obtenemos el ultimo valor del campo correlativo de la tabla tareglog.
|
|
//Este campo es un numero correlativo utilizado para diferenciar las claves.
|
|
int intUltimoValorCorrelativo = perTareglog.obtenerUltimoValorCorrelativo(codigo, tsFechaAcceso);
|
|
perTareglog.insertarLog(codigo, tsFechaAcceso, Calendar.getInstance(), intUltimoValorCorrelativo + 1, "TAMEDICO", Utilidades.obtenerSentenciaSQL(sqlUpdate, aValores, aCondiciones), "", conexion);
|
|
/////////////////////////////////////////////////////////////////////
|
|
|
|
//las actualizaciones han ido bien. Confirmamos la transaccion
|
|
ParametrosConfiguracion.dataStore.confirmarTransaccion(conexion);
|
|
}
|
|
catch (ExcepcionTarisan ex)
|
|
{
|
|
ParametrosConfiguracion.dataStore.deshacerTransaccion(conexion);
|
|
LogTarisan.logger.log(NivelLog.ERROR, "ExcepcionTarisan: " + ex.getMensaje());
|
|
throw (ExcepcionTarisan)ex;
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
ParametrosConfiguracion.dataStore.deshacerTransaccion(conexion);
|
|
LogTarisan.logger.log(NivelLog.ERROR, "Exception: " + ex.getMessage());
|
|
throw new ExcepcionTarisan(ex.getMessage());
|
|
}
|
|
finally
|
|
{
|
|
//liberamos la conexion
|
|
ParametrosConfiguracion.dataStore.liberarConexion(conexion);
|
|
}
|
|
}
|
|
catch(ExcepcionTarisan ex)
|
|
{
|
|
LogTarisan.logger.log(NivelLog.ERROR, "Error en el bloqueo de usuario: " + ex + " (" + sqlUpdate + ")");
|
|
throw ex;
|
|
}
|
|
|
|
return true;
|
|
}
|
|
|
|
|
|
/**
|
|
* Actualiza la fecha de último acceso a la aplicación una vez conectado con éxito.
|
|
* <br>Escribe la fecha y hora actual en el campo FECHA_ULT_ACCESO de la tabla TAMEDICO.
|
|
* @param codigo El código de usuario a modificar.
|
|
* @param calHoy La fecha actual a poner como fecha de último acceso.
|
|
* @return El resultado de la actualización en base de datos.
|
|
* @throws
|
|
*/
|
|
public boolean actualizarFechaAcceso(int codigo, Calendar calHoy) throws ExcepcionTarisan
|
|
{
|
|
boolean resultado = true;
|
|
Connection conexion = null;
|
|
|
|
StringBuffer sqlUpdate = new StringBuffer();
|
|
sqlUpdate.append("UPDATE TAMEDICO");
|
|
sqlUpdate.append(" SET FECHA_ULT_ACCESO = ?");
|
|
sqlUpdate.append(" WHERE MEDICO = ?");
|
|
|
|
try
|
|
{
|
|
Object[] aValores = new Object[1];
|
|
aValores[0] = new Timestamp(calHoy.getTimeInMillis());
|
|
|
|
Object[] aCondiciones = new Object[1];
|
|
aCondiciones[0] = Integer.valueOf(codigo);
|
|
|
|
resultado = ParametrosConfiguracion.dataStore.actualizar(sqlUpdate.toString(), aValores, aCondiciones);
|
|
}
|
|
catch(ExcepcionTarisan ex)
|
|
{
|
|
LogTarisan.logger.log(NivelLog.ERROR, "Error en la actualización de la fecha de acceso de usuario: " + ex + " (" + sqlUpdate + ")");
|
|
throw ex;
|
|
}
|
|
|
|
return true;
|
|
}
|
|
|
|
public Vector listado_usuarios(int pagina, String strCampoApellido)
|
|
{
|
|
int elementosPaginacion = 1;
|
|
|
|
Vector vResultado = new Vector();
|
|
Tamedico tamedico = null;
|
|
StringBuffer strSql = new StringBuffer();
|
|
strSql.append("SELECT APELLIDOS, NOMBRE, MEDICO");
|
|
strSql.append(" FROM TAMEDICO");
|
|
Object aCondiciones[] = null;
|
|
|
|
//comprobamos si se trata de una busqueda por apellido
|
|
if (!strCampoApellido.equalsIgnoreCase("")) //la sql tiene una condición de búsqueda
|
|
{
|
|
if (strCampoApellido.endsWith("*"))
|
|
{
|
|
strCampoApellido=strCampoApellido.replace('*', '%');
|
|
}
|
|
else
|
|
{
|
|
strCampoApellido="%" + strCampoApellido + "%";
|
|
}
|
|
|
|
aCondiciones = new Object[1];
|
|
aCondiciones[0] = strCampoApellido;
|
|
strSql.append(" WHERE APELLIDOS LIKE ?");
|
|
}
|
|
else
|
|
{
|
|
aCondiciones = new Object[0];
|
|
}
|
|
strSql.append(" ORDER BY APELLIDOS, NOMBRE");
|
|
|
|
|
|
try
|
|
{
|
|
Connection conexion = ParametrosConfiguracion.dataStore.obtenerConexion();
|
|
ResultSet rs = ParametrosConfiguracion.dataStore.seleccionar(conexion, strSql.toString(), aCondiciones);
|
|
|
|
objPaginacion.inicializarPaginacion(rs);
|
|
if (objPaginacion.getNumeroRegistrosTotales()!=0)
|
|
{
|
|
objPaginacion.realizarPaginacion(rs, pagina);
|
|
|
|
while(rs.next() && (elementosPaginacion <= Paginacion.getFilasPorPagina()))
|
|
{
|
|
tamedico = new Tamedico();
|
|
tamedico.setApellidos(rs.getString("APELLIDOS"));
|
|
tamedico.setMedico(rs.getInt("MEDICO"));
|
|
tamedico.setNombre(rs.getString("NOMBRE"));
|
|
vResultado.addElement(tamedico);
|
|
if (pagina != 0)
|
|
{
|
|
elementosPaginacion++;
|
|
}
|
|
}
|
|
}
|
|
rs.close();
|
|
ParametrosConfiguracion.dataStore.liberarConexion(conexion);
|
|
LogTarisan.logger.log(NivelLog.DEBUG, "Seleccionados " + vResultado.size() + " registros de la tabla TAMEDICO (" + strSql.toString() + ")");
|
|
}
|
|
catch (ExcepcionTarisan sqle)
|
|
{
|
|
LogTarisan.logger.log(NivelLog.ERROR, "Error en la selección de TAMEDICO: " + sqle + " (" + strSql.toString() + ")");
|
|
}
|
|
catch(SQLException sqle)
|
|
{
|
|
LogTarisan.logger.log(NivelLog.ERROR, "Error en la selección de TAMEDICO: " + sqle + " (" + strSql.toString() + ")");
|
|
}
|
|
catch(Exception sqle)
|
|
{
|
|
LogTarisan.logger.log(NivelLog.ERROR, "Error en la selección de TAMEDICO: " + sqle + " (" + strSql.toString() + ")");
|
|
}
|
|
|
|
return vResultado;
|
|
}
|
|
|
|
|
|
/**
|
|
* Selecciona los registros de la tabla TAMEDICO en función de la sentencia SELECT indicada.
|
|
* Retorna la lista con todos los usuarios de la aplicación.
|
|
* @param sqlSelect La sentencia SELECT de selección.
|
|
* @param pagina El número de página a mostrar.
|
|
* @param aCondiciones El array que contiene las condiciones utilizadas en la sentencia SELECT.
|
|
* @return El Vector con la lista de objetos <code>Tamedico</code> obtenidos.
|
|
* @throws
|
|
*/
|
|
public Vector seleccionar(String sqlSelect, int pagina, Object[] aCondiciones) throws ExcepcionTarisan
|
|
{
|
|
int elementosPaginacion = 1;
|
|
|
|
Vector vResultado = new Vector();
|
|
Tamedico tamedico = 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()))
|
|
{
|
|
tamedico = new Tamedico();
|
|
tamedico.setApellidos(rs.getString("APELLIDOS"));
|
|
tamedico.setMedico(rs.getInt("MEDICO"));
|
|
tamedico.setNombre(rs.getString("NOMBRE"));
|
|
vResultado.addElement(tamedico);
|
|
if (pagina != 0)
|
|
{
|
|
elementosPaginacion++;
|
|
}
|
|
}
|
|
}
|
|
rs.close();
|
|
ParametrosConfiguracion.dataStore.liberarConexion(conexion);
|
|
LogTarisan.logger.log(NivelLog.DEBUG, "Seleccionados " + vResultado.size() + " registros de la tabla TAMEDICO (" + sqlSelect + ")");
|
|
}
|
|
catch (ExcepcionTarisan sqle)
|
|
{
|
|
LogTarisan.logger.log(NivelLog.ERROR, "Error en la selección de TAMEDICO: " + sqle + " (" + sqlSelect + ")");
|
|
throw (ExcepcionTarisan)sqle;
|
|
}
|
|
catch(SQLException sqle)
|
|
{
|
|
LogTarisan.logger.log(NivelLog.ERROR, "Error en la selección de TAMEDICO: " + sqle + " (" + sqlSelect + ")");
|
|
throw new ExcepcionTarisan(sqle.getMessage());
|
|
}
|
|
catch(Exception sqle)
|
|
{
|
|
LogTarisan.logger.log(NivelLog.ERROR, "Error en la selección de TAMEDICO: " + sqle + " (" + sqlSelect + ")");
|
|
throw new ExcepcionTarisan(sqle.getMessage());
|
|
}
|
|
catch(Throwable sqle)
|
|
{
|
|
LogTarisan.logger.log(NivelLog.ERROR, "Error en la selección de TAMEDICO: " + sqle + " (" + sqlSelect + ")");
|
|
throw new ExcepcionTarisan(sqle.getMessage());
|
|
|
|
}
|
|
|
|
return vResultado;
|
|
}
|
|
|
|
public Object seleccionarSimulado(int codigo) throws ExcepcionTarisan
|
|
{
|
|
Object retorno = null;
|
|
Usuario usuario = null;
|
|
StringBuffer sqlSelect = new StringBuffer();
|
|
Connection conexion = null;
|
|
|
|
try
|
|
{
|
|
sqlSelect.append("SELECT MEDICO");
|
|
sqlSelect.append(", NOMBRE");
|
|
sqlSelect.append(", APELLIDOS");
|
|
sqlSelect.append(", ESPECIALIDAD");
|
|
sqlSelect.append(", TARIFA");
|
|
sqlSelect.append(", NOMBRE_CAB");
|
|
sqlSelect.append(", DIRECCION_CAB");
|
|
sqlSelect.append(", POBLACION_CAB");
|
|
sqlSelect.append(", TELEFONO_CAB");
|
|
sqlSelect.append(", EMAIL_CAB");
|
|
sqlSelect.append(", COLEGIADO_CAB");
|
|
sqlSelect.append(", ESPECIALIDAD_CAB");
|
|
sqlSelect.append(", BLOQUEO_CLAVE");
|
|
sqlSelect.append(", FECHA_ULT_ACCESO");
|
|
sqlSelect.append(", FECHA_MODIF_CLAVE");
|
|
sqlSelect.append(", PASSWORD");
|
|
sqlSelect.append(" FROM TAMEDICO");
|
|
sqlSelect.append(" WHERE MEDICO = ?");
|
|
|
|
|
|
conexion = ParametrosConfiguracion.dataStore.obtenerConexion();
|
|
|
|
|
|
Object aCondiciones[] = new Object[1];
|
|
aCondiciones[0] = Integer.valueOf(codigo);
|
|
|
|
|
|
ResultSet rs = ParametrosConfiguracion.dataStore.seleccionar(conexion, sqlSelect.toString(), aCondiciones);
|
|
|
|
while(rs.next())
|
|
{
|
|
|
|
String nombre = "";
|
|
if (rs.getString("NOMBRE") != null){
|
|
nombre = rs.getString("NOMBRE") + " ";
|
|
}
|
|
|
|
String ape = "";
|
|
if (rs.getString("APELLIDOS") != null){
|
|
ape = rs.getString("APELLIDOS");
|
|
}
|
|
|
|
String nombreCab = "";
|
|
if (rs.getString("NOMBRE_CAB") != null){
|
|
nombreCab = rs.getString("NOMBRE_CAB");
|
|
}
|
|
|
|
usuario = new Usuario();
|
|
usuario.setMedico(rs.getInt("MEDICO"));
|
|
usuario.setNombre(nombre + ape);
|
|
usuario.setEspecialidad(rs.getInt("ESPECIALIDAD"));
|
|
usuario.setTarifa(rs.getInt("TARIFA"));
|
|
usuario.setNombreCab(nombreCab);
|
|
usuario.setDireccionCab(rs.getString("DIRECCION_CAB"));
|
|
usuario.setPoblacionCab(rs.getString("POBLACION_CAB"));
|
|
usuario.setTelefonoCab(rs.getString("TELEFONO_CAB"));
|
|
usuario.setEmailCab(rs.getString("EMAIL_CAB"));
|
|
usuario.setColegiadoCab(rs.getString("COLEGIADO_CAB"));
|
|
usuario.setEspecialidadCab(rs.getString("ESPECIALIDAD_CAB"));
|
|
usuario.setFechaUltAcceso(rs.getTimestamp("FECHA_ULT_ACCESO"));
|
|
}
|
|
rs.close();
|
|
|
|
|
|
retorno = usuario;
|
|
|
|
ParametrosConfiguracion.dataStore.liberarConexion(conexion);
|
|
LogTarisan.logger.log(NivelLog.DEBUG, "Seleccionado el usuario " + usuario + " de la tabla TAMEDICO (" + sqlSelect + ")");
|
|
}
|
|
catch(SQLException sqle)
|
|
{
|
|
usuario = null;
|
|
LogTarisan.logger.log(NivelLog.ERROR, "Error en la selección de usuario: " + sqle + " (" + sqlSelect + ")");
|
|
throw new ExcepcionTarisan();
|
|
}
|
|
catch(Exception e)
|
|
{
|
|
usuario = null;
|
|
LogTarisan.logger.log(NivelLog.ERROR, "Error en la selección de usuario: " + e + " (" + sqlSelect + ")");
|
|
throw new ExcepcionTarisan();
|
|
}
|
|
|
|
return retorno;
|
|
}
|
|
|
|
}
|