package Control;
import DAO.CiudadDAO;
import DAO.Registro_invDAO;
import DAO.UsuarioDAO;
import java.awt.Color;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.swing.DefaultComboBoxModel;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.table.DefaultTableModel;
import net.sf.jasperreports.engine.*;
import net.sf.jasperreports.view.JasperViewer;
/**
* <p style="margin-top: 0">
* Clase que controla las operaciones más importantes en la generación de
* los reportes de puntos otorgados, cantidad de puntos canjeados y general.
* </p>
*/
// <editor-fold defaultstate="collapsed" desc=" UML Marker ">
// #[regen=yes,id=DCE.76E2F64B-A78E-0F95-052D-08CA26DF7522]
// </editor-fold>
public class ReportesC {
private static final String JASPER_REP_PREM_EST = "src/Reportes/ReportePremioEstacion.jasper";
private static final String JASPER_REP_INV = "src/Reportes/ReporteInventario.jasper";
private static final String JASPER_REP_PUN_EST="src/Reportes/ReportePuntosEst.jasper";
UsuarioDAO usdao = Login.usuariodao;
Registro_invDAO regdao = Login.regdao;
CiudadDAO ciudaddao = Login.ciudaddao;
private Connection conectar() {
Connection con = null;
try {
Class.forName("org.apache.derby.jdbc.EmbeddedDriver");
} catch (ClassNotFoundException ex) {
Logger.getLogger(ReportesC.class.getName()).log(Level.SEVERE, null, ex);
}
try {
con = DriverManager.getConnection("jdbc:derby:ppgdb;create=true", "admin", "admin");
} catch (SQLException ex) {
Logger.getLogger(ReportesC.class.getName()).log(Level.SEVERE, null, ex);
}
return con;
}
// <editor-fold defaultstate="collapsed" desc=" UML Marker ">
// #[regen=yes,id=DCE.556CA207-830C-A0D5-F1D9-9FB7ED3CFCB3]
// </editor-fold>
public ReportesC() {
}
public DefaultComboBoxModel combodatos(String nomCiudad) {
DefaultComboBoxModel datosCB = new DefaultComboBoxModel();
Connection con = conectar();
Statement stmt = null;
ResultSet rs = null;
int i = 1;
String cons = "SELECT ESTACIONES.NOMB_ESTACION from CIUDAD, " + "CIUDAD_ESTACIONES, ESTACIONES WHERE " + "CIUDAD.ID=CIUDAD_ESTACIONES.CIUDAD_ID and " + "ESTACIONES.SIGLA=CIUDAD_ESTACIONES.MESTACIONES_SIGLA and " + "CIUDAD.NOMBRECITY='" + nomCiudad + "'";
try {
stmt = con.createStatement();
rs = stmt.executeQuery(cons);
while (rs.next()) {
datosCB.addElement(rs.getString(1));
}
con.close();
} catch (SQLException ex) {
Logger.getLogger(ReportesC.class.getName()).log(Level.SEVERE, null, ex);
} finally {
return datosCB;
}
}
public DefaultTableModel genRepEst(String nombreCiudad, String nombreEstacion) {
DefaultTableModel tabla = new DefaultTableModel();
tabla.addColumn("Premio");
tabla.addColumn("Disponibles");
tabla.addColumn("Entregados");
Connection con = conectar();
Statement stmt = null;
ResultSet rs = null;
Object[] fila = new Object[3];
String prem_est = "CREATE VIEW PREM_EST AS (SELECT PREMIOS.NOMBRE, " + "PREMIOS.CANTIDAD FROM PREMIOS, ESTACIONES_PREMIOS, ESTACIONES " + "where PREMIOS.ID=ESTACIONES_PREMIOS.PREMIOS_ID and " + "ESTACIONES.SIGLA=ESTACIONES_PREMIOS.ESTACIONES_SIGLA and " + "ESTACIONES.NOMB_ESTACION='" + nombreEstacion + "')";
String reg_est = "CREATE VIEW REG_EST AS(SELECT CANJES.PREMIO, " + "SUM(CANJES.CANTIDAD) AS ENTREGADOS FROM CANJES WHERE CANJES.BOMBA='" + nombreEstacion + "' GROUP BY CANJES.PREMIO)";
String cons = "SELECT PREM_EST.NOMBRE, PREM_EST.CANTIDAD, " + "REG_EST.ENTREGADOS FROM PREM_EST LEFT OUTER JOIN REG_EST ON " + "PREM_EST.NOMBRE = REG_EST.PREMIO";
String borra_prem_est = "DROP VIEW PREM_EST";
String borra_reg_est = "DROP VIEW REG_EST";
try {
stmt = con.createStatement();
stmt.executeUpdate(prem_est);
stmt.executeUpdate(reg_est);
rs = stmt.executeQuery(cons);
while (rs.next()) {
fila[0] = rs.getString(1);
fila[1] = rs.getInt(2);
fila[2] = rs.getInt(3);
tabla.addRow(fila);
}
stmt.executeUpdate(borra_prem_est);
stmt.executeUpdate(borra_reg_est);
con.close();
} catch (SQLException ex) {
Logger.getLogger(ReportesC.class.getName()).log(Level.SEVERE, null, ex);
JOptionPane.showMessageDialog(null, "No se pudo efectuar la consulta.\n" + ex, "Error", JOptionPane.ERROR_MESSAGE);
} finally {
return tabla;
}
}
public DefaultTableModel genRepInv(String nomCiudad) {
DefaultTableModel tabla = new DefaultTableModel();
Connection con = conectar();
ResultSet rs = null;
Statement stmt = null;
Object[] fila = new Object[14];
tabla.addColumn("Fecha");
tabla.addColumn("Administrador");
tabla.addColumn("Estación");
tabla.addColumn("Operación");
tabla.addColumn("BComb");
tabla.addColumn("BCons");
tabla.addColumn("CPerro");
tabla.addColumn("DAceite");
tabla.addColumn("Dllanta");
tabla.addColumn("LavBus");
tabla.addColumn("LavCam");
tabla.addColumn("LavCar");
tabla.addColumn("LavMot");
tabla.addColumn("RecCel");
String inv = "CREATE VIEW INV AS(SELECT REGISTRO_INV.FECHA, REGISTRO_INV.NOMBREUSER, REGISTRO_INV.NOMBREESTACION, REGISTRO_INV.OPERACION, REGISTRO_INV.BONOCOMBUSTIBLE, REGISTRO_INV.BONOCONSUMO50MIL, REGISTRO_INV.CPERRO, REGISTRO_INV.DESACEITE, REGISTRO_INV.DESC4LLANTAS, REGISTRO_INV.LAVADABUSETA, REGISTRO_INV.LAVADACAMIONETA, REGISTRO_INV.LAVADACARRO, REGISTRO_INV.LAVADOMOTO, REGISTRO_INV.REACARGACEL, CIUDAD.NOMBRECITY FROM REGISTRO_INV, CIUDAD WHERE REGISTRO_INV.NOMBRECIUDAD=CIUDAD.NOMBRECITY and NOMBRECITY='" + nomCiudad + "')";
String cons = "SELECT * FROM INV";
String drop_inv = "DROP VIEW INV";
try {
stmt = con.createStatement();
stmt.executeUpdate(inv);
rs = stmt.executeQuery(cons);
while (rs.next()) {
fila[0] = rs.getString(1);
fila[1] = rs.getString(2);
fila[2] = rs.getString(3);
fila[3] = rs.getString(4);
fila[4] = rs.getInt(5);
fila[5] = rs.getInt(6);
fila[6] = rs.getInt(7);
fila[7] = rs.getInt(8);
fila[8] = rs.getInt(9);
fila[9] = rs.getInt(10);
fila[10] = rs.getInt(11);
fila[11] = rs.getInt(12);
fila[12] = rs.getInt(13);
fila[13] = rs.getInt(14);
tabla.addRow(fila);
}
stmt.executeUpdate(drop_inv);
con.close();
} catch (SQLException ex) {
Logger.getLogger(ReportesC.class.getName()).log(Level.SEVERE, null, ex);
} finally {
return tabla;
}
}
public DefaultTableModel genRepPunEst(String nomCiudad) {
DefaultTableModel tabla = new DefaultTableModel();
Connection con = conectar();
ResultSet rs = null;
Statement stmt = null;
Object[] fila = new Object[2];
String punt_prem = "CREATE VIEW PUNT_PREM AS (SELECT ESTACIONES.NOMB_ESTACION, " +
"(CANJES.CANTIDAD*PREMIOS.PUNTOS) AS TOTAL FROM ESTACIONES, CANJES, " +
"PREMIOS, ESTACIONES_PREMIOS WHERE ESTACIONES.NOMB_ESTACION=CANJES.BOMBA " +
"AND PREMIOS.NOMBRE=CANJES.PREMIO AND PREMIOS.ID=ESTACIONES_PREMIOS.PREMIOS_ID" +
" AND ESTACIONES.SIGLA=ESTACIONES_PREMIOS.ESTACIONES_SIGLA AND CANJES.CIUDAD='" + nomCiudad + "')";
String cons = "SELECT NOMB_ESTACION, SUM(TOTAL) AS PUNTOS FROM PUNT_PREM GROUP BY NOMB_ESTACION";
String drop = "DROP VIEW PUNT_PREM";
tabla.addColumn("Estación");
tabla.addColumn("Puntos entregados");
try {
stmt = con.createStatement();
stmt.executeUpdate(punt_prem);
rs = stmt.executeQuery(cons);
while (rs.next()) {
fila[0] = rs.getString(1);
fila[1] = rs.getInt(2);
tabla.addRow(fila);
}
stmt.executeUpdate(drop);
con.close();
} catch (SQLException ex) {
Logger.getLogger(ReportesC.class.getName()).log(Level.SEVERE, null, ex);
} finally {
return tabla;
}
}
public void impRepEst(String est, JLabel label) {
Connection con = conectar();
Statement stmt = null;
String vista1 = "CREATE VIEW PREM_EST AS (SELECT PREMIOS.NOMBRE, " +
"PREMIOS.CANTIDAD, CIUDAD.NOMBRECITY, ESTACIONES.NOMB_ESTACION " +
"FROM CIUDAD, CIUDAD_ESTACIONES, PREMIOS, ESTACIONES_PREMIOS, " +
"ESTACIONES where PREMIOS.ID=ESTACIONES_PREMIOS.PREMIOS_ID and " +
"ESTACIONES.SIGLA=ESTACIONES_PREMIOS.ESTACIONES_SIGLA and " +
"CIUDAD.ID=CIUDAD_ESTACIONES.CIUDAD_ID and " +
"ESTACIONES.SIGLA=CIUDAD_ESTACIONES.MESTACIONES_SIGLA and " +
"ESTACIONES.NOMB_ESTACION='" + est + "')";
String vista2 = "CREATE VIEW REG_EST AS(SELECT CANJES.PREMIO, SUM(CANJES.CANTIDAD)" +
" AS ENTREGADOS FROM CANJES WHERE CANJES.BOMBA='"+est+"' GROUP BY CANJES.PREMIO)";
String drop1 = "DROP VIEW PREM_EST";
String drop2 = "DROP VIEW REG_EST";
try {
stmt = con.createStatement();
stmt.executeUpdate(vista1);
stmt.executeUpdate(vista2);
JasperPrint print = JasperFillManager.fillReport(JASPER_REP_PREM_EST, null, con);
JasperViewer viewer = new JasperViewer(print, false);
viewer.setVisible(true);
stmt.executeUpdate(drop1);
stmt.executeUpdate(drop2);
con.close();
label.setForeground(Color.green);
label.setText("Generación del reporte exitosa");
} catch (SQLException ex) {
Logger.getLogger(ReportesC.class.getName()).log(Level.SEVERE, null, ex);
label.setForeground(Color.red);
label.setText("Generación del archivo fallida");
JOptionPane.showMessageDialog(null, "Hubo problemas al guardar el reporte\n" +
ex.getMessage(), "Error", JOptionPane.ERROR_MESSAGE);
} catch (JRException ex) {
ex.printStackTrace();
label.setForeground(Color.red);
label.setText("Generación del archivo fallida");
JOptionPane.showMessageDialog(null, "Hubo problemas al guardar el reporte\n" +
ex.getMessage(), "Error", JOptionPane.ERROR_MESSAGE);
}
}
public void impRepInv(String ciudad, JLabel label) {
Connection con = conectar();
Statement stmt = null;
String vista1 = "CREATE VIEW INV AS (SELECT REGISTRO_INV.FECHA, " +
"REGISTRO_INV.NOMBREUSER, REGISTRO_INV.NOMBREESTACION, " +
"REGISTRO_INV.OPERACION, REGISTRO_INV.BONOCOMBUSTIBLE, " +
"REGISTRO_INV.BONOCONSUMO50MIL, REGISTRO_INV.CPERRO, " +
"REGISTRO_INV.DESACEITE, REGISTRO_INV.DESC4LLANTAS, " +
"REGISTRO_INV.LAVADABUSETA, REGISTRO_INV.LAVADACAMIONETA, " +
"REGISTRO_INV.LAVADACARRO, REGISTRO_INV.LAVADOMOTO, " +
"REGISTRO_INV.REACARGACEL, CIUDAD.NOMBRECITY FROM REGISTRO_INV, " +
"CIUDAD WHERE REGISTRO_INV.NOMBRECIUDAD=CIUDAD.NOMBRECITY and NOMBRECITY='" + ciudad + "')";
String drop1 = "DROP VIEW INV";
try {
stmt = con.createStatement();
stmt.executeUpdate(vista1);
JasperPrint print = JasperFillManager.fillReport(JASPER_REP_INV, null, con);
JasperViewer viewer = new JasperViewer(print, false);
viewer.setVisible(true);
stmt.executeUpdate(drop1);
con.close();
label.setForeground(Color.green);
label.setText("Generación del reporte exitosa");
} catch (SQLException ex) {
Logger.getLogger(ReportesC.class.getName()).log(Level.SEVERE, null, ex);
label.setForeground(Color.red);
label.setText("Generación del archivo fallida");
JOptionPane.showMessageDialog(null, "Hubo problemas al guardar el reporte\n" +
ex.getMessage(), "Error", JOptionPane.ERROR_MESSAGE);
} catch (JRException ex) {
ex.printStackTrace();
label.setForeground(Color.red);
label.setText("Generación del archivo fallida");
JOptionPane.showMessageDialog(null, "Hubo problemas al guardar el reporte\n" +
ex.getMessage(), "Error", JOptionPane.ERROR_MESSAGE);
}
}
public void impRepPunEst(String ciudad, JLabel label) {
Connection con = conectar();
Statement stmt = null;
String vista1 = "CREATE VIEW PUNT_PREM AS (SELECT ESTACIONES.NOMB_ESTACION,"+
" (CANJES.CANTIDAD*PREMIOS.PUNTOS) AS TOTAL, CANJES.CIUDAD FROM "+
"ESTACIONES, CANJES, PREMIOS, ESTACIONES_PREMIOS WHERE "+
"ESTACIONES.NOMB_ESTACION=CANJES.BOMBA AND PREMIOS.NOMBRE=CANJES.PREMIO"+
" AND PREMIOS.ID=ESTACIONES_PREMIOS.PREMIOS_ID AND "+
"ESTACIONES.SIGLA=ESTACIONES_PREMIOS.ESTACIONES_SIGLA AND "+
"CANJES.CIUDAD='"+ciudad+"')";
String drop1 = "DROP VIEW PUNT_PREM";
try {
stmt = con.createStatement();
stmt.executeUpdate(vista1);
JasperPrint print = JasperFillManager.fillReport(JASPER_REP_PUN_EST, null, con);
JasperViewer viewer = new JasperViewer(print, false);
viewer.setVisible(true);
stmt.executeUpdate(drop1);
con.close();
label.setForeground(Color.green);
label.setText("Generación del reporte exitosa");
} catch (SQLException ex) {
Logger.getLogger(ReportesC.class.getName()).log(Level.SEVERE, null, ex);
label.setForeground(Color.red);
label.setText("Generación del archivo fallida");
JOptionPane.showMessageDialog(null, "Hubo problemas al guardar el reporte\n" +
ex.getMessage(), "Error", JOptionPane.ERROR_MESSAGE);
} catch (JRException ex) {
ex.printStackTrace();
label.setForeground(Color.red);
label.setText("Generación del archivo fallida");
JOptionPane.showMessageDialog(null, "Hubo problemas al guardar el reporte\n" +
ex.getMessage(), "Error", JOptionPane.ERROR_MESSAGE);
}
}
}