import java.time.LocalDate;

// Demo katalog dan keanggotaan: pencarian kata kunci, pendaftaran, penjaga data ganda.
public class LayarDemo {

    public static void main(String[] args) {
        Perpustakaan perpus = new Perpustakaan();
        perpus.tambahBuku(new Buku("978-602-421-123-4", "Laskar Pelangi",
                "Andrea Hirata", 2005));
        perpus.tambahBuku(new Buku("978-979-433-555-1", "Bumi Manusia",
                "Pramoedya Ananta Toer", 1980));
        perpus.tambahBuku(new Buku("978-602-032-556-2", "Hujan Bulan Juni",
                "Sapardi Djoko Damono", 1994));
        perpus.tambahBuku(new Buku("978-602-401-718-3", "Filosofi Teras",
                "Henry Manampiring", 2018));
        perpus.tambahBuku(new Buku("978-602-291-024-4", "Laut Bercerita",
                "Leila S. Chudori", 2017));
        System.out.println("jumlah buku    : " + perpus.jumlahBuku());

        // Pencarian mengabaikan huruf besar-kecil.
        for (Buku buku : perpus.cariBuku("LASKAR")) {
            System.out.println("cari LASKAR   : " + buku.judul());
        }
        for (Buku buku : perpus.cariBuku("sapardi")) {
            System.out.println("cari sapardi  : " + buku.judul());
        }
        System.out.println("cari java     : " + perpus.cariBuku("java").size() + " buku");

        perpus.daftarkan(new Anggota("A-001", "Budi Santoso",
                "budi@example.com", LocalDate.of(2026, 1, 2)));
        perpus.daftarkan(new Anggota("A-002", "Siti Rahayu",
                "siti@example.com", LocalDate.of(2026, 1, 3)));
        perpus.daftarkan(new Anggota("A-003", "Dewi Lestari",
                "dewi@example.com", LocalDate.of(2026, 1, 5)));
        System.out.println("anggota       : " + perpus.jumlahAnggota());
        for (Anggota a : perpus.semuaAnggota()) {
            System.out.println("  - " + a.nama() + " (" + a.id() + ")");
        }

        // Penjaga: data ganda ditolak, pencarian yang gagal melempar exception domain.
        try {
            perpus.tambahBuku(new Buku("978-602-421-123-4",
                    "Laskar Pelangi (edisi lama)", "Andrea Hirata", 2005));
        } catch (PerpustakaanException e) {
            System.out.println("buku ganda    : " + e.getMessage());
        }
        try {
            perpus.daftarkan(new Anggota("A-002", "Siti Rahayu",
                    "siti@example.com", LocalDate.of(2026, 1, 3)));
        } catch (PerpustakaanException e) {
            System.out.println("anggota ganda : " + e.getMessage());
        }
        try {
            perpus.cariBukuIsbn("978-000-000-000-0");
        } catch (BukuTidakDitemukanException e) {
            System.out.println("isbn tak ada   : " + e.getMessage());
        }
        try {
            perpus.cariAnggota("A-099");
        } catch (AnggotaTidakDitemukanException e) {
            System.out.println("anggota tak ada: " + e.getMessage());
        }

        System.out.println("cari ISBN     : "
                + perpus.cariBukuIsbn("978-602-291-024-4").judul());
    }
}
