From 4f071d081a5acfbf3d74a2ec19b5bbcc3b96b4a9 Mon Sep 17 00:00:00 2001 From: David Date: Tue, 19 Mar 2024 23:12:29 -0600 Subject: [PATCH] =?UTF-8?q?Conexi=C3=B3n=20con=20base=20de=20datos?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Asiento.java | 9 ++ GestiónBotónSeleccionarSala.java | 18 +++ SeleccionarAsientoV.java | 116 ++++++++++++++---- out/production/mezontleTeam/Asiento.class | Bin 1195 -> 1408 bytes .../mezontleTeam/SeleccionarAsientoV.class | Bin 6196 -> 8903 bytes 5 files changed, 119 insertions(+), 24 deletions(-) create mode 100644 GestiónBotónSeleccionarSala.java diff --git a/Asiento.java b/Asiento.java index d2bcfa2..8b24610 100644 --- a/Asiento.java +++ b/Asiento.java @@ -3,6 +3,7 @@ public class Asiento { private int y; private String zona; private boolean disponibilidad; + private int id; public Asiento(int x, int y, String zona, boolean disponibilidad) { this.x = x; @@ -11,6 +12,14 @@ public class Asiento { this.disponibilidad = disponibilidad; } + public Asiento(int id, int x, int y, String zona, boolean disponibilidad){ + this.id = id; + this.x = x; + this.y = y; + this.zona = zona; + this.disponibilidad = disponibilidad; + } + public int getX() { return x; } diff --git a/GestiónBotónSeleccionarSala.java b/GestiónBotónSeleccionarSala.java new file mode 100644 index 0000000..5cde46f --- /dev/null +++ b/GestiónBotónSeleccionarSala.java @@ -0,0 +1,18 @@ +import java.awt.event.ItemEvent; +import java.awt.event.ItemListener; + +public class GestiónBotónSeleccionarSala implements ItemListener { + + SeleccionarAsientoV ventana; + + public GestiónBotónSeleccionarSala(SeleccionarAsientoV ventana) { + this.ventana = ventana; + } + + @Override + public void itemStateChanged(ItemEvent e) { + String seleccion = ventana.salas.getSelectedItem().toString(); + ventana.obtenerAsientos(Integer.valueOf(seleccion)); + ventana.actualizarCeldas(); + } +} diff --git a/SeleccionarAsientoV.java b/SeleccionarAsientoV.java index 61b024e..a2dd73b 100644 --- a/SeleccionarAsientoV.java +++ b/SeleccionarAsientoV.java @@ -31,24 +31,14 @@ public class SeleccionarAsientoV extends JPanel { private Asiento [][] asientos; List asientosSeleccionados = new ArrayList(); - public SeleccionarAsientoV(Asiento [][] parAsientos) throws HeadlessException { - this.setLayout(new BorderLayout()); - - asientos = parAsientos; - - agregarComponentes(); - añadirListeners(); - - crearCeldas(7,10); - } public SeleccionarAsientoV() throws HeadlessException { this.setLayout(new BorderLayout()); - llenarAsientos(); + //llenarAsientos(); + obtenerAsientos(1); agregarComponentes(); - añadirListeners(); crearCeldas(7,10); } @@ -58,6 +48,7 @@ public class SeleccionarAsientoV extends JPanel { pSuperior.add(lSeleccionar); pSuperior.add(this.cbSalas); this.llenarSalas(); + cbSalas.addItemListener(new GestiónBotónSeleccionarSala(this)); pInferior.add(this.lTotal); pInferior.add(this.bSeleccionar); @@ -66,10 +57,6 @@ public class SeleccionarAsientoV extends JPanel { this.add(pInferior,BorderLayout.SOUTH); } - public void llenarSalas(){ - - } - public void crearCeldas(int parX, int parY){ GridBagConstraints con = new GridBagConstraints(); @@ -118,10 +105,32 @@ public class SeleccionarAsientoV extends JPanel { this.add(pSala,BorderLayout.CENTER); } - public void añadirListeners(){ - //bRegresar.addActionListener(new GestiónBotónCambiarVentana(this,new ventana2().panelV2)); + public void actualizarCeldas(){ + String zona; + for(int i = 0; i < 7; i++){ + for(int j = 0; j < 10; j ++){ + if( ( (j >= 2) && (j <= 7) ) && ( (i >= 2) && (i <= 6) ) ){ + bAsientos[i][j].setBackground(Color.PINK); + zona = "A"; + bAsientos[i][j].setText("200$"); + } + if( ((i == 1) && (j > 0) && (j < 9)) || ((j == 1) && (i > 0)) || ((j == 8) && (i > 0)) ){ + bAsientos[i][j].setBackground(Color.ORANGE); + zona = "B"; + bAsientos[i][j].setText("130$"); + } + if( (i == 0) || (j == 0) || (j == 9)){ + bAsientos[i][j].setBackground(Color.YELLOW); + zona = "C"; + bAsientos[i][j].setText("65$"); + } + if(asientos[i][j].isDisponibilidad()){ + bAsientos[i][j].setBackground(Color.DARK_GRAY); + bAsientos[i][j].setText("ND"); + } + } + } } - public void llenarAsientos(){ asientos = new Asiento[7][10]; String zona = ""; @@ -191,13 +200,72 @@ public class SeleccionarAsientoV extends JPanel { lTotal.setText("Total: " + total + "$"); } - public void obtenerDatos(){ - ConexionBD con = new ConexionBD(); - Connection connection; - PreparedStatement ps; + public void obtenerAsientos(int salaSeleccionada){ + Connection conexion = null; ResultSet rs; Statement st; - String consulta = "SELECT * FROM ASIENTOS WHERE idFkZona INNER JOIN"; + String consulta = "SELECT disponibilidad, ubicacion, idAsiento FROM asientos WHERE fksala = "+salaSeleccionada; + + asientos = new Asiento[7][10]; + String zona = ""; + + try { + conexion = ConexionBD.getConnection(); + st = conexion.createStatement(); + rs = st.executeQuery(consulta); + while(rs.next()){ + + String isDisponible = String.valueOf(rs.getShort("disponibilidad")); + + boolean disponibilidad = false; + + if(isDisponible.equals("0")){ + disponibilidad = true; + } + + int i = Character.getNumericValue(rs.getString("ubicacion").charAt(0)); + int j = Character.getNumericValue(rs.getString("ubicacion").charAt(2)); + + int id = rs.getInt("idAsiento"); + + if( ( (j >= 2) && (j <= 7) ) && ( (i >= 2) && (i <= 6) ) ){ + zona = "A"; + } + if( ((i == 1) && (j > 0) && (j < 9)) || ((j == 1) && (i > 0)) || ((j == 8) && (i > 0)) ){ + zona = "B"; + } + if( (i == 0) || (j == 0) || (j == 9)){ + zona = "C"; + } + + Asiento aux = new Asiento(id,i,j,zona,disponibilidad); + asientos[i][j] = aux; + } + conexion.close(); + } catch (SQLException e) { + throw new RuntimeException(e); + } } + + public void llenarSalas() { + Connection conexion = null; + ResultSet rs; + Statement st; + String consulta = "SELECT idSala FROM sala"; + + try { + conexion = ConexionBD.getConnection(); + st = conexion.createStatement(); + rs = st.executeQuery(consulta); + while(rs.next()){ + salas.addElement(rs.getInt("idSala")); + } + conexion.close(); + } catch (SQLException e) { + throw new RuntimeException(e); + } + } + + } diff --git a/out/production/mezontleTeam/Asiento.class b/out/production/mezontleTeam/Asiento.class index d02a4f8695ddd29834bed28a3279d0a30e0bdc82..ecd5c9782c20c492ed6cbe033514bf97a7c3432e 100644 GIT binary patch literal 1408 zcmZ{j+fEZv6o&s@W;(P^p+Jk2lY@dzhoeTXFeF4{(xlM~4AI_A=>#{aQ_~isUilC{ zh8LRHn0Vm>_)x}w?T#FJ2x0bV?SFmiU%P+){`w8z5D&6QVZwps!bVyle-^$Ecbj2+ zy8EJj7M*kz(vNkly9Wvre)%|qNn{*kUEF}H;2d^z6n9$+>I45Pay;c?TF%r*S6{Z@x^R5-^x^C)5*q}&Fj!P~UMKYziwcuAO z!z#7%F_S!LH6n%Ss*a=Q=Wpv#`(;>fa%Z;MItiP{VOz^O*|fTEbVngmO^Vo8C{cT? z_-WLAWn8E*Q^zbUzhd(8=yiXSgTqzLR9o=N!=w!0<$gfXA3hhsyzV?5aDwjF6lQpJ z@Wk>>@!6x+dHW=KrlnvvscA>-#u`0LvEMeo>>Fn(>5&=P9W&B@Gty{|Stv#?@w?2` zXU5wc7lWTr!BP)Su-ro~*zO@86s;Z#-_6|>i9wp*Nm$76FN-N=oTFw5Ijr*JVP6Ti z;Bh7KLZr-0n1pjt-V7$pOt>sVvzE|&VT|PP{?jZ7jT5X0Qi(KVvad0%!eRV0b@F7I zA(QCOk*PqAqTxE|YhG}9^5hJcX9$JMGp-4jXA~?m6GEGjw{eGG@oSf(RAdJ~;C$sI z1+gY=HWy5~zOTsi3?~EirPwA9VqoPK;EzI}#)}2;z+d zxi=alHwdy$kc}}Q(noQ?M>#3#sw4Stq`&HjKN2Ls=8z+sZ0;b)7D2YhfJmDKWQ!5Q mttkvTvNsZB$MjSBdaX5A-h96`^0FU|0g*Q%AbY0t`~LtzZmLEA literal 1195 zcmZ{iU2hUm5Qg6a3kY34iqKX-tG3!@Y0HgwHBB0g2?^1Qnx=BMzy?o)iveoXD}Rs| znn+B%@CW##jPIP?Si(mLJ7>x0DkPukKu=E<;!gb{jax{kkg>4=TOoBe(S9%;DX5S9x5S*Ykr$i#B-*BpB5o^K zpGSeGP;B2MIG>JnFgOvfvW+clE9Clm@_rQPt{&>X*JqH9!j98wEkEnjFBtXNsP8M} z+dA-HUcc-5OM&2sdnQqr%ZN2y(avM0P|#4o&Gt{{XM)lm`F+ diff --git a/out/production/mezontleTeam/SeleccionarAsientoV.class b/out/production/mezontleTeam/SeleccionarAsientoV.class index bbbdb613cb3b849895ec37067dd53aa248b3611b..f7b83c2f7c3a15d3e054f62ec6e7aaed2c97c28e 100644 GIT binary patch literal 8903 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 literal 6196 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