package tutorialJava.capitulo7_Recursos.ejercicios.bloque04_Listener;

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

public class Principal {

	private static List<OperacionMatematicaListener> listeners = new ArrayList<OperacionMatematicaListener>();
	
	public static void addOperacionMatematicaListener (OperacionMatematicaListener l) {
		listeners.add(l);
	}
	
	public static void removeOperacionMatematicaListener (OperacionMatematicaListener l) {
		listeners.remove(l);
	}
	
	
	private static void fireSumaMayorA1000(int suma) {
		SumaMayorA1000Event e = new SumaMayorA1000Event(suma);
    	for (OperacionMatematicaListener l : listeners) {
			l.sumaMayorA1000(e);
		}
	}
	
	/**
	 * 
	 * @param args
	 */
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        int choice;

        Mesa m1 = new Mesa();
        
        
        do {
            
            choice = menu();

            switch (choice) {
                case 1:
                    // Suma
                    System.out.print("Ingrese el primer número: ");
                    int sum1 = scanner.nextInt();
                    System.out.print("Ingrese el segundo número: ");
                    int sum2 = scanner.nextInt();
                    int suma = sum1 + sum2;
                    if (suma > 1000) {
                    	fireSumaMayorA1000(suma);
                    }
                    System.out.println("Resultado de la suma: " + suma);
                    break;

                case 2:
                    // Resta
                    System.out.print("Ingrese el primer número: ");
                    int sub1 = scanner.nextInt();
                    System.out.print("Ingrese el segundo número: ");
                    int sub2 = scanner.nextInt();
                    System.out.println("Resultado de la resta: " + (sub1 - sub2));
                    break;

                case 3:
                    // Multiplicación
                    System.out.print("Ingrese el primer número: ");
                    int mul1 = scanner.nextInt();
                    System.out.print("Ingrese el segundo número: ");
                    int mul2 = scanner.nextInt();
                    System.out.println("Resultado de la multiplicación: " + (mul1 * mul2));
                    break;

                case 4:
                    // División
                    System.out.print("Ingrese el dividendo: ");
                    int dividend = scanner.nextInt();
                    System.out.print("Ingrese el divisor: ");
                    int divisor = scanner.nextInt();

                    if (divisor != 0) {
                        System.out.println("Resultado de la división: " + (dividend / divisor));
                    }
                    break;

                case 5:
                    // Raíz cuadrada
                    System.out.print("Ingrese el número: ");
                    int number = scanner.nextInt();

                    if (number >= 0) {
                        System.out.println("Resultado de la raíz cuadrada: " + Math.sqrt(number));
                    }
                    break;

                case 0:
                    System.out.println("Saliendo del programa. ¡Adiós!");
                    break;

                default:
                    System.out.println("Opción no válida. Intente de nuevo.");
                    break;
            }

        } while (choice != 0);

        scanner.close();
    }
    
    
    /**
     * 
     * @return
     */
    private static int menu() {
    	Scanner scanner = new Scanner(System.in);
    	
        System.out.println("\nMenú de Operaciones Matemáticas:");
        System.out.println("0. Salir");
        System.out.println("1. Suma");
        System.out.println("2. Resta");
        System.out.println("3. Multiplicación");
        System.out.println("4. División");
        System.out.println("5. Raíz Cuadrada");
        System.out.print("Seleccione una opción: ");
        
        return scanner.nextInt();
    }
}