package tutorialJava.examenes.examen20241211;

import java.util.Iterator;

import tutorialJava.Utils;

public class Libreria {


	/**
	 * 
	 * @param args
	 */
	public static void main(String[] args) {
		Producto productos[] = new Producto[Utils.obtenerNumeroAzar(10, 20)];
		String codigo, titulo;
		
		for (int i = 0; i < productos.length; i++) {
			int azar = Utils.obtenerNumeroAzar(0, 1);
			
			codigo = "Código";
			titulo = "Título";
			
			if (azar == 0) { // Voy a crear un libro
				productos[i] = new Libro(codigo, titulo, 
						"Autor_" + i, Utils.obtenerNumeroAzar(10, 100));
			}
			else { // Voy a crear una revista
				productos[i] = new Revista(codigo, titulo, 
						Utils.obtenerNumeroAzar(1, 12), 
						Utils.obtenerNumeroAzar(1, 12));
			}
		}
		
		// Mostrar los productos creados
//		muestraProductos(productos);
		
		// Pido un código a usuario y busco en los productos
//		String codBuscado = Utils.obtenerCadenaConDescripcion("Dame un código"
//				+ " para buscar ");
//		
//		Producto productoEncontrado = localizaProducto(productos, codBuscado);
//		if (productoEncontrado == null) {
//			System.out.println("El producto no se encuentra");
//		}
//		else {
//			System.out.print("El producto encontrado es ");
//			if (productoEncontrado instanceof Libro) {
//				System.out.println(" un libro");
//			}
//			else {
//				System.out.println(" una revista");
//			}
//		}
		
		// Ordeno por más caro los productos y muestro más caro y más barato
		ordenaBurbuja(productos);
		muestraProductos(productos);
		System.out.println("Caro: " + productos[0]);
		System.out.println("Barato: " + productos[productos.length - 1]);
		
		// Precio promedio y contador de tipos de productos
		System.out.println("Precio promedio: " + getPrecioPromedioProductos(productos));
		
		int contLibros = 0, contRevistas = 0;
		for (int i = 0; i < productos.length; i++) {
			if (productos[i] instanceof Libro) contLibros++;
			else contRevistas++;
		}
		System.out.println("Hay " + contLibros + " libros");
		System.out.println("Hay " + contRevistas + " revistas");
		
		
	}

	
	private static void muestraProductos(Producto[] p) {
		for (int i = 0; i < p.length; i++) {
			System.out.println(p[i].toString());
		}

	}
	
	
	/**
	 * 
	 * @param codigo
	 * @return
	 */
	private static Producto localizaProducto(Producto productos[], String codigoBuscado) {
		for (int i = 0; i < productos.length; i++) {
			if (productos[i].getCodigo().equalsIgnoreCase(codigoBuscado)) {
				return productos[i];
			}
		}
		return null;
	}
	
	
	/**
	 * 
	 * @param a
	 */
	public static void ordenaBurbuja(Producto a[]) {
		boolean hayIntercambios = false;
		do {
			hayIntercambios = false;
			for (int i = 0; i < a.length - 1; i++) {
				if (a[i].getPrecio() < a[i + 1].getPrecio()) {
					Producto aux = a[i];
					a[i] = a[i + 1];
					a[i + 1] = aux;
					hayIntercambios = true;
				}
			}
		} while (hayIntercambios == true);
		
	}

	
	/**
	 * 
	 * @param p
	 * @return
	 */
	private static float getPrecioPromedioProductos(Producto p[]) {
		float pro = 0;
		for (int i = 0; i < p.length; i++) {
			pro += p[i].getPrecio();
		}
		return pro / p.length;
	}
}










