package tutorialJava.examenes.examen20250131;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Scanner;

import tutorialJava.Utils;


/**
 * 
 */
public class EjercicioA_HashMapYListas {

	/**
	 * 
	 * @param args
	 */
	public static void main(String[] args) {
		HashMap<String, Double> almacen = new HashMap<String, Double>();
		almacen.put("Macarrones", 0.99);
		almacen.put("Langostinos 1/2 kg", 6.10);
		almacen.put("Leche 1 litro", 0.97);
		
		int opcion;
		
		do {
			opcion = menu(); // Muestro menú y recojo selección del usuario
			
			// Trato la opción elegida
			switch (opcion) {
			case 0:
				System.exit(0);
				break;
				
			case 1: // Insertar artículo
				introducirArticulo(almacen);
				break;
				
			case 2: // Mostrar artículos
				mostrarArticulosOrdenados(almacen);
				break;
		
			}

		} while (true);

	}

	
	/**
	 * 
	 * @return
	 */
	private static int menu() {
		Scanner sc = new Scanner(System.in);
		System.out.println("Elige lo que desea hacer:");
		System.out.println("0.-Salir");
		System.out.println("1.-Introducir producto");
		System.out.println("2.-Ver productos ordenados");
		return sc.nextInt();
		
	}
	
	
	/**
	 * 
	 * @param almacen
	 */
	private static void introducirArticulo(HashMap<String, Double> almacen) {
		String key = Utils.obtenerCadenaConDescripcion("Introduzca código del artículo: ");
		double value = Utils.obtenerDoubleConDescripcion("Introduzca precio del artículo: ");
		almacen.put(key, value);
	}
	
	
	/**
	 * 
	 * @param almacen
	 */
	private static void mostrarArticulosOrdenados (HashMap<String, Double> almacen) {
		List<String> keys = new ArrayList<String>();
		Iterator<String> it = almacen.keySet().iterator();
		while (it.hasNext()) {
			keys.add(it.next());
		}
		
		ordenaBurbuja(keys);
		
		for(String key : keys) {
			System.out.println("Código: " + key + " - Precio: " + almacen.get(key));
		}
	}
	
	
	/**
	 * 
	 * @param a
	 */
	private static void ordenaBurbuja (List<String> a) {
		boolean hayIntercambios = false;		
		
		do {
			hayIntercambios = false;
			for (int i = 0; i < (a.size() - 1); i++) {
				if (a.get(i).compareTo(a.get(i + 1)) == 1) {
					String aux = a.get(i);
					a.set(i, a.get(i + 1));
					a.set(i + 1, aux);
					hayIntercambios = true;
				}
			}
		} while (hayIntercambios == true);

	}
	

}
