import java.util.Locale;

// Model katalog: data buku beku (record) + pencocokan kata kunci pencarian.
public record Buku(String isbn, String judul, String penulis, int tahunTerbit) {

    public Buku {
        if (isbn == null || isbn.isBlank()) {
            throw new IllegalArgumentException("isbn wajib diisi");
        }
        if (judul == null || judul.isBlank()) {
            throw new IllegalArgumentException("judul wajib diisi");
        }
        if (tahunTerbit <= 0) {
            throw new IllegalArgumentException(
                    "tahunTerbit harus positif: " + tahunTerbit);
        }
        isbn = isbn.trim();
        judul = judul.trim();
        penulis = (penulis == null || penulis.isBlank()) ? "Tanpa Nama" : penulis.trim();
    }

    /** Apakah judul, penulis, atau ISBN memuat kata kunci (huruf besar diabaikan)? */
    public boolean cocokKataKunci(String kataKunci) {
        String kunci = kataKunci.toLowerCase(Locale.ROOT);
        return judul().toLowerCase(Locale.ROOT).contains(kunci)
                || penulis().toLowerCase(Locale.ROOT).contains(kunci)
                || isbn().contains(kunci);
    }
}
