Implementación: Sistema de Reservaciones con BD - cannes

Anuncio
Implementación: Sistema de Reservaciones con BD y Archivos
Weitzenfeld
InterfaceUsuario.java
class InterfaceUsuario extends Frame implements WindowListener,
ActionListener {
private Pagina pagina; // pagina a desplegar
private Manejador manejador;
public InterfazUsuario() {
setSize(800,600);
setBackground(Color.lightGray);
addWindowListener(this);
ManejadorPrincipal manejador = new ManejadorPrincipal(this);
manejador.ejecutarTransaccionInicializar();
}
public void desplegarPagina(Pagina p) {
if (pagina != null)
pagina.resetPagina(this);
if (p != null)
pagina = p;
if (pagina != null)
pagina.desplegarPagina(this);
show();
}
public void setPagina (Pagina p) { pagina = p; }
public void setManejador (Manejador m) { manejador = m; }
public void actionPerformed(ActionEvent event) {
System.out.println("Action: "+event.getActionCommand());
if (manejador != null)
manejador.manejarEvento(event.getActionCommand());
else
System.out.println("Manejador nulo");
}
public void windowClosed(WindowEvent event) { }
public void windowDeiconified(WindowEvent event) { }
public void windowIconified(WindowEvent event) { }
public void windowActivated(WindowEvent event) { }
public void windowDeactivated(WindowEvent event) { }
public void windowOpened(WindowEvent event) { }
public void windowClosing(WindowEvent event) {
System.exit(0);
}
public static void main(String[] args) {
System.out.println("Starting System...");
InterfazUsuario iu = new InterfazUsuario();
}
}
Manejador.java
public abstract class Manejador {
protected InterfaceUsuario interfaceUsuario;
protected Pagina pagina;
protected Pagina rPagina;
protected Manejador mParent;
static protected boolean db_flag; // true - BD, false - archivos
1
Implementación: Sistema de Reservaciones con BD y Archivos
Weitzenfeld
public Manejador(InterfaceUsuario ui) {
interfaceUsuario = ui;
}
public Manejador(Manejador m,InterfaceUsuario ui) {
interfaceUsuario = ui;
mParent = m;
}
public void setPaginaRegresar(Pagina p) {
rPagina = p;
}
public void setPagina(Pagina p) {
pagina = p;
}
public Pagina getPaginaRegresar() {
return rPagina;
}
public Pagina getPagina() {
return pagina;
}
public void desplegarPagina(Pagina p) {
pagina = p;
if (pagina != null) {
interfaceUsuario.setManejador(p.getManejador());
interfaceUsuario.desplegarPagina(p);
}
else
System.out.print("Pagina Nula");
}
public void manejarEventosRegresarSalir(String str) {
if (str.equals("Regresar")) {
rPagina = pagina.getPaginaRegresar();
desplegarPagina(rPagina);
}
else if (str.equals("Salir"))
System.exit(0);
else
System.out.println("Error en pagina: "+this+", Evento: "+str);
}
public abstract void manejarEvento(String str);
public void escribirElementos(Pagina p,Datos datos) {
p.escribirElementos(datos);
}
public void leerElementos(Pagina p,Datos datos) {
p.leerElementos(datos);
}
public void print(Vector lista) {
int n = lista.size();
for (int i = 0; i < n; i++) {
Datos datos = (Datos) lista.elementAt(i);
datos.printAll();
}
}
}
ManejadorPrincipal.java
2
Implementación: Sistema de Reservaciones con BD y Archivos
Weitzenfeld
public class ManejadorPrincipal extends Manejador {
private ManejadorRegistroUsuario mr;
private ManejadorServicio ms;
public ManejadorPrincipal(InterfaceUsuario ui) {
super(ui);
db_flag = true;
}
// Contrato 1
public void manejarEvento(String str) {
if (str.equals("Registrarse por Primera Vez"))
ejecutarTransaccionCrearRegistroUsuario();
else if (str.equals("OK")) {
String login = pagina.getElemento("login");
String passwd = pagina.getElemento("password");
ejecutarTransaccionValidarRegistro(login,passwd);
}
else if (str.equals("Salir"))
System.exit(0);
else
System.out.println("Error en ManejadorPrincipal: "+str);
}
// Contrato 2
public void ejecutarTransaccionInicializar() {
desplegarPagina(new PaginaPrincipal(interfaceUsuario,this));
}
// Responsabilidades Privadas
public void ejecutarTransaccionCrearRegistroUsuario() {
if (mr == null)
mr = new ManejadorRegistroUsuario(this,interfaceUsuario);
mr.ejecutarTransaccionCrear(pagina);
}
public void ejecutarTransaccionValidarRegistro(String log,String pass) {
if (mr == null)
mr = new ManejadorRegistroUsuario(this,interfaceUsuario);
if (mr.ejecutarTransaccionValidarRegistro(log,pass) == true)
ejecutarTransaccionServicio(mr);
else
desplegarPagina(pagina);
}
public void ejecutarTransaccionServicio(ManejadorRegistroUsuario mr) {
if (ms == null)
ms = new ManejadorServicio(this,interfaceUsuario);
ms.setManejadorRegistro(mr);
ms.ejecutarTransaccionInicializar(pagina);
}
}
ManejadorRegistroUsuario.java
public class ManejadorRegistroUsuario extends Manejador {
private
private
private
private
Pagina paginaCrearRegUsuario;
Pagina paginaObtenerRegUsuario;
RegistroUsuario registroUsuario;
ManejadorRegistroTarjeta mrt;
3
Implementación: Sistema de Reservaciones con BD y Archivos
Weitzenfeld
4
private InterfaceRegistro interfaceRegistro;
public ManejadorRegistroUsuario(Manejador m,InterfaceUsuario ui) {
super(m,ui);
registroUsuario = new RegistroUsuario();
if (interfaceRegistro == null) {
if (db_flag == true) {
System.out.println("Usando Base de Datos");
interfaceRegistro = new InterfaceBaseDatosRegistro();
}
else {
System.out.println("Usando Archivos");
interfaceRegistro = new InterfaceArchivoRegistro();
}
}
}
public InterfaceRegistro getInterfaceRegistro() {
return interfaceRegistro;
}
// Contrato 1
public void manejarEvento(String str) {
if (str.equals("Registrar"))
ejecutarTransaccionCrear();
else if (str.equals("Actualizar"))
ejecutarTransaccionActualizar();
else if (str.equals("Eliminar"))
ejecutarTransaccionEliminar();
else if (str.equals("Registrar Tarjeta"))
ejecutarTransaccionRegistrarTarjeta();
else
manejarEventosRegresarSalir(str);
}
// Contrato 2: Crear
public void ejecutarTransaccionCrear(Pagina p) {
if (paginaCrearRegUsuario == null)
paginaCrearRegUsuario =
new PaginaCrearRegUsuario(p,interfaceUsuario,this);
desplegarPagina(paginaCrearRegUsuario);
}
// Contrato 3: Validar
public boolean ejecutarTransaccionValidarRegistro(String log, String pass)
{
return interfaceRegistro.validarRegistro(registroUsuario,log,pass);
}
// Contrato 4: Obtener
public void ejecutarTransaccionObtener(Pagina p) {
if (paginaObtenerRegUsuario == null)
paginaObtenerRegUsuario =
new PaginaObtenerRegUsuario(p,interfaceUsuario,this);
escribirElementos(paginaObtenerRegUsuario,registroUsuario);
desplegarPagina(paginaObtenerRegUsuario);
}
// Responsabildiades Privadas
public void ejecutarTransaccionCrear() {
registroUsuario = new RegistroUsuario();
leerElementos(pagina,registroUsuario);
interfaceRegistro.escribirRegistro(registroUsuario);
Implementación: Sistema de Reservaciones con BD y Archivos
Weitzenfeld
ejecutarTransaccionObtener(pagina);
}
public void ejecutarTransaccionActualizar() {
leerElementos(pagina,registroUsuario);
interfaceRegistro.actualizarRegistro(registroUsuario);
}
public void ejecutarTransaccionEliminar() {
interfaceRegistro.eliminarRegistro(registroUsuario);
ejecutarTransaccionCrear(pagina);
}
public void ejecutarTransaccionRegistrarTarjeta() {
if (registroUsuario == null)
System.out.println("Registro Invalido");
else {
if (mrt == null)
mrt = new ManejadorRegistroTarjeta(this,interfaceUsuario);
String id = registroUsuario.elementAt(0);
mrt.ejecutarTransaccionInicializar(pagina,id);
}
}
}
Pagina.java
public abstract class Pagina
{
protected InterfaceUsuario interfaceUsuario;
protected Manejador manejador;
protected Pagina pRegresar; // pagina de retorno
protected Vector paneles,botones,textos,etiquetas;
protected Panel panel;
protected Button boton;
protected TextField texto;
protected Label etiqueta;
public Pagina() {
resetPagina();
createPagina();
}
public Pagina(Pagina p) {
this();
pRegresar = p;
}
public Pagina(InterfaceUsuario ui,Manejador m) {
this();
interfaceUsuario = ui;
manejador = m;
}
public Pagina(Pagina p,InterfaceUsuario ui,Manejador m) {
this(p);
interfaceUsuario = ui;
manejador = m;
}
public abstract void createPagina();
public void agregarBotonesRegresarSalir(Panel panel){
boton = new Button ("Regresar");
botones.addElement(boton);
5
Implementación: Sistema de Reservaciones con BD y Archivos
Weitzenfeld
panel.add(boton);
boton = new Button ("Salir");
panel.add(boton);
botones.addElement(boton);
paneles.addElement(panel);
}
public Manejador getManejador() { return manejador; }
public void setPaginaRegresar(Pagina p) { pRegresar = p;
public Pagina getPaginaRegresar() { return return_p; }
public void desplegarPagina(InterfazUsuario ui) {
System.out.println("Desplegando: "+ this);
int ps = paneles.size();
ui.setLayout(new GridLayout(ps,1));
for (int i = 0; i < ps; i++)
ui.add((Panel)paneles.elementAt(i));
int bs = botones.size();
for (int i = 0; i < bs; i++)
if ((boton = (Button)botones.elementAt(i)) != null)
boton.addActionListener(ui);
}
public void resetPagina() {
paneles = new Vector();
botones = new Vector();
textos = new Vector();
etiquetas = new Vector();
}
public void resetPagina(InterfazUsuario ui) {
ui.removeAll();
int bs = botones.size();
for (int i = 0; i < bs; i++)
if ((boton = (Button)botones.elementAt(i)) != null)
boton.removeActionListener(ui);
}
public String getElemento(int i) {
String str = null;
if (i >= 0 && i < textos.size())
str = ((TextField) textos.elementAt(1)).getText();
else
System.out.println("Texto invalido: "+i);
return str;
}
public void leerElementos(Datos datos) {
String name0,str,name;
for (int i = 0; i < datos.size(); i++) {
name0 = (String)datos.getName(i);
str = null;
name = null;
for (int j = 0; name0.equals(name) == false &&
j < textos.size(); j++) {
name = ((Component) textos.elementAt(j)).getName();
if (name0.equals(name) == true) {
str = ((TextField) textos.elementAt(j)).getText();
if (str.equals("") == true)
str = " ";
datos.setElementAt(str,i);
6
}
Implementación: Sistema de Reservaciones con BD y Archivos
Weitzenfeld
}
}
System.out.println(name+": "+str);
}
}
public void escribirElementos(Datos datos) {
String str0,str1,name;
for (int i = 0; i < datos.size(); i++) {
str0 = (String)datos.getName(i);
str1 = (String)datos.elementAt(i);
//
if (str0 == null || str1 == null)
//
continue;
if (str1 == null || str1.equals(" ") == true)
str1 = "";
name = null;
for (int j = 0; str0 != name && j < textos.size(); j++) {
name = ((Component) textos.elementAt(j)).getName();
if (str0 == name) {
((TextField) textos.elementAt(j)).setText(str1);
System.out.println(str0+": "+str1);
}
}
}
}
}
PaginaPrincipal.java
class PaginaPrincipal extends Pagina
{
public PaginaPrincipal (InterfaceUsuario ui,Manejador m) {
super(ui,m);
}
public void createPagina() {
panel = new Panel();
panel.setLayout(new GridLayout(1,1));
panel.add(new Label("SISTEMA DE RESERVACIONES DE VUELO",
Label.CENTER));
paneles.addElement(panel);
panel = new Panel();
panel.setLayout(new GridLayout(4,1));//5 fila, 1 cols
panel.add(new Label("Servicios Ofrecidos:", Label.CENTER));
panel.add(new Label("* Consulta de Vuelos, Tarifas y Horarios",
Label.CENTER));
panel.add(new Label("* Reserva de Vuelos", Label.CENTER));
panel.add(new Label("* Compra de Boletos", Label.CENTER));
paneles.addElement(panel);
panel = new Panel();
panel.setLayout(new GridLayout(1,1));
panel.add(new Label("Para registrarse por primera vez oprima:",
Label.CENTER));
paneles.addElement(panel);
panel = new Panel();
7
Implementación: Sistema de Reservaciones con BD y Archivos
Weitzenfeld
boton = new Button ("Registrarse por Primera Vez");
botones.addElement(boton);
panel.add(boton);
paneles.addElement(panel);
panel = new Panel();
panel.setLayout(new GridLayout(1,1));
panel.add(new Label("Para accesar todos los servicios de vuelo
(consulta, reserva, compra) o modificar su registro, oprima:",
Label.CENTER));
paneles.addElement(panel);
panel = new Panel();
panel.add(new Label("Login:", Label.LEFT));
panel.add(new TextField (20));
paneles.addElement(panel);
panel = new Panel();
panel.add(new Label("Password:"));
texto = new TextField(20);
texto.setEchoChar('#');
panel.add(texto);
paneles.addElement(panel);
panel = new Panel();
boton = new Button("OK");
botones.addElement(boton);
panel.add(boton);
boton = new Button("Salir");
botones.addElement(boton);
panel.add(boton);
paneles.addElement(panel);
}
}
PaginaRegUsuario.java
abstract class PaginaRegUsuario extends Pagina {
public PaginaRegUsuario(Pagina p,InterfaceUsuario ui,Manejador m) {
super(p,ui,m);
}
public void createPagina() {
panel = new Panel();
panel.setLayout(new GridLayout(2,1));
panel.add(new Label("SISTEMA DE RESERVACIONES DE VUELO",
Label.CENTER));
panel.add(new Label("Registro de Usuario", Label.CENTER));
paneles.addElement(panel);
panel = new Panel();
panel.add(new Label("Nombre:"));
texto = new TextField(20);
textos.addElement(texto);
panel.add(texto);
8
Implementación: Sistema de Reservaciones con BD y Archivos
panel.add(new Label("Apellido:"));
texto = new TextField(20);
textos.addElement(texto);
panel.add(texto);
paneles.addElement(panel);
panel = new Panel();
panel.add(new Label("Calle:"));
texto = new TextField(20);
textos.addElement(texto);
panel.add(texto);
panel.add(new Label("Colonia:"));
texto = new TextField(20);
textos.addElement(texto);
panel.add(texto);
paneles.addElement(panel);
panel = new Panel();
panel.add(new Label("Ciudad:"));
texto = new TextField(20);
textos.addElement(texto);
panel.add(texto);
panel.add(new Label("Pais:"));
texto = new TextField(10);
textos.addElement(texto);
panel.add(texto);
panel.add(new Label("Codigo Postal:"));
texto = new TextField(5);
textos.addElement(texto);
panel.add(texto);
paneles.addElement(panel);
panel = new Panel();
panel.add(new Label("Tel Casa:"));
texto = new TextField(15);
textos.addElement(texto);
panel.add(texto);
panel.add(new Label("Tel Of.:"));
texto = new TextField(15);
textos.addElement(texto);
panel.add(texto);
panel.add(new Label("Fax:"));
texto = new TextField(15);
textos.addElement(texto);
panel.add(texto);
paneles.addElement(panel);
panel = new Panel();
panel.add(new Label("Login:"));
texto = new TextField(10);
textos.addElement(texto);
Weitzenfeld
9
Implementación: Sistema de Reservaciones con BD y Archivos
Weitzenfeld
panel.add(texto);
panel.add(new Label("E-Mail:"));
texto = new TextField(40);
textos.addElement(texto);
panel.add(texto);
paneles.addElement(panel);
panel = new Panel();
panel.add(new Label("Password"));
texto = new TextField(20);
texto.setEchoChar('#');
textos.addElement(texto);
panel.add(texto);
panel.add(new Label("Repetir Password"));
texto = new TextField(20);
texto.setEchoChar('#');
textos.addElement(texto);
panel.add(texto);
paneles.addElement(panel);
}
}
PaginaCrearRegUsuario.java
class PaginaCrearRegUsuario extends PaginaRegUsuario {
public PaginaCrearRegUsuario(Pagina p,InterfaceUsuario ui,Manejador m) {
super (p,ui,m); }
public void createPagina() {
super.createPagina();
panel = new Panel();
boton = new Button("Registrar");
botones.addElement(boton);
panel.add(boton);
boton = new Button("Registrar Tarjeta");
botones.addElement(boton);
panel.add(boton);
agregarBotonesRegresarSalir(panel);
}
}
Datos.java
public class Datos {
protected Vector campos[];
public Datos() {
campos = new Vector[2];
for (int i = 0; i < 2; i++)
campos[i] = new Vector();
}
public void addElement(String str) {
campos[0].addElement(str);
10
Implementación: Sistema de Reservaciones con BD y Archivos
Weitzenfeld
campos[1].addElement("");
}
public String serializarSQL() {
String serializa0 = "";
// String serializa1 = "";
for (int i = 0; i < campos[1].size(); i++) {
if (i > 0)
{
serializa0 = serializa0 + ", ";
//
serializa1 = serializa1 + ", ";
}
serializa0 = serializa0 + campos[0].elementAt(i) + " = "
"'" + campos[1].elementAt(i) + "'";
//
serializa0 = serializa0 + campos[0].elementAt(i);
//
serializa1 = serializa1 + "'" + campos[1].elementAt(i)
}
// return "(" + serializa0 + ") VALUES (" + serializa1 + ")";
return serializa0;
}
public String serializarSQLinsert() {
String serializa0 = "";
String serializa1 = "";
for (int i = 0; i < campos[1].size(); i++) {
//
if ((campos[1].elementAt(i)).equals("") 00 true) // !=
if (i > 0)
{
serializa0 = serializa0 + ", ";
serializa1 = serializa1 + ", ";
}
serializa0 = serializa0 + campos[0].elementAt(i);
serializa1 = serializa1 + "'" + campos[1].elementAt(i)
//
}
}
return "(" + serializa0 + ") VALUES (" + serializa1 + ")";
}
public void setElementAt(String str,int i) {
campos[1].setElementAt(str,i);
}
public void setElementAt(int num,int i) {
String str = String.valueOf(num);
campos[1].setElementAt(str,i);
}
public String getName(int i) {
return (String) campos[0].elementAt(i);
}
public String elementAt(int i) {
return (String) campos[1].elementAt(i);
}
public int size() {
return campos[0].size();
}
public void resetAll() {
for (int i = 0; i < campos[0].size(); i++)
campos[1].addElement("");
}
public void printAll() {
for (int i = 0; i < campos[0].size(); i++) {
11
+
+ "'";
null) {
+ "'";
//
Implementación: Sistema de Reservaciones con BD y Archivos
Weitzenfeld
12
System.out.print(campos[0].elementAt(i)+": ");
System.out.println(campos[1].elementAt(i));
}
}
}
RegistroUsuario.java
public class RegistroUsuario extends Datos {
public RegistroUsuario() {
addElement("login");
addElement("password");
addElement("rpassword");
addElement("nombre");
addElement("apellido");
addElement("direccion");
addElement("colonia");
addElement("ciudad");
addElement("pais");
addElement("CP");
addElement("telCasa");
addElement("telOficina");
addElement("fax");
addElement("email");
}
}
InterfaceRegistro.java
public abstract class InterfaceRegistro
{
protected Datos datos;
protected RegistroUsuario registroUsuario;
protected RegistroTarjeta registroTarjeta;
public InterfaceRegistro(){
}
// Contrato 1: Registrar Usuario
// Contrato 3: Registrar Tarjeta
public abstract boolean leerRegistro(Datos reg,String log);
public abstract void escribirRegistro(Datos reg);
public abstract void actualizarRegistro(Datos reg);
public abstract void eliminarRegistro(Datos reg);
// Contrato 2: Validar Registro
public abstract boolean validarRegistro(Datos reg,String log,String pass);
public String getClassName(Datos reg){
String regname;
Class regclass = reg.getClass();
String fullname = regclass.getName();
int index = fullname.lastIndexOf('.');
if (index > 0)
regname = fullname.substring(index+1);
else
regname = fullname;
return regname;
Implementación: Sistema de Reservaciones con BD y Archivos
Weitzenfeld
}
}
InterfaceBaseDatosRegistro.java
public class InterfaceBaseDatosRegistro extends InterfaceRegistro
{
Connection con;
Statement stmt;
ResultSet rs;
public InterfaceBaseDatosRegistro() {
int fg1 = checkDriverSun();
int fg2 = checkDriverMS();
if (fg1 == 0 || fg2 == 0)
open("jdbc:odbc:reservaciones", "alfredo", "ITAM");
}
// Leer Registro
public boolean leerRegistro(Datos reg,String log)
{
System.out.println("Login: "+log);
String regname = getClassName(reg);
String querysql = "SELECT * FROM " + regname + " WHERE (login = '" +
log + "')";
boolean fg = leerRecordSetRegistro(querysql,reg);
if (fg == true)
System.out.println("Se valido registro " + regname + ": " + log);
else
System.out.println("No se valido registro " + regname + ": " +
log);
return fg;
}
// Escribir Registro
public void escribirRegistro(Datos reg)
{
String log = reg.elementAt(0);
System.out.println("log: " + log);
String regname = getClassName(reg);
String textsql = reg.serializarSQLinsert();
String querysql = "INSERT INTO " + regname + " " + textsql;
System.out.println("querysql: " + querysql);
if (actualizarRecordSetRegistro(querysql) == true)
System.out.println("Se inserto en " + regname + " record de " +
log);
else
System.out.println("No se pudo insertar en " + regname + " record
de " + log);
}
// Actualizar Registro
public void actualizarRegistro(Datos reg)
{
String log = reg.elementAt(0);
System.out.println("log: " + log);
String regname = getClassName(reg);
String textsql = reg.serializarSQL();
13
Implementación: Sistema de Reservaciones con BD y Archivos
Weitzenfeld
14
String str = "UPDATE " + regname + " SET " + textsql + " WHERE Login =
'" + log + "';";
if (actualizarRecordSetRegistro(str) == true)
System.out.println("Se actualizo en " + regname + " record de " +
log);
else
System.out.println("No se pudo actualizar en " + regname + " record
de " + log);
}
// Eliminar Registro
public void eliminarRegistro(Datos reg)
{
String log = reg.elementAt(0);
System.out.println("log: " + log);
String regname = getClassName(reg);
String str = "DELETE FROM " + regname + " WHERE Login = '" + log +
"';";
if (actualizarRecordSetRegistro(str) == true)
System.out.println("Se elimino en " + regname + " record de " +
log);
else
System.out.println("No se pudo eliminar en " + regname + " record
de " + log);
}
// Contrato 2
// Validar Registro
public boolean validarRegistro(Datos reg,String log, String pass) {
System.out.println("Login: "+log);
System.out.println("Password: "+pass);
String regname = getClassName(reg);
String querysql = "SELECT * FROM " + regname + " WHERE (login = '" +
log + "') AND (password = '" + pass + "')";
boolean fg = leerRecordSetRegistro(querysql,reg);
if (fg == true)
System.out.println("Se valido registro: " + log + "," + pass);
else
System.out.println("No se valido registro: " + log + "," + pass);
return fg;
}
// Responsabilidades Privadas
public boolean leerRecordSetRegistro(String query,Datos datos)
{
if (datos == null) {
System.out.println("Datos nulos");
return false;
}
try {
rs = stmt.executeQuery (query);
ResultSetMetaData rsmd = rs.getMetaData ();
int numCols = rsmd.getColumnCount ();
System.out.println("Cargando registro");
if (rs.next()) {
for (int i = 1; i <= numCols; i++) { // datos.size()
if (i > 1)
System.out.print(",");
String str = rs.getString(i);
Implementación: Sistema de Reservaciones con BD y Archivos
Weitzenfeld
System.out.print(str);
datos.setElementAt(str,i-1);
}
return true;
}
System.out.println("");
}
catch (SQLException ex) {
System.out.println ("\n*** Error de SQL interceptado ***\n");
while (ex != null) {
System.out.println ("SQLState: " + ex.getSQLState ());
System.out.println ("Mensaje: " + ex.getMessage ());
System.out.println ("Error:
" + ex.getErrorCode ());
ex = ex.getNextException ();
System.out.println ("");
}
}
catch (Exception ex) {
ex.printStackTrace ();
}
return false;
}
public boolean actualizarRecordSetRegistro(String query)
{
try {
int n = stmt.executeUpdate (query);
return true;
}
catch (SQLException ex) {
System.out.println ("\n*** Error de SQL interceptado ***\n");
while (ex != null) {
System.out.println ("SQLState: " + ex.getSQLState ());
System.out.println ("Mensaje: " + ex.getMessage ());
System.out.println ("Error:
" + ex.getErrorCode ());
ex = ex.getNextException ();
System.out.println ("");
}
}
catch (Exception ex) {
ex.printStackTrace ();
}
return false;
}
// desplegar lectura de BD
public void displayAllDataRegistro()
{
displayRecordSet("SELECT * FROM REGISTRO");
}
public void displayAllDataTarjeta()
{
displayRecordSet("SELECT * FROM TARJETA");
}
public void displayRecordSet (String query)
{
15
Implementación: Sistema de Reservaciones con BD y Archivos
Weitzenfeld
try {
if (stmt != null) {
rs = stmt.executeQuery (query);
dispResultSet(rs);
}
else
return;
}
catch (SQLException ex) {
// Una excepci¢n de SQL fu‚ generada. La obtiene y
// despliega el mensaje de error. Note que puede haber
// m£ltiples errores que podr¡an encadenarse.
System.out.println ("\n*** Error de SQL interceptado ***\n");
while (ex != null) {
System.out.println ("SQLState: " + ex.getSQLState ());
System.out.println ("Mensaje: " + ex.getMessage ());
System.out.println ("Error:
" + ex.getErrorCode ());
ex = ex.getNextException ();
System.out.println ("");
}
}
catch (java.lang.Exception ex) {
// Si existe alg£n otro error, lo despliega del stack
ex.printStackTrace ();
}
}
private static void dispResultSet (ResultSet rs) throws SQLException
{
int i;
ResultSetMetaData rsmd = rs.getMetaData ();
int numCols = rsmd.getColumnCount ();
// Despliega los nombres de los campos
for (i=1; i<=numCols; i++) {
if (i > 1) System.out.print(",");
System.out.print(rsmd.getColumnLabel(i));
}
System.out.println("");
// Despliega informaci¢n hasta que no existan m s registros
boolean more = rs.next ();
while (more) {
// Hace un ciclo por cada columna y la despliega en pantalla
for (i=1; i<=numCols; i++) {
if (i > 1) System.out.print(",");
System.out.print(rs.getString(i));
}
System.out.println("");
// Avanza al siguiente registro
more = rs.next ();
}
}
public int checkDriverSun()
{
16
Implementación: Sistema de Reservaciones con BD y Archivos
Weitzenfeld
int fg = 0;
try {
Class.forName ("sun.jdbc.odbc.JdbcOdbcDriver");
System.out.println ("\n*** Utilizando driver de Sun ***\n");
}
catch (ClassNotFoundException ex) {
// System.out.println ("\n*** Sun ClassNotFoundException interceptado
***\n");
fg = 1;
}
return fg;
}
public int checkDriverMS()
{
int fg = 0;
try {
Class.forName ("com.ms.jdbc.odbc.JdbcOdbcDriver");
System.out.println ("\n*** Utilizando driver de Microsoft
***\n");
}
catch (ClassNotFoundException ex) {
//
System.out.println ("\n*** MS ClassNotFoundException
interceptado ***\n");
fg = 1;
}
return fg;
}
public void open(String url,String log,String pass)
{
try {
con = DriverManager.getConnection (url, log, pass);
checkForWarning (con.getWarnings ());
DatabaseMetaData dma = con.getMetaData ();
System.out.println("\nConectado a " + dma.getURL());
System.out.println("Driver
" + dma.getDriverName());
System.out.println("Versi¢n
" + dma.getDriverVersion());
System.out.println("");
stmt = con.createStatement ();
}
catch (SQLException ex) {
System.out.println ("\n*** Error de SQL interceptado ***\n");
while (ex != null) {
System.out.println ("SQLState: " + ex.getSQLState ());
System.out.println ("Mensaje: " + ex.getMessage ());
System.out.println ("Error:
" + ex.getErrorCode ());
ex = ex.getNextException ();
System.out.println ("");
}
}
catch (Exception ex) {
System.out.println ("\n*** Exception interceptado ***\n");
ex.printStackTrace ();
}
}
public static boolean checkForWarning (SQLWarning warn)
throws SQLException {
17
Implementación: Sistema de Reservaciones con BD y Archivos
Weitzenfeld
boolean rc = false;
if (warn != null) {
System.out.println ("\n *** Advertencia ***\n");
rc = true;
while (warn != null) {
System.out.println ("SQLState: " + warn.getSQLState ());
System.out.println ("Mensaje: " + warn.getMessage ());
System.out.println ("Error:
" + warn.getErrorCode ());
System.out.println ("");
warn = warn.getNextWarning ();
}
}
return rc;
}
}
InterfaceArchivoRegistro.java
public class InterfaceArchivoRegistro extends InterfaceRegistro
{
private String path = "reservaciones/baseDatos";
private String fileRegistro = "Registro.dat";
private String fileTarjeta = "Tarjeta.dat";
private File freg, ftar;
private Vector archivoRegistro;
private ArchivoRegistro ar;
public InterfaceArchivoRegistro()
{
archivoRegistro = new Vector();
ar = new ArchivoRegistro(path,fileRegistro,
"reservaciones.registro.usuario","RegistroUsuario");
archivoRegistro.addElement(ar);
ar = new ArchivoRegistro(path,fileTarjeta,
"reservaciones.registro.tarjeta","RegistroTarjeta");
archivoRegistro.addElement(ar);
}
// Contrato 1: Registrar Usuario
// Contrato 3: Registrar Tarjeta
// Leer Registro
public boolean leerRegistro(Datos reg, String log)
{
String regname = getClassName(reg);
for (int i = 0; i < archivoRegistro.size(); i++) {
ar = (ArchivoRegistro) archivoRegistro.elementAt(i);
if (ar != null && regname.equals(ar.getName()) == true)
return ar.leerRegistro(reg, log);
}
return false;
}
// Escribir Registro
public void escribirRegistro(Datos reg)
{
String regname = getClassName(reg);
for (int i = 0; i < archivoRegistro.size(); i++) {
18
Implementación: Sistema de Reservaciones con BD y Archivos
Weitzenfeld
ar = (ArchivoRegistro) archivoRegistro.elementAt(i);
if (ar != null && regname.equals(ar.getName()) == true)
ar.escribirRegistro(reg);
}
}
// Actualizar Registro
public void actualizarRegistro(Datos reg)
{
String regname = getClassName(reg);
for (int i = 0; i < archivoRegistro.size(); i++) {
ar = (ArchivoRegistro) archivoRegistro.elementAt(i);
if (ar != null && regname.equals(ar.getName()) == true)
ar.actualizarRegistro(reg);
}
}
// Eliminar Registro
public void eliminarRegistro(Datos reg)
{
String regname = getClassName(reg);
for (int i = 0; i < archivoRegistro.size(); i++) {
ar = (ArchivoRegistro) archivoRegistro.elementAt(i);
if (ar != null && regname.equals(ar.getName()) == true)
ar.eliminarRegistro(reg);
}
}
// Contrato 2: Validar Registro
public boolean validarRegistro(Datos reg, String log, String pass)
{
String regname = getClassName(reg);
for (int i = 0; i < archivoRegistro.size(); i++) {
ar = (ArchivoRegistro) archivoRegistro.elementAt(i);
if (ar != null && regname.equals(ar.getName()) == true)
return ar.validarRegistro(reg, log, pass);
}
return false;
}
}
ArchivoRegistro.java
public class ArchivoRegistro
{
private Vector listaRegistro;
private File freg;
private Datos registro;
private Class creg;
private String name;
public ArchivoRegistro(String dirname, String filename,
String packagename, String classname)
{
try {
creg = Class.forName(packagename+"."+classname);
name = classname;
System.out.println ("\nLeyendo archivo con objetos de clase: " +
classname);
19
Implementación: Sistema de Reservaciones con BD y Archivos
Weitzenfeld
}
catch (ClassNotFoundException ex) {
System.out.println ("\n*** ClassNotFoundException interceptado
***\n");
ex.printStackTrace ();
}
listaRegistro = new Vector();
freg = new File(dirname,filename);
inicializarRegistros();
}
// Contrato 2: Validar Registro
public boolean leerRegistro(Datos reg, String log)
{
System.out.println("Login: "+log);
return leerRecordSetRegistro(log,reg);
}
// Escribir Registro
public void escribirRegistro(Datos reg)
{
if (leerRecordSetRegistro(reg.elementAt(0),reg) == false){
listaRegistro.addElement(reg);
actualizarArchivoRegistro();
}
else
actualizarRegistro(reg);
}
// Actualizar Registro
public void actualizarRegistro(Datos reg)
{
int indice = leerIndiceRegistro(reg.elementAt(0));
if (indice != -1) {
listaRegistro.setElementAt(reg,indice);
actualizarArchivoRegistro();
}
}
// Eliminar Registro
public void eliminarRegistro(Datos reg)
{
int indice = leerIndiceRegistro(reg.elementAt(0));
if (indice != -1) {
listaRegistro.removeElementAt(indice);
actualizarArchivoRegistro();
}
}
// Contrato 2: Validar Registro
public boolean validarRegistro(Datos reg, String log, String pass)
{
System.out.println("Login: "+log);
System.out.println("Password: "+pass);
if (leerRecordSetRegistro(log,reg) != false && reg != null) {
String preg = reg.elementAt(1);
if (pass.equals(preg))
return true;
}
System.out.println("registro: "+reg);
return false;
}
20
Implementación: Sistema de Reservaciones con BD y Archivos
Weitzenfeld
// Responsabilidades Privadas
private void inicializarRegistros()
{
try
{
BufferedReader is = new BufferedReader(new FileReader(freg));
leerRegistros(listaRegistro,is);
is.close();
}
catch(IOException e)
{
System.out.print("Error Lectura Registro: " + e);
System.exit(1);
}
}
private void leerRegistros(Vector vectorDatos, BufferedReader is) throws
IOException
{
String s = is.readLine();
Integer ns = Integer.valueOf(s);
int n = ns.intValue();
for (int i = 0; i < n; i++)
{
try {
registro = (Datos) creg.newInstance();
}
catch (Exception ex){
System.out.println ("\n*** IllegalAccessException interceptado
***\n");
ex.printStackTrace ();
}
s = is.readLine();
StringTokenizer t = new StringTokenizer(s, "|");
for (int j = 0; j < registro.size(); j++)
{
String val = t.nextToken();
registro.setElementAt(val,j);
}
vectorDatos.addElement(registro);
}
}
private void actualizarArchivoRegistro()
{
try
{
BufferedWriter os = new BufferedWriter(new FileWriter(freg));
escribirDatos(listaRegistro, os);
os.close();
}
catch(IOException e)
{
System.out.print("Error: " + e);
System.exit(1);
}
}
private void escribirDatos(Vector vectorDatos, BufferedWriter os)
21
Implementación: Sistema de Reservaciones con BD y Archivos
Weitzenfeld
throws IOException
{
int num = vectorDatos.size();
String numStr = String.valueOf(num);
os.write(numStr);
os.newLine();
for (int i = 0; i < num; i++) {
Datos datos = (Datos) vectorDatos.elementAt(i);
for (int j = 0; j < datos.size(); j++) {
String str = datos.elementAt(j);
if (str.equals("") == true)
str = " ";
os.write(str+"|");
}
os.newLine();
}
}
private boolean leerRecordSetRegistro(String log, Datos reg)
{
for (int i = 0; i < listaRegistro.size(); i++) {
Datos datos = (Datos) listaRegistro.elementAt(i);
if (log.equals(datos.elementAt(0))) {
for (int j = 0; j < datos.size(); j++) {
reg.setElementAt(datos.elementAt(j),j);
}
return true;
}
}
return false;
}
private int leerIndiceRegistro(String regname)
{
for (int i = 0; i < listaRegistro.size(); i++) {
registro = (Datos) listaRegistro.elementAt(i);
if (regname.equals(registro.elementAt(0)) == true)
return i;
}
return -1;
}
String getName() { return name; }
}
22
Descargar