package tutorialJava.examenes.examen20250221.ejercicioA;

import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
import java.util.Comparator;
import java.util.HashMap;
import java.util.List;
import java.util.Scanner;

import tutorialJava.Utils;

public class Principal {

	private static HashMap<String, Producto> hmProductos = 
			new HashMap<String, Producto>();
	
	/**
	 * 
	 * @param args
	 */
	public static void main(String[] args) {
		int opcion;
		List<Producto> l;
		
		incorporaDatosMock();
		
		do {
			opcion = muestraMenu();
			
			switch (opcion) {
			case 1: // Nuevo producto
				Producto p = new Producto(
						Utils.obtenerCadenaConDescripcion("Dame código del producto: "),
						Utils.obtenerCadenaConDescripcion("Dame un nombre: "),
						Utils.obtenerFloatPorScanner("Dame el precio: ")
						);
				hmProductos.put(p.getCodigo(), p);
				break;
			case 2: // Obtengo el más barato
				l = ordenaHashMapProductos();
				System.out.println("El más barato es: " + 
						l.get(l.size() - 1).toString());
				break;
			case 3: // Ordenar de caro a barato
				System.out.println("Elementos ordenados");
				l = ordenaHashMapProductos();
				for (Producto producto : l) {
					System.out.println(producto);
				}
				break;
			}
			
		} while (opcion != 0);

	}

	
	
	/*
	 * 
	 */
	public static int muestraMenu() {
		Scanner sc = new Scanner(System.in);
		System.out.println("\n\nMenú" +
				"\n0.- Salir" +
				"\n1.- Introducir producto" +
				"\n2.- Producto más barato" +
				"\n3.- Productos ordenados de caro a barato" +
				"\n\tIntroduzca su opción: ");
		return Integer.parseInt(sc.next());
	}

	/**
	 * 
	 */
	private static void incorporaDatosMock() {
		hmProductos.put("111", new Producto("111", "Azúcar", 1.5f));
		hmProductos.put("222", new Producto("222", "Leche", 0.9f));
		hmProductos.put("333", new Producto("333", "Arroz", 1f));
	}
	
	/**
	 * 
	 * @return
	 */
	private static List<Producto> ordenaHashMapProductos() {
		List<Producto> l = new ArrayList<Producto>(hmProductos.values());
		Collections.sort(l, new Comparator<Producto>() {
			@Override
			public int compare(Producto p1, Producto p2) {
				if (p1.getPrecio() < p2.getPrecio()) return 1;
				else if (p1.getPrecio() > p2.getPrecio()) return -1;
				else return 0;
			}
		});
		return l;
	}
	
}















