import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileWriter;
import java.io.IOException;
import java.io.PrintWriter;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.LinkedHashMap;
import java.util.Map;
import java.util.Scanner;
public class Inventario {
private final String rutaInventario = "src/Persistencia/InventarioProductos.txt";
private final String rutaVenta = "src/Persistencia/ventas.txt";
private Map<String, ConstructorProducto> productos;
public Inventario(){
productos = new LinkedHashMap();
try {
Scanner lector = new Scanner(new FileInputStream(rutaInventario));
while (lector.hasNext()) {
String[] l = lector.nextLine().split(", ");
if (l.length == 3) {
productos.put(l[0], new ConstructorProducto(l[0], Integer.parseInt(l[1]), Double.parseDouble(l[2])));
}
}
} catch (FileNotFoundException ex) {
ex.printStackTrace(System.out);
}
}
/**
* Registra el inventario en un archivo
*/
public void guardarInventario() {
FileWriter fichero = null;
PrintWriter pw;
try {
fichero = new FileWriter(rutaInventario);
pw = new PrintWriter(fichero);
getProductos().forEach((k, v) -> {
pw.println(k + ", " + v.getStock() + ", " + v.getPrecio());
});
} catch (IOException e) {
e.printStackTrace(System.out);
} finally {
try {
if (null != fichero) {
fichero.close();
}
} catch (IOException e2) {
e2.printStackTrace(System.out);
}
}
}
/**
* Registra una venta en el archivo de ventas
* @param alumno
* @param producto
*/
public void registrarVenta(ConstructorAlumno alumno, ConstructorProducto producto){
//Reducimos la cantidad en el inventario
productos.get(producto.getProducto()).setStock(
productos.get(producto.getProducto()).getStock() - 1
);
guardarInventario();
//Registramos la venta en el archivo
//La nueva línea debe ir separada por comas (,) con los siguientes campos
//Nombre del alumno, Nombre del producto, Fecha
DateFormat format = new SimpleDateFormat("dd/MM/yyyy hh:mm:ss");
String fecha = format.format(Calendar.getInstance().getTime());
String linea = alumno.getNombreAlumno() + ", " + producto.getProducto()+ ", " + fecha;
FileWriter fichero = null;
PrintWriter pw;
try {
fichero = new FileWriter(rutaVenta, true);
pw = new PrintWriter(fichero);
pw.println(linea);
} catch (IOException e) {
e.printStackTrace(System.out);
} finally {
try {
if (null != fichero) {
fichero.close();
}
} catch (IOException e2) {
e2.printStackTrace(System.out);
}
}
}
/**
* @return the productos
*/
public Map<String, ConstructorProducto> getProductos() {
return productos;
}
/**
* Devuelve un arreglo con los productos registrados en el archivo
* @return
*/
public ConstructorProducto[] getProductosArray(){
ConstructorProducto[] a = new ConstructorProducto[productos.size()];
int c = 0;
for(String k : productos.keySet()){
a[c++] = productos.get(k);
}
return a;
}
/**
* @param productos the productos to set
*/
public void setProductos(Map<String, ConstructorProducto> productos) {
this.productos = productos;
}
/*public static void main(String [] args){
Inventario e = new Inventario();
ConstructorProducto[] a = e.getProductosArray();
for(ConstructorProducto p : a){
System.out.print("Nombre: " + p.getProducto());
System.out.print("\tStock: " + p.getStock());
System.out.println("\tPrecio: " + p.getPrecio());
}
}*/
}