Iteración 1 - AndresGutierrezCR/In4MatesSD_P1 GitHub Wiki
En esta iteración se va a desarrollar el primer caso de uso: Ver configuracion de mesas
El jefe de sala tiene a su disposición una pantalla donde aparecen los tres turnos que hay por comida y por cena, con una configuración de mesas de 2, 4 y 6 comensales.
Se dispone de una interfaz especializada en controles de mesas (IU_P_ConfMesas), la cual accede a la funcionalidad de ControlMesas, y recoge datos de la base de datos de mesas (BBDD_Mesas).
El jefe de sala pide los datos sobre las mesas al sistema. El sistema devuelve al jefe de sala los datos de las mesas.
El jefe de sala pide los datos sobre las mesas al sistema, pero recibe un error de vuelta por parte del sistema al no haber podido comprobar los datos de las mesas.
El Jefe de Sala presiona sobre la pestaña Mesa en la interfaz de Configuración de Mesas, ésta pide datos de mesas a la función ControlMesas que recogerá lo necesario de la base de datos de mesas y los vuelca a la interfaz para poder ser visualizados por el Jefe de Sala.
El Jefe de Sala presiona sobre la pestaña Mesa en la interfaz de Configuración deMesas, ésta pide datos de mesas a la función ControlMesas que fallará al recoger los datos sobrelas mesas y vuelca un error sobre la a la interfaz.
En la capa de Presentación solo estará la interfaz de visualizar la configuración de mesas(IU_VerConfMesas) que se relaciona con la clase Mesa sobre la capa de Dominio (la cual presenta una relación con una clase de enumeración para establecer los diferentes estados de cada una de las mesas). Por último, la clase Mesa se relaciona con el GestorMesa sobre la capa de Persistencia, la cual cuenta con un Agente.
El Jefe de Sala carga las mesas sobre la interfaz IU_VerConfMesas; a partir de ahí se crea un nuevo objeto Mesa de la cual mandamos leer todos los datos, para lo cual llama al GestorMesa que se encargará, con la ayuda del Agente, de añadir nuevas mesas (tantas como se necesiten cargar). Una vez se hayan añadido todas las mesas, se devuelven los datos de las mesas y se muestran todas ellas mediante la interfaz.
La tabla Mesa contará con Estado, Comensales y el IdMesa, siendo esta última la clave primaria.
Cada una de las filas de la tabla corresponde a un objeto de tipo Mesa, con su correspondiente identificador de mesas (1, 2, 3, ...), el número de comensales (4, 6, 2, ...), y el estado en que se encuentra (LIBRE, OCUPADA, EN ESPERA, ...).
Cada una de las filas de la tabla, ya implementada, corresponde a un objeto de tipo Mesa con su correspondiente identificador de mesas, el número de comensales, el estado en que se encuentra la mesa, y la fecha y hora del último cambio de estado realizado sobre cada mesa.
Clase mesa para la generación de objetos de tipo mesa, para su creación primero declaramos los distintos atributos y creamos un constructor vacío y otro con todos los atributos, a su vez creamos los distintos getters y setters.
package org.ReservaMesas.Dominio;
import org.ReservaMesas.Persistencia.GestorMesa;
public class Mesa {
private int idMesa;
private int comensales;
private Estados estado;
private GestorMesa gestorMesa;
public Mesa() {
this.gestorMesa= new GestorMesa();
}
public Mesa(int idMesa, int comensales, Estados estado) {
this.idMesa=idMesa;
this.comensales=comensales;
this.estado=estado;
this.gestorMesa= new GestorMesa();
}
public int getIdMesa() {
return idMesa;
}
public void setIdMesa(int idMesa) {
this.idMesa = idMesa;
}
public int getComensales() {
return comensales;
}
public void setComensales(int comensales) {
this.comensales = comensales;
}
public Estados getEstado() {
return estado;
}
public void setEstado(Estados estado) {
this.estado = estado;
}
public GestorMesa getGestorMesa() {
return gestorMesa;
}
public void eliminar() {
gestorMesa.delete(this);
}
public void modificar() {
gestorMesa.update(this);
}
public void insertar() {
gestorMesa.insert(this);
}
public void leer() {
gestorMesa.read(this);
}
public void leerTodo() {
gestorMesa.readAll();
}
}
Creamos una clase de enumerados que tendrá los distintos estados en los que se puede encontrar una mesa.
package org.ReservaMesas.Dominio;
public enum Estados {
LIBRE,
RESERVADA,
OCUPADA,
PIDIENDO,
ESPERA_COMIDA,
SERVIDOS,
ESPERA_CUENTA,
PAGANDO,
PREPARACION
}
Se crea la clase agente que nos permitirá conectarnos a la BBDD y añadir, eliminar, leer y borrar los distintos datos necesarios para el funcionamiento de nuestra aplicación.
package org.ReservaMesas.Persistencia;
import java.awt.List; import java.sql.*; import java.util.LinkedList; import java.util.Vector;
public class Agente {
protected static Agente mInstancia = null;
protected static Connection mBD;
private static String url = "jdbc:oracle:thin:in4mates@//localhost:1521/xe";
private static String driver = "oracle.jdbc.driver.OracleDriver";
private Agente() throws Exception {
conectar();
}
public static Agente getAgente() throws Exception {
if (mInstancia == null) {
mInstancia = new Agente();
}
return mInstancia;
}
private void conectar() throws Exception {
Class.forName(driver);
mBD = DriverManager.getConnection(url, "in4mates", "in4mates");;
}
public void desconectar() throws Exception {
mBD.close();
}
public int modificar(String SQL) throws SQLException, Exception {
PreparedStatement stmt = mBD.prepareStatement(SQL);
int res = stmt.executeUpdate();
stmt.close();
desconectar();
return res;
}
public ResultSet leer(String SQL) throws SQLException, Exception {
PreparedStatement stmt = mBD.prepareStatement(SQL);
ResultSet resultado = stmt.executeQuery(SQL);
return resultado;
}
}
El gestor de mesas nos servirá de intermediario ente el agente de la base de datos y la capa de dominio, para ello crearemos una lista de mesas donde se recogerán las distintas mesas que estén registradas en la BBDD, este gestor nos permitirá, añadir, leer, eliminar y modificar mesas en nuestra BBDD.
package org.ReservaMesas.Persistencia;
import java.sql.ResultSet; import java.sql.SQLException; import java.util.ArrayList;
import org.ReservaMesas.Dominio.Estados; import org.ReservaMesas.Dominio.Mesa;
public class GestorMesa {
private ArrayList <Mesa> listaMesas;
public GestorMesa() {
listaMesas=new ArrayList <Mesa>();
}
public ArrayList<Mesa> getListaMesas() {
return listaMesas;
}
public void setListaMesas(ArrayList<Mesa> listaMesas) {
this.listaMesas = listaMesas;
}
public void delete(Mesa mesa) {
try {
Agente.getAgente().modificar("DELETE FROM mesas WHERE idMesa = "+mesa.getIdMesa()+";");
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public void update(Mesa mesa) {
try {
Agente.getAgente().modificar("UPDATE mesas SET comensales="+mesa.getComensales()+", "
+ "estado='"+mesa.getEstado()+"' WHERE idMesa = "+mesa.getIdMesa()+";");
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public void insert(Mesa mesa) {
try {
Agente.getAgente().modificar("INSERT INTO mesas VALUES("+mesa.getIdMesa()+","+mesa.getComensales()+
",'"+mesa.getEstado()+"');");
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public void read(Mesa mesa) {
ResultSet resultado;
try {
resultado = Agente.getAgente().leer("SELECT * FROM mesas WHERE idmesa="+mesa.getIdMesa()+";");
while(resultado.next()) {
mesa.setComensales(resultado.getInt(2));
Estados estado=Estados.valueOf(resultado.getString(3));
mesa.setEstado(estado);
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public void readAll() {
ResultSet resultado;
try {
resultado = Agente.getAgente().leer("SELECT * FROM mesas ORDER BY idMesa");
Mesa mesa;
while (resultado.next()){
Estados estado=Estados.valueOf(resultado.getString(3));
mesa=new Mesa(resultado.getInt(1),resultado.getInt(2),estado);
listaMesas.add(mesa);
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}










