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;
}
}
}
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