package capitulo07.bloque03.ejercicio02;

import capitulo07.bloque03.ejercicio02.exceptions.StringContienePalabraProhibidaException;
import capitulo07.bloque03.ejercicio02.exceptions.StringEnBlancoException;
import capitulo07.bloque03.ejercicio02.exceptions.StringMenosTresPalabrasException;
import capitulo07.bloque03.ejercicio02.exceptions.StringSinPalabraRequeridaException;

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

public class Main {

    static Scanner sc = new Scanner(System.in);

    public static String pedirFraseConPalabra(String palabra) throws StringEnBlancoException, StringMenosTresPalabrasException, StringSinPalabraRequeridaException, StringContienePalabraProhibidaException {
        String textoIntroducido;
        String[] palabrasProhibidas = new String[]{"tonto", "tonta", "idiota"};

        System.out.print("Introduzca una frase con la palabra " + palabra + ": ");
        textoIntroducido = sc.nextLine();
        if (textoIntroducido.isBlank())
            throw new StringEnBlancoException("La cadena de texto está vacía o sólo tiene espacios en Blanco");

        int conteoEspacios = 0;
        for (char c : textoIntroducido.trim().toCharArray()) {
            if (c == ' ') conteoEspacios++;
        }
        if (conteoEspacios <= 1)
            throw new StringMenosTresPalabrasException("La cadena de texto tiene menos de 3 palabras");

        if (!textoIntroducido.toLowerCase().contains(palabra))
            throw new StringSinPalabraRequeridaException("La cadena de texto no contiene la palabra requerida");

        for (String str : palabrasProhibidas) {
            if (textoIntroducido.toLowerCase().contains(str))
                throw new StringContienePalabraProhibidaException("La cadena de texto contiene una palabra prohibida");
        }

        return textoIntroducido;
    }

    public static void main(String[] args) {
        try {
            String stringIntroducido = pedirFraseConPalabra("bombilla");
        } catch (StringEnBlancoException | StringMenosTresPalabrasException | StringSinPalabraRequeridaException | StringContienePalabraProhibidaException e) {
            System.err.println(e.getMessage());
        }
    }
}
