exception perpustakaan

package perpustakaan2;

import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import javax.swing.JOptionPane;

/**
 *
 * @author admin
 */
public class Id implements Comparable{

    private String idkolek;
    private String judul;
    private int tahun;
    private String penerbit;
    private Date tglPinjam;
    private Date tglKembali;
    public long denda;
    public int waktuPinjam;

    // untuk mendapatkan nilai dari main
    public String getIdkolek() {
        return idkolek;
    }

    // untuk mendapatkan nilai dari main
    public String getJudul() {
        return judul;
    }

    // untuk mendapatkan nilai tahun
    public int getTahun() {
        return tahun;
    }

    // untuk mendapatkan nilai penerbit
    public String getPenerbit() {
        return penerbit;
    }

    /**
     * untuk mengembalikan nilai id koleksi
     * @param idkolek the idkolek to set
     */
    public void setIdkolek(String idkolek) {
        this.idkolek = idkolek;
    }

    /**
     * untuk mengembalikan nilai judul
     * @param judul the judul to set
     */
    public void setJudul(String judul) {
        this.judul = judul;
    }

    /**
     * untuk mengembalikan nilai tahun
     * @param tahun the tahun to set
     */
    public void setTahun(int tahun) {
        this.tahun = tahun;
    }

    /**
     * untuk mengembalikan nilai penerbit
     * @param penerbit the penerbit to set
     */
    public void setPenerbit(String penerbit) {
        this.penerbit = penerbit;
    }

    /**
     * untuk mendapatkan nilai tanggal peminjaman
     * @return the tglPinjam
     */
    public Date getTglPinjam() {
        return tglPinjam;
    }

    /**
     * untuk mengembalikan tanggal peminjaman
     * @param tglPinjam the tglPinjam to set
     */
    public void setTglPinjam(Date tglPinjam) {
        this.tglPinjam = tglPinjam;
    }

    /**
     * untuk mendapatkan nilai tanggal kembali
     * @return the tglKembali
     */
    public Date getTglKembali() {
        return tglKembali;
    }

    // method set ini dibuat menjadi try catch karenakan untuk menghindari kesalahan
    // terutama dalam tanggal kembali
    // tanggal kembali seharusnya setelah tanggal pinjam
    // tidak mungkin lebih dahulu dari tanggal pinjam koleksi tersebut
    public void setTglKembali(Date tglKembali) {

        try {
            if (tglPinjam == null) {
                throw new Exception("ISI TANGGAL PINJAM");
            } else if (tglKembali.before(tglPinjam)) {
                throw new Exception("TANGGAL KEMBALI SALAH ISI TANGGAL SETELAH TANGGAL PINJAM");
            }
        } catch (Exception ex) {
            JOptionPane.showMessageDialog(null, "ERROR" + ex.getMessage());
        }

        this.tglKembali = tglKembali;

    }

 
    // digunakan untuk menghitung tanggal pinjam dengan tanggal kembali
    // menghasilkan selisih berapa
    public long selisihHari() {
        return Utility.daysBetween(tglPinjam, tglKembali);
    }

    // digunakan untuk mendapatkan nilai pinjam yang dimiliki oleh klas turunan ID
    public int getWaktuPinjam() {
        return waktuPinjam;
    }

    // lama pinjam merupakan method yang digunakan menghitung lama meminjam
    // terhitung mulai hari ini
    public long lamaPinjam() {
        return Utility.daysBetween(tglPinjam, new Date());
    }

    // method ini digunakan untuk menghitung denda
    // dengan cara menghitung lama pinjam itu berapa hari
    // dikurangi dengan batas pinjam tiap jenis koleksi
    public long hitDenda() {
        if (lamaPinjam() > this.getWaktuPinjam()) {
            return (lamaPinjam() - this.getWaktuPinjam()) * this.denda;
        }

        return 0;
    }

    // method ini digunakan untuk mengecek tanggal keterlambatan
    // apakan lama pinjam lebih besar dari waktu pinjam yang ditentukan atau tidak
    public boolean cekTerlambat() {
        if (lamaPinjam() > this.getWaktuPinjam()) {
            return true;
        }
        return false;
    }

    // method ini digunakan untuk mengecek tahun terbit
    // data tahun terbit yang dimasukkan harus berupa angka
    public int cekTahunTerbit(String prompt) {
        String inputStr;
        while (true) {
            inputStr = JOptionPane.showInputDialog(null, prompt);
            try {
                tahun = Integer.parseInt(inputStr);
                return tahun;
            } catch (NumberFormatException e) {
                JOptionPane.showMessageDialog(null, "'" + inputStr + "MASUKKAN ANGKA");
            }

        }
    }

    // method ini digunakan untuk mengecek format tanggal dari tanggal
    // penulisan tanggal harus sesuai dengan ketentuan

    public void cekTglPinjam() {

        try {
            DateFormat formatter;
            formatter = new SimpleDateFormat("dd-MM-yyyy");
            tglPinjam = (Date) formatter.parse(JOptionPane.showInputDialog(null, "Tanggal pinjam :"));
            String s = formatter.format(tglPinjam);
            this.setTglKembali(tglPinjam);
        } catch (ParseException ex) {
            JOptionPane.showMessageDialog(null, "ERROR. \nFormat : dd-MM-yyyy ");
        }
    }


    // untuk method tanggal kembali juga menghandel
    // kealahan dalam pemasukkan tanggal

    public void cekTglKembali() {
        try {
            DateFormat formatter;
            formatter = new SimpleDateFormat("dd-MM-yyyy");
            tglKembali = (Date) formatter.parse(JOptionPane.showInputDialog(null, "Tanggal kembali :"));
            String s = formatter.format(tglKembali);
            this.setTglKembali(tglKembali);
        } catch (ParseException ex) {
            JOptionPane.showMessageDialog(null, "ERROR. \nFormat : dd-MM-yyyy ");
        }

    }

    // method input koleksi ini digunakan untuk memasukkan data - data
    // lalu data - data tersebut akan masuk kemethod yang memiliki exception handling
    // untuk dicek datanya.

    void inputKoleksi() {

        idkolek = JOptionPane.showInputDialog("Masukkan ID : ");
        judul = JOptionPane.showInputDialog("Masukkan Judul : ");
        penerbit = JOptionPane.showInputDialog("Masukkan Penerbit : ");
        this.cekTahunTerbit("Masukkan tahun terbit koleksi: ");
        this.cekTglPinjam();
        this.cekTglKembali();
    }


    // method ini ada karena kita menggunakan array list dan compare to
    // untuk kelas larik.
      public int compareTo(Object o) {
        // cari judul
        if (judul.equals(((Id)o).getJudul())) {
            return 0;
        } else if (((Comparable) judul).compareTo(o) < 0) {
            return -1;
        } else {
            return 1;
        }
    }
}

Komentar

Postingan populer dari blog ini

Menyesap Rindu Dalam Coding (Sastra Edan #7)

Bikin Amplop Cantik

Kost Anyar Nyah...