import java.io.PrintStream;
import java.util.List;
import java.util.Scanner;

/**
 * Arma la aplicación: crea el modelo, conecta la vista y registra los
 * handlers. Es el único lugar que conoce a todas las piezas.
 */
public class PlayerApp {

    public static EventLoop build(Player player, PrintStream out) {
        player.addListener(new ConsoleView(out));
        EventLoop loop = new EventLoop(out);
        loop.on("play", args -> player.play());
        loop.on("pause", args -> player.pause());
        loop.on("next", args -> player.next());
        loop.on("stop", args -> player.stop());
        loop.on("tick", args -> {
            if (args.size() != 1) {
                throw new IllegalArgumentException("uso: tick <segundos>");
            }
            player.tick(Integer.parseInt(args.get(0)));
        });
        loop.on("salir", args -> loop.stop());
        return loop;
    }

    public static void main(String[] args) {
        Player player = new Player(List.of(
                new Song("Contigo Perú", "Arturo Cavero", 254),
                new Song("Cariñito", "Los Hijos del Sol", 187),
                new Song("Valicha", "Miguel Ángel Hurtado", 192)));
        build(player, System.out).run(new Scanner(System.in));
    }
}
