package concesionaria;
import com.mysql.jdbc.Connection;
import com.mysql.jdbc.Statement;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.text.DecimalFormat;
import java.util.Calendar;
import java.util.HashMap;
import java.util.Vector;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.swing.ComboBoxModel;
import javax.swing.DefaultListModel;
import javax.swing.JOptionPane;
/*
import java.awt.Dimension;
import java.io.InputStream;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.swing.JFrame;
import java. .sf.jasperreports.engine.JRException;
import net.sf.jasperreports.engine.JasperFillManager;
import net.sf.jasperreports.engine.JasperPrint;
import net.sf.jasperreports.swing.JRViewer;
*/
public class GUI extends javax.swing.JFrame {
Calculador calculadora = new Calculador();
Double valorCoeficiente;
DefaultListModel modelo = new DefaultListModel();
DefaultListModel modeloFiltroComboTipo = new DefaultListModel();
//ComboBoxModelFiltro comboBoxModelFiltroTipo = new ComboBoxModelFiltro();
static String bd = "concesionaria";
static String login = "root";
static String password = "mariscos";
static String url = "jdbc:mysql://localhost/" + bd;
public GUI() {
initComponents();
//##################### EMPIEZA ZONA DE FILTROS #########################3
//cadena es una la concatenacion de las caracteristicas del vehiculo, para mostar en la JList
// String cadena = marca + " " + color + ", modelo " + anioFabricac
// + ", a " + tipoCombustible + ", Px de fab: " + precFabrica;
// this.modelo.addElement(cadena);
//muestro en consola, para debuggear nomas sin F4
//System.out.println(cadena);
/*
this.modelo.addElement("ppp");
this.modelo.addElement("ppp");
this.modelo.addElement("ppp");
this.modelo.addElement("ppp");
*/
//##################### FIN ZONA DE FILTROS #########################3
//Puebla arriba a la derecha, las cajas con valores obtenidos de los archivos
//--------- COMIENZA LLENADO DE CAJAS SUPERIORES ----------------
//Usa un metodo publico de tipo getter para recibir una copia del diccionario
HashMap p = calculadora.getDiccionario_vehiculos();
//Saca del diccionario el primer valor
Double unDouble = (Double) p.get("transporte-impuestos");//ojo q es Double
System.out.printf("=================%f", unDouble);
//Lo convierte en una Cadena
String unString = Double.toString(unDouble);
//...Para poder mostrarlo en una caja de texto
Caja1.setText(unString);
//Saca del diccionario el segundo valor
unDouble = (Double) p.get("transporte-utilidades");//ojo q es Double
//Lo convierte en una Cadena
unString = Double.toString(unDouble);
//...Para poder mostrarlo en una caja de texto
Caja2.setText(unString);
//Saca del diccionario el tercer valor
unDouble = (Double) p.get("particulares-impuestos");//ojo q es Double
//Lo convierte en una Cadena
unString = Double.toString(unDouble);
//...Para poder mostrarlo en una caja de texto
Caja3.setText(unString);
//Saca del diccionario el cuarto valor
unDouble = (Double) p.get("particulares-utilidades");//ojo q es Double
//Lo convierte en una Cadena
unString = Double.toString(unDouble);
//...Para poder mostrarlo en una caja de texto
Caja4.setText(unString);
//Saca del diccionario el quinto valor
unDouble = (Double) p.get("carga-impuestos");//ojo q es Double
//Lo convierte en una Cadena
unString = Double.toString(unDouble);
//...Para poder mostrarlo en una caja de texto
Caja5.setText(unString);
//Saca del diccionario el sexto valor
unDouble = (Double) p.get("carga-utilidades");//ojo q es Double
//Lo convierte en una Cadena
unString = Double.toString(unDouble);
//...Para poder mostrarlo en una caja de texto
Caja6.setText(unString);
//--------- FIN LLENADO DE CAJAS SUPERIORES ----------------
//~~~~~~~ COMIENZA LLENADO DE CAJA DE COEFICIENTE ~~~~~~~~~~
//Saca del diccionario el primer valor
//Double unDouble = (Double) p.get("transporte-impuestos");//ojo q es Double
//System.out.printf("=================%f", unDouble);
//Lo convierte en una Cadena
//String unString = Double.toString(unDouble);
//Usa un metodo publico de tipo getter para recibir una copia del diccionario
HashMap q = calculadora.getDiccionario_coeficientes();
//Buscando año en curso
Calendar ahora = Calendar.getInstance();
Integer anio = ahora.get(Calendar.YEAR);
//Seteando año en curso sobre el Label "Anio"
Anio.setText(anio.toString());
//Buscando en el diccionario q, el valorCoeficiente. Para lograrlo, buscamos entre
//las llaves, una que se denomine 2010
//Lo dejo como atributo, ya que será de utilidad cuando pulsen el valor Cotizar
//valorCoeficiente será una expresión al estilo 0.0046
valorCoeficiente = (Double) q.get(anio);
//Seteando valorCoeficiente que corresponde al año en curso
Coeficiente.setText(valorCoeficiente.toString());
/*
//Saca del diccionario el primer valor
Double otroDouble = (Double) p.get("transporte-impuestos");//ojo q es Double
//Lo convierte en una Cadena
String unString = Double.toString(unDouble);
//...Para poder mostrarlo en una caja de texto
Caja1.setText(unString);
*/
//~~~~~~~ FIN LLENADO DE CAJA DE COEFICIENTE ~~~~~~~~~~
//######## COMIENZA LLENADO DE JLists con Vehiculos ###############
// Vector<TransporteCarga> v = (Vector)calculadora.getVector();
//######## FIN LLENADO DE JLists con Vehiculos ####################
this.setVisible(true);
}//Constructor
/** This method is called from within the constructor to
* initialize the form.
* WARNING: Do NOT modify this code. The content of this method is
* always regenerated by the Form Editor.
*/
@SuppressWarnings("unchecked")
// <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
private void initComponents() {
bindingGroup = new org.jdesktop.beansbinding.BindingGroup();
jLabel1 = new javax.swing.JLabel();
jButton1 = new javax.swing.JButton();
jLabel3 = new javax.swing.JLabel();
jLabel4 = new javax.swing.JLabel();
Caja1 = new javax.swing.JTextField();
Caja3 = new javax.swing.JTextField();
Caja2 = new javax.swing.JTextField();
Caja4 = new javax.swing.JTextField();
Caja5 = new javax.swing.JTextField();
Caja6 = new javax.swing.JTextField();
jLabel7 = new javax.swing.JLabel();
Anio = new javax.swing.JLabel();
jLabel8 = new javax.swing.JLabel();
Coeficiente = new javax.swing.JLabel();
jLabel2 = new javax.swing.JLabel();
jLabel5 = new javax.swing.JLabel();
jLabel6 = new javax.swing.JLabel();
CajaValorReajuste = new javax.swing.JTextField();
CajaCuotas = new javax.swing.JTextField();
BotonCotizar = new javax.swing.JButton();
jScrollPane3 = new javax.swing.JScrollPane();
Lista3 = new javax.swing.JList();
jLabel9 = new javax.swing.JLabel();
EtiquetaSeguro = new javax.swing.JLabel();
jLabel10 = new javax.swing.JLabel();
EtiquetaVehiculoElegido = new javax.swing.JLabel();
EtiquetaPrecioVenta = new javax.swing.JLabel();
jLabel15 = new javax.swing.JLabel();
EtiquetaValordeCuota = new javax.swing.JLabel();
jLabel11 = new javax.swing.JLabel();
jLabel12 = new javax.swing.JLabel();
jLabel13 = new javax.swing.JLabel();
jComboBoxTipo = new javax.swing.JComboBox();
jLabel14 = new javax.swing.JLabel();
jComboBoxMarca = new javax.swing.JComboBox();
jButtonBuscar = new javax.swing.JButton();
jLabel16 = new javax.swing.JLabel();
jTextField1 = new javax.swing.JTextField();
jLabel17 = new javax.swing.JLabel();
setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
jLabel1.setText("Valores generales");
jButton1.setText("Actualizar");
jButton1.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jButton1ActionPerformed(evt);
}
});
jLabel3.setText("Impuesto");
jLabel4.setText("Utilidad");
jLabel7.setText("Coeficiente correspondiente al año en curso:");
Anio.setText("jLabel8");
jLabel8.setText("->");
Coeficiente.setText("jLabel9");
jLabel2.setText("Escoja vehiculo de nuestro stock:");
jLabel5.setText("Valor de Reajuste");
jLabel6.setText("Cuotas");
CajaCuotas.setText("1");
BotonCotizar.setText("Cotizar");
BotonCotizar.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
BotonCotizarActionPerformed(evt);
}
});
Lista3.setModel(modelo);
Lista3.setSelectionMode(javax.swing.ListSelectionModel.SINGLE_SELECTION);
jScrollPane3.setViewportView(Lista3);
jLabel9.setText("Seguro:");
jLabel10.setText("Precio de Venta:");
EtiquetaVehiculoElegido.setBackground(new java.awt.Color(217, 204, 214));
org.jdesktop.beansbinding.Binding binding = org.jdesktop.beansbinding.Bindings.createAutoBinding(org.jdesktop.beansbinding.AutoBinding.UpdateStrategy.READ_WRITE, Lista3, org.jdesktop.beansbinding.ELProperty.create("${selectedElement}"), EtiquetaVehiculoElegido, org.jdesktop.beansbinding.BeanProperty.create("text"));
bindingGroup.addBinding(binding);
jLabel15.setText("Valor de la cuota:");
jLabel11.setText("Transporte");
jLabel12.setText("Particular");
jLabel13.setText("Carga");
jComboBoxTipo.setModel(new concesionaria.ComboBoxModelFiltro("tipos", "tipo"));
jLabel14.setText("Filtrar");
jComboBoxMarca.setModel(new concesionaria.ComboBoxModelFiltro("marcas","marca"));
jComboBoxMarca.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jComboBoxMarcaActionPerformed(evt);
}
});
jButtonBuscar.setText("Buscar");
jButtonBuscar.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jButtonBuscarActionPerformed(evt);
}
});
jLabel16.setText("Pagar hasta:");
jLabel17.setText("Disponibles:");
javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
getContentPane().setLayout(layout);
layout.setHorizontalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addContainerGap()
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
.addGroup(layout.createSequentialGroup()
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(jLabel2)
.addGroup(layout.createSequentialGroup()
.addComponent(jLabel11)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(jLabel3)
.addComponent(Caja1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
.addGap(12, 12, 12)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(jLabel4)
.addComponent(Caja2, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)))
.addGroup(layout.createSequentialGroup()
.addComponent(jLabel1)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(jButton1)))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
.addGroup(layout.createSequentialGroup()
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(jLabel5)
.addComponent(jLabel6))
.addGap(17, 17, 17))
.addGroup(layout.createSequentialGroup()
.addComponent(jLabel10)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)))
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(CajaCuotas, javax.swing.GroupLayout.PREFERRED_SIZE, 30, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(CajaValorReajuste, javax.swing.GroupLayout.PREFERRED_SIZE, 29, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(EtiquetaPrecioVenta, javax.swing.GroupLayout.PREFERRED_SIZE, 81, javax.swing.GroupLayout.PREFERRED_SIZE)))
.addComponent(BotonCotizar, javax.swing.GroupLayout.PREFERRED_SIZE, 86, javax.swing.GroupLayout.PREFERRED_SIZE))
.addGap(14, 14, 14))
.addGroup(javax.swing.GroupLayout.Alignment.LEADING, layout.createSequentialGroup()
.addComponent(jLabel7)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(Anio)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(jLabel8)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(Coeficiente)))
.addGroup(layout.createSequentialGroup()
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(jLabel12)
.addComponent(jLabel13))
.addGap(18, 18, 18)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(Caja3, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(Caja5, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(Caja6, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(Caja4, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
.addComponent(jLabel15)
.addComponent(jLabel9))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(EtiquetaSeguro, javax.swing.GroupLayout.PREFERRED_SIZE, 85, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(EtiquetaValordeCuota, javax.swing.GroupLayout.PREFERRED_SIZE, 90, javax.swing.GroupLayout.PREFERRED_SIZE))
.addGap(7, 7, 7))
.addComponent(EtiquetaVehiculoElegido, javax.swing.GroupLayout.DEFAULT_SIZE, 606, Short.MAX_VALUE)
.addGroup(layout.createSequentialGroup()
.addComponent(jLabel14)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(jComboBoxTipo, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(jComboBoxMarca, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(jLabel16)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(jTextField1, javax.swing.GroupLayout.PREFERRED_SIZE, 92, javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(jButtonBuscar))
.addComponent(jLabel17)
.addComponent(jScrollPane3, javax.swing.GroupLayout.DEFAULT_SIZE, 606, Short.MAX_VALUE))
.addContainerGap())
);
layout.linkSize(javax.swing.SwingConstants.HORIZONTAL, new java.awt.Component[] {Caja1, Caja2, Caja3, Caja4, Caja5, Caja6, jButton1, jLabel3});
layout.linkSize(javax.swing.SwingConstants.HORIZONTAL, new java.awt.Component[] {CajaCuotas, CajaValorReajuste});
layout.setVerticalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addContainerGap()
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(jLabel7)
.addComponent(Anio)
.addComponent(jLabel8)
.addComponent(Coeficiente))
.addGap(18, 18, 18)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(jButton1, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addComponent(BotonCotizar, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
.addComponent(jLabel1))
.addGap(14, 14, 14)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(jLabel2)
.addComponent(jLabel5)
.addComponent(CajaValorReajuste, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(jLabel3)
.addComponent(jLabel4)
.addComponent(jLabel6)
.addComponent(CajaCuotas, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(EtiquetaPrecioVenta, javax.swing.GroupLayout.DEFAULT_SIZE, 24, Short.MAX_VALUE)
.addComponent(Caja1)
.addComponent(Caja2)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(jLabel11)
.addComponent(jLabel10, javax.swing.GroupLayout.DEFAULT_SIZE, 17, Short.MAX_VALUE)))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(jLabel12)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(Caja3, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(Caja4, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(jLabel9))
.addComponent(EtiquetaSeguro, javax.swing.GroupLayout.PREFERRED_SIZE, 18, javax.swing.GroupLayout.PREFERRED_SIZE))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addGap(6, 6, 6)
.addComponent(jLabel13))
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(Caja5, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(Caja6, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(jLabel15, javax.swing.GroupLayout.DEFAULT_SIZE, 22, Short.MAX_VALUE))
.addComponent(EtiquetaValordeCuota, javax.swing.GroupLayout.PREFERRED_SIZE, 19, javax.swing.GroupLayout.PREFERRED_SIZE))
.addGap(18, 18, 18)
.addComponent(EtiquetaVehiculoElegido, javax.swing.GroupLayout.PREFERRED_SIZE, 21, javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(jComboBoxTipo, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(jLabel14)
.addComponent(jComboBoxMarca, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(jLabel16)
.addComponent(jTextField1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(jButtonBuscar))
.addGap(20, 20, 20)
.addComponent(jLabel17)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(jScrollPane3, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addContainerGap())
);
layout.linkSize(javax.swing.SwingConstants.VERTICAL, new java.awt.Component[] {Caja1, Caja2, Caja3, Caja4, Caja5, Caja6});
bindingGroup.bind();
pack();
}// </editor-fold>//GEN-END:initComponents
private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButton1ActionPerformed
//Un HashMap auxiliar donde guardar todas las cajas de texto
HashMap aux = new HashMap();
//Rellenando el diccionario auxiliar...
aux.put("transporte-impuestos", new Double(Caja1.getText()));
aux.put("transporte-utilidades", new Double(Caja2.getText()));
aux.put("particulares-impuestos", new Double(Caja3.getText()));
aux.put("particulares-utilidades", new Double(Caja4.getText()));
aux.put("carga-impuestos", new Double(Caja5.getText()));
aux.put("carga-utilidades", new Double(Caja6.getText()));
calculadora.setDiccionario_vehiculos(aux);
}//GEN-LAST:event_jButton1ActionPerformed
private void BotonCotizarActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_BotonCotizarActionPerformed
//el operador ha ingresado lo necesario?
if (Lista3.isSelectionEmpty()) {
JOptionPane.showMessageDialog(null, "Debe escoger un vehiculo antes de comenzar la cotización");
}
if (CajaValorReajuste.getText().isEmpty()) {
JOptionPane.showMessageDialog(null, "Indique un valor de reajuste");
}
/* Segun postulado:
* "Cualquiera sea el tipo de vehículo, el calculo del precio de venta se realiza
* mediante el siguiente método:
*
* Precio Venta = Precio de Fabrica * 1.21 + Utilidad + Impuestos"
*/
/* Busco el precio de fabrica a partir de la etiqueta EtiquetaVehiculoElegido
* y lo convierto a double para trabajarlo enseguida
*/
String PrecioFabricaAConvertir = EtiquetaVehiculoElegido.getText();
//Recordar postulado: Use control de excepciones ante posibles errores
try {
String[] PrecioFabricaAConvertirEnPedacitos = PrecioFabricaAConvertir.split(":");
double pxFabrica = Double.valueOf(PrecioFabricaAConvertirEnPedacitos[1]).doubleValue();
double utilidad = Double.valueOf(Caja6.getText()).doubleValue();
double impuestos = Double.valueOf(Caja5.getText()).doubleValue();
double pxVenta = pxFabrica * 1.21 + utilidad + impuestos;
//Lo dejamos en dos decimales... no sea que la multiplicacion arroje cualquier cosa
DecimalFormat formateador = new DecimalFormat("####.##");
EtiquetaPrecioVenta.setText(formateador.format(pxVenta));
/* Además cada vez que se vende un vehículo este debe ser asegurado.
* Para calcular el valor del seguro se emplea el siguiente método:
* Seguro = Precio de venta * Coeficiente (registrado en un archivo y que
* varia según el año de fabricación del vehículo) + reajuste (ingresado
* por el operador en el momento de realizar el cálculo.
*/
double reajuste = Double.valueOf(CajaValorReajuste.getText()).doubleValue();
Double seguro = pxVenta * valorCoeficiente + reajuste;
EtiquetaSeguro.setText(formateador.format(seguro));
/*
* Si el vehículo de vende financiado, el valor de la cuota se calcula
* mediante el siguiente método:
* Cuota = (Precio de venta + Seguro) * Interés Anual / Número de Cuotas
*
* "Interes Anual" es el coeficiente anual correspondiente al año en curso ? *
*/
double cuotas = Double.valueOf(CajaCuotas.getText()).doubleValue();
Double interesAnual = 1.002;
//double cuota = pxVenta + seguro * valorCoeficiente / cuotas;
// (200000 + 2000) * 1.002 / 10
double cuota = (pxVenta + seguro) * interesAnual / cuotas;
EtiquetaValordeCuota.setText(formateador.format(cuota));
} catch (java.lang.NumberFormatException e) {
System.out.println("La caja conteniendo el valor de reajuste debe ser llenada\n"
+ " Caso contrario, atrapamos la excepción: " + e.getMessage());
} catch (java.lang.NullPointerException e) {
System.out.println("Atrapando excepción: si la Lista de vehiculos no ha sido seleccionada, no \n"
+ "hay manera de calcular el px de venta ");
}
}//GEN-LAST:event_BotonCotizarActionPerformed
private void jButtonBuscarActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButtonBuscarActionPerformed
//Limpia el modelo (que controla por dentro a Lista3), es para que no se sumen
//mas autos si se vuelve a hacer click en otra seleccion
modelo.clear();
Connection conne = null;
//recordar agregar Biblioteca para MySQL en el árbol del proyecto!
try {
try {
Class.forName("com.mysql.jdbc.Driver").newInstance();
} catch (InstantiationException ex) {
Logger.getLogger(Calculador.class.getName()).log(Level.SEVERE, null, ex);
} catch (IllegalAccessException ex) {
Logger.getLogger(Calculador.class.getName()).log(Level.SEVERE, null, ex);
}
conne = (Connection) DriverManager.getConnection(url, login, password);
// ================ OBTENIENDO VALOR DEL PRIMER FILTRO ==================================
System.out.println("jComboBoxTipo ha seleccionado: " + jComboBoxTipo.getSelectedItem().toString());
String primerFiltro = jComboBoxTipo.getSelectedItem().toString(); //ejemplo: particular
System.out.println("Conexión a base: " + url + " ... Ok");
Statement stmt2 = (Statement) conne.createStatement();
String sql = "SELECT * FROM `tipos` WHERE `tipos`.`tipo` LIKE '" + primerFiltro + "'";
System.out.println("sql: " + sql);
ResultSet res = stmt2.executeQuery(sql);
res.first();
Integer tipo_id = res.getInt("id");
System.out.println("tipo_id es " + tipo_id);
// ================ FIN OBTENIENDO VALOR DEL PRIMER FILTRO ==================================
// ================ OBTENIENDO VALOR DEL SEGUNDO FILTRO ==================================
System.out.println("jComboBoxMarca ha seleccionado: " + jComboBoxMarca.getSelectedItem().toString());
String segundoFiltro = jComboBoxMarca.getSelectedItem().toString(); //ejemplo: particular
stmt2 = (Statement) conne.createStatement();
sql = "SELECT * FROM `marcas` WHERE `marcas`.`marca` LIKE '" + segundoFiltro + "'";
System.out.println("sql: " + sql);
res = stmt2.executeQuery(sql);
res.first();//SI SOLO NECESITAMOS UN VALOR, DEBEMOS POSICIONAR EL PUNTERO EN first!!!!
Integer marca_id = res.getInt("id");
System.out.println("marca_id es " + marca_id);
// ================ FIN OBTENIENDO VALOR DEL SEGUNDO FILTRO ==================================
// ================ OBTENIENDO VALOR DEL TERCER FILTRO ==================================
//to Do..
// ================ FIN OBTENIENDO VALOR DEL TERCER FILTRO ==================================
// ================ COMPAGINACION FINAL ==================================
Statement stmt4 = (Statement) conne.createStatement();
sql = "SELECT * FROM `stock` WHERE `tipo_id` = '" + tipo_id
+ "' AND `marca_id` = '" + marca_id + "'";
System.out.println("sql: " + sql);
ResultSet res4 = stmt4.executeQuery(sql);
//res4.first();
int i = 0;
while (res4.next()) {
//Cual color?
Statement stmt5 = (Statement) conne.createStatement();
sql = "SELECT * FROM `colores` WHERE `id` = '" + res4.getInt("color_id") + "'";
System.out.println("sql: " + sql);
ResultSet res5 = stmt5.executeQuery(sql);
res5.first();
//Cual combustible?
Statement stmt6 = (Statement) conne.createStatement();
sql = "SELECT * FROM `combustibles` WHERE `id` = '" + res4.getInt("combustible_id") + "'";
System.out.println("sql: " + sql);
ResultSet res6 = stmt6.executeQuery(sql);
res6.first();
//Compaginando todo
String item = "Transporte " + primerFiltro + " " + segundoFiltro + " " + res5.getString("color")
+ ", fabricado en " + res4.getInt("anioFabricac") + ", a " + res6.getString("combustible")
+ ", " + res4.getInt("cantidadEnStock")
+ " en stock, Px de Fabrica: " + res4.getDouble("precFabrica");
System.out.println("Agregando item al Model: " + item);
this.modelo.addElement(item);
i++;
}
if (i == 0) {
this.modelo.addElement("Intente con otros valores");
//EtiquetaVehiculoElegido.setText("Intente con otros valores");
System.out.println("Intente con otros valores");
}
/*Ejemplo
this.modelo.addElement("ppp");
this.modelo.addElement("ppp");
this.modelo.addElement("ppp");*/
Lista3.setModel(modelo);
res.close();
stmt2.close();
conne.close();
}//fin try
catch (SQLException ex) {
System.out.println(ex);
System.out.println(ex.getCause());
}//fin catch
catch (ClassNotFoundException ex) {
System.out.println(ex);
System.out.println("No encuentro el Conector JDBC");
}//fin catch
}//GEN-LAST:event_jButtonBuscarActionPerformed
private void jComboBoxMarcaActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jComboBoxMarcaActionPerformed
// TODO add your handling code here:
}//GEN-LAST:event_jComboBoxMarcaActionPerformed
//señores, el main, por si lo desea ejecutar desde aqui en lugar desde el Main.java
public static void main(String args[]) {
java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
new GUI().setVisible(true);
}
});
}
// Variables declaration - do not modify//GEN-BEGIN:variables
private javax.swing.JLabel Anio;
private javax.swing.JButton BotonCotizar;
private javax.swing.JTextField Caja1;
private javax.swing.JTextField Caja2;
private javax.swing.JTextField Caja3;
private javax.swing.JTextField Caja4;
private javax.swing.JTextField Caja5;
private javax.swing.JTextField Caja6;
private javax.swing.JTextField CajaCuotas;
private javax.swing.JTextField CajaValorReajuste;
private javax.swing.JLabel Coeficiente;
private javax.swing.JLabel EtiquetaPrecioVenta;
private javax.swing.JLabel EtiquetaSeguro;
private javax.swing.JLabel EtiquetaValordeCuota;
private javax.swing.JLabel EtiquetaVehiculoElegido;
private javax.swing.JList Lista3;
private javax.swing.JButton jButton1;
private javax.swing.JButton jButtonBuscar;
private javax.swing.JComboBox jComboBoxMarca;
private javax.swing.JComboBox jComboBoxTipo;
private javax.swing.JLabel jLabel1;
private javax.swing.JLabel jLabel10;
private javax.swing.JLabel jLabel11;
private javax.swing.JLabel jLabel12;
private javax.swing.JLabel jLabel13;
private javax.swing.JLabel jLabel14;
private javax.swing.JLabel jLabel15;
private javax.swing.JLabel jLabel16;
private javax.swing.JLabel jLabel17;
private javax.swing.JLabel jLabel2;
private javax.swing.JLabel jLabel3;
private javax.swing.JLabel jLabel4;
private javax.swing.JLabel jLabel5;
private javax.swing.JLabel jLabel6;
private javax.swing.JLabel jLabel7;
private javax.swing.JLabel jLabel8;
private javax.swing.JLabel jLabel9;
private javax.swing.JScrollPane jScrollPane3;
private javax.swing.JTextField jTextField1;
private org.jdesktop.beansbinding.BindingGroup bindingGroup;
// End of variables declaration//GEN-END:variables
}