import java.util.List;

public class FactoryDemo {
    public static void main(String[] args) {
        // Static factory methods.
        Money a = Money.of(0, "pen");
        Money b = Money.zero();
        IO.println(a + "  mismo objeto que zero(): " + (a == b));
        IO.println(Money.parse("12.5") + " + " + Money.of(250, "USD"));

        // Una factory de avisos y un importador que la usa (Factory Method).
        List<String> lines = List.of(
                "# canal;destinatario;texto",
                "email;alice@uni.pe;Su pedido salió hoy",
                "sms;987654321;Su pedido llega mañana entre 9 y 12",
                "",
                "email;bob@uni.pe;Gracias por su compra");
        for (Notification n : new NotificationImporter().importAll(lines)) {
            IO.println(n.send());
        }
        try {
            new NotificationImporter().importAll(List.of("fax;014567890;Hola"));
        } catch (IllegalArgumentException e) {
            IO.println("error: " + e.getMessage());
        }
    }
}
