package concesionaria;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.util.HashMap;
//import java.util.Vector;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.swing.JOptionPane;
import java.sql.*;
//Esta clase realiza lectura y escritura de archivos
public class Calculador {
//Estos HashMaps se poblaran inicialmente con contenidos de varios
//archivo.txt
private HashMap diccionario_vehiculos = new HashMap();
//coeficientes.txt
private HashMap diccionario_coeficientes = new HashMap();
//Para la base de datos
static String bd = "concesionaria";
static String login = "root";
static String password = "mariscos";
static String url = "jdbc:mysql://localhost/" + bd;
/*Este es el constructor. Es un metodo que se dispara automaticamente
durante la instancia de cualquier objeto de tipo Calculador */
public Calculador() {
Connection conn = 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);
}
conn = DriverManager.getConnection(url, login, password);
if (conn != null) {
System.out.println("Conexión a base: " + url + " ... Ok");
Statement stmt = conn.createStatement();
ResultSet res = stmt.executeQuery("SELECT * FROM datos");
//Debugging por abajo...
System.out.println("\n\timpuestos \t utilidades \n");
res.first();
String id = res.getString("id");
double impuestos = res.getDouble("impuestos");
double utilidades = res.getDouble("utilidades");
System.out.printf("%f - %f \n", impuestos, utilidades);
//System.out.println(id + " \t " + impuestos.toString() + " \t " + utilidades.toString());
//Ponemos (put) dentro de diccionario_vehiculos el valor que nos interesa.
//Para encontrarlo mas tarde, le ponemos una palabra que lo identifique
//Aqui es interesante observar el contenido del objeto diccionario_vehiculos usando
//la ejecución Paso a Paso (F7)
diccionario_vehiculos.put("transporte-impuestos", new Double(impuestos));
diccionario_vehiculos.put("transporte-utilidades", new Double(utilidades));
//debug
//System.out.println("--------------"+diccionario_vehiculos.get("transporte-impuestos").toString());
res.next();
//Seguimos alimentando nuestro diccionario_vehiculos, con palabras nuevas
impuestos = res.getDouble("impuestos");
utilidades = res.getDouble("utilidades");
diccionario_vehiculos.put("particulares-impuestos", impuestos);
diccionario_vehiculos.put("particulares-utilidades", utilidades);
res.next();
impuestos = res.getDouble("impuestos");
utilidades = res.getDouble("utilidades");
diccionario_vehiculos.put("carga-impuestos", new Double(impuestos));
diccionario_vehiculos.put("carga-utilidades", new Double(utilidades));
res.close();
stmt.close();
// para cargar en la mysql el viejo coeficientes.txt
/*
LOAD DATA LOCAL INFILE '/tmp/phpyJiy7K' REPLACE INTO TABLE `coeficientes`
FIELDS TERMINATED BY ',' ESCAPED BY '\\' LINES TERMINATED BY '\n'
# 63 fila(s) fueron afectadas.
*/
stmt = conn.createStatement();
res = stmt.executeQuery("SELECT * FROM coeficientes");
//Debugging por abajo...
System.out.println("\n\tAño \t coeficientes \n");
res.first();
while (res.next()) {
int anio = res.getInt("anio");
double coeficiente = res.getDouble("coeficiente");
System.out.printf("#########%d - %f \n", anio, coeficiente);
this.diccionario_coeficientes.put(new Integer(anio), new Double(coeficiente));
}
res.close();
stmt.close();
conn.close();
}//fin if
}//fin try
catch (SQLException ex) {
System.out.println(ex);
}//fin catch
catch (ClassNotFoundException ex) {
System.out.println(ex);
System.out.println("No encuentro el Conector JDBC");
}//fin catch
}//fin constructor
/**
* @return the diccionario_vehiculos
*/
public HashMap getDiccionario_vehiculos() {
return diccionario_vehiculos;
}
/**
* @param diccionario_vehiculos the diccionario_vehiculos to set
*/
public void setDiccionario_vehiculos(HashMap diccio) {
//copio el nuevo diccionario sobre el viejo
this.diccionario_vehiculos = diccio;
//Actualizo el archivo.txt
try {
BufferedWriter out = new BufferedWriter(new FileWriter("archivo.txt", false));
out.write(this.diccionario_vehiculos.get("transporte-impuestos") + ","
+ this.diccionario_vehiculos.get("transporte-utilidades") + "\n");
out.write(this.diccionario_vehiculos.get("particulares-impuestos") + ","
+ this.diccionario_vehiculos.get("particulares-utilidades") + "\n");
out.write(this.diccionario_vehiculos.get("carga-impuestos") + ","
+ this.diccionario_vehiculos.get("carga-utilidades") + "\n");
/*
3010.3,41.5
728.25,30.44
2100.5,21.5
*/
out.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
Connection conn = 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);
}
conn = DriverManager.getConnection(url, login, password);
if (conn != null) {
System.out.println("Conexión a base: " + url + " ... Ok");
//Borro los datos nuevos
Statement borrar = conn.createStatement();
int res = borrar.executeUpdate("TRUNCATE TABLE `concesionaria`.`datos`");
//Inserto los modificados
Statement nuevos = conn.createStatement();
int resNuevos;
resNuevos = nuevos.executeUpdate("INSERT INTO `concesionaria`.`datos` (`id` ,`impuestos` ,`utilidades`) VALUES (NULL , '"+ this.diccionario_vehiculos.get("transporte-impuestos") +"', '"+ this.diccionario_vehiculos.get("transporte-utilidades") +"')");
resNuevos = nuevos.executeUpdate("INSERT INTO `concesionaria`.`datos` (`id` ,`impuestos` ,`utilidades`) VALUES (NULL , '"+ this.diccionario_vehiculos.get("particulares-impuestos") +"', '"+ this.diccionario_vehiculos.get("particulares-utilidades") +"')");
resNuevos = nuevos.executeUpdate("INSERT INTO `concesionaria`.`datos` (`id` ,`impuestos` ,`utilidades`) VALUES (NULL , '"+ this.diccionario_vehiculos.get("carga-impuestos") +"', '"+ this.diccionario_vehiculos.get("carga-utilidades") +"')");
nuevos.close();
conn.close();
}//fin if
}//fin try
catch (SQLException ex) {
System.out.println(ex);
}//fin catch
catch (ClassNotFoundException ex) {
System.out.println(ex);
System.out.println("No encuentro el Conector JDBC");
}//fin catch
JOptionPane.showMessageDialog(null, "Valores actualizados");
}
public HashMap getDiccionario_coeficientes() {
return diccionario_coeficientes;
}
}//Fin class