import java.util.Comparator;
import java.util.List;

public class CompositeDemo {
    public static void main(String[] args) {
        List<Song> imported = new SongImporter().importAll(List.of(
                "Contigo Perú;Arturo Cavero;254",
                "El cóndor pasa;Daniel Alomía Robles;198",
                "Cariñito;Los Hijos del Sol;187",
                "Valicha;Miguel Ángel Hurtado;192"));

        Song contigoPeru = imported.get(0);
        Song condorPasa = imported.get(1);
        Song carinito = imported.get(2);
        Song valicha = imported.get(3);

        Playlist criollas = Playable.playlist("Criollas", contigoPeru);
        Playlist cumbias = Playable.playlist("Cumbias", carinito);
        Playlist party = Playable.playlist("Fiesta", criollas, condorPasa, cumbias, valicha);

        IO.print(Playables.tree(party));
        IO.println("canciones: " + Playables.countSongs(party) + ", duración: " + party.length());

        // Una strategy de orden (Comparator) sobre las leaves del árbol.
        List<Song> shortestFirst = Playables.songs(party);
        shortestFirst.sort(Comparator.comparingInt(Song::seconds));
        shortestFirst.forEach(s -> IO.println("  " + s.length() + "  " + s.title()));
    }
}
