Modul 4
Implementasi DAO + MVC
1. Pastikan project anda sebelum mid semester masih ada
2. Tambahkan 1 buah JFrame dengan nama FormDataMahasiswa sebagai view pada project anda yang sudah ada
3. Atur agar Layout dari FormDataMahasiswa menjadi BorderLayout
4. Tambahkan 2 buah Jpanel
5. Atur agar Layout dari jPanel1 menjadi FlowLayout, dan layout dari jPanel2 menjadi BorderLayout
6. Klik kanan pada jPanel1 Properties Ubah direction menjadi South Close
7. Klik kanan pada jPanel2 Properties Ubah direction menjadi Center Close
8. Tambahkan 1 buah Jtable ke jPanel2
9. Maka diinspector akan tampak seperti berikut
11. Klik kanan pada FlowLayout Properties kemudian atur agar Alignment nya menjadi Right Close
13. Ubah properties dari button dan tabel sesuai tabel berikut
Komponen Variabel name lama
Variabel name baru
Text
JTabel jTabel1 tbMahasiswa
JButton jButton1 btnTambah Tambah
JButton jButton2 btnUbah Ubah
JButton jButton3 btnHapus Hapus
JButton jButton4 btnTutup Tutup
Di tampilan seperti gambar berikut
15. Klik kanan pada tbMahasiswa, kemudian pilih Tabel Contents ...
16. Ubah count menjadi 5, kemudian atur agar value dari Title dan Type sama dengan gambar dibawah ini, apabila sudah sama klik Close
17. Tambahkan kode program yang dicetak tebal
18. Tambahkan 1 buah JDialog bernama FormDetailMahasiswa sebagai View private javax.swing.JScrollPane jScrollPane1;
private javax.swing.JTable tbMahasiswa; // End of variables declaration public JTable getTbMahasiswa() { return tbMahasiswa;
} }
19. Pilih Swing GUI Forms pada Categories, kemudian pilih JDialog Form pada File Types
Next beri nama FormDetailMahasiswa Finish
20. Buka kembali FormMhs anda yang tampilannya seperti berikut
Silahkan anda buat agar FormDetailMahasiswa anda memiliki desain yang sama persis dengan FormMhs (Modul 2 nomor 8 sampai 22)
21. Tambahkan 1 buah Jbutton di jPanel4 dari FormDetailMahasiswa
Tampak form seperti berikut
22. Ubah variabel name btnUbah menjadi btnSimpan, ubah textnya menjadi Simpan, ubah variabel name dari jButton1 menjadi btnBatal, ubah textnya menjadi Batal
Untuk formnya tampak seperti gambar berikut
23. Sekarang silahkan anda buka kelas MahasiswaImpl.java, kemudian cari method dengan nama insertMahasiswa, ketik kode program yang ditebali public int insertMahasiswa(Mhs mhs) {
try {
String sql = "insert into mahasiswa(nim,nama,kelas,jurusan,jenis_kelamin) values("; sql += "'" + mhs.getNim() + "','" + mhs.getNama() + "', "; sql += "'" + mhs.getKelas() + "','" + mhs.getJurusan() + "',"; if (mhs.getJenisKelamin()) { sql += "1";//bernilai true } else { sql += "0";//bernilai false } sql += ")"; return c.createStatement().executeUpdate(sql); } catch (SQLException ex) {
Logger.getLogger(MahasiswaImpl.class.getName()).log(Level.SEVERE, null, ex); return -1;
} }
24. Cari method dengan nama DeleteMahasiswa, ketik kode program yang ditebali
25. Silahkan anda buka kode program dari FormDetailMahasiswa, tambahkan method berikut
public boolean deleteMahasiswa(Mhs mhs) { try {
String sql = "delete from mahasiswa where nim='" + mhs.getNim() + "'"; c.createStatement().executeUpdate(sql);
return true;
} catch (SQLException ex) {
Logger.getLogger(MahasiswaImpl.class.getName()).log(Level.SEVERE, null, ex); return false;
} }
public void setInsert(boolean insert) { txtNim.setEnabled(insert);
}
public JRadioButton getRbLakiLaki() { return rbLakiLaki;
}
public JTextField getTxtJurusan() { return txtJurusan;
}
public JTextField getTxtKelas() { return txtKelas;
}
public JTextField getTxtNama() { return txtNama;
}
public JTextField getTxtNim() { return txtNim;
}
public void setData(Mhs mhs) { txtNim.setText(mhs.getNim()); txtNama.setText(mhs.getNama()); txtJurusan.setText(mhs.getJurusan()); txtKelas.setText(mhs.getKelas()); rbLakiLaki.setSelected(mhs.getJenisKelamin()); }
public void reset(){ txtNim.setText(""); txtNama.setText(""); txtJurusan.setText(""); txtKelas.setText(""); }
Hapus method main beserta isinya yang ada di FormDetailMahasiswa 26. Sekarang silahkan anda buka kelas MhsController.java, tambahkan 4 buah
field berikut
private FormDataMahasiswa formDataMahasiswa; private FormDetailMahasiswa formDetailMahasiswa; private DefaultTableModel dtm;
private JTable table;
27. Tambahkan 2 buah import berikut
import latihan2.view.FormDataMahasiswa; import latihan2.view.FormDetailMahasiswa;
28. Kemudian tambahkan 1 buah method dengan nama refresh untuk merefresh tampilan di tbMahasiswa
29. Tambahkan 1 buah controller untuk mendukung 2 buah view yang baru anda buat
public void refresh() { dtm.setRowCount(0);
Mhs[] arrayMhs = mahasiswaImpl.getAllMahasiswa(); for (Mhs m : arrayMhs) {
Vector v = new Vector(); v.add(m.getNim()); v.add(m.getNama()); v.add(m.getKelas()); v.add(m.getJurusan());
if (m.getJenisKelamin()) {//bisa juga ditulis if(m.getJenisKelamin()){ v.add("Pria"); } else { v.add("Wanita"); } dtm.addRow(v); } }
public MhsController(FormDataMahasiswa formDataMahasiswa, FormDetailMahasiswa formDetailMahasiswa) { this.formDataMahasiswa = formDataMahasiswa; this.formDetailMahasiswa = formDetailMahasiswa; this.table = formDataMahasiswa.getTbMahasiswa(); dtm = (DefaultTableModel) this.table.getModel(); mahasiswaImpl = DaoFactory.create().getMahasiswaDao(); refresh(); }
30. Tambahkan 1 buah method insertMhs
31. Tambahkan 1 buah method updateMhs dengan 1 buah parameter yaitu mhs, parameter ini memiliki type Mhs, biarkan saja method updateMhs tanpa parameter yang sudah ada
public void tambahMhs(Mhs mhs) {
if (formDetailMahasiswa.getTxtNim().getText().trim().length() == 0) {
JOptionPane.showMessageDialog(formDetailMahasiswa, "NIM mahasiswa harus diisi"); return;
}
if (formDetailMahasiswa.getTxtNama().getText().trim().length() == 0) {
JOptionPane.showMessageDialog(formDetailMahasiswa, "Nama mahasiswa harus diisi"); return; } mhs = new Mhs(formDetailMahasiswa.getTxtNim().getText().trim(), formDetailMahasiswa.getTxtNama().getText().trim()); mhs.setKelas(formDetailMahasiswa.getTxtKelas().getText().trim()); mhs.setJurusan(formDetailMahasiswa.getTxtJurusan().getText().trim()); mhs.setJenisKelamin(formDetailMahasiswa.getRbLakiLaki().isSelected()); if (mahasiswaImpl.insertMahasiswa(mhs) > 0) { formDetailMahasiswa.setVisible(false); formDetailMahasiswa.reset(); refresh(); } else {
JOptionPane.showMessageDialog(formDetailMahasiswa, "insert gagal"); }
}
public void ubahMhs(Mhs mhs) {
if (formDetailMahasiswa.getTxtNim().getText().trim().length() == 0) {
JOptionPane.showMessageDialog(formDetailMahasiswa, "NIM mahasiswa harus diisi"); return;
}
if (formDetailMahasiswa.getTxtNama().getText().trim().length() == 0) {
JOptionPane.showMessageDialog(formDetailMahasiswa, "Nama mahasiswa harus diisi"); return; } mhs = new Mhs(formDetailMahasiswa.getTxtNim().getText().trim(), formDetailMahasiswa.getTxtNama().getText().trim()); mhs.setKelas(formDetailMahasiswa.getTxtKelas().getText().trim()); mhs.setJurusan(formDetailMahasiswa.getTxtJurusan().getText().trim()); mhs.setJenisKelamin(formDetailMahasiswa.getRbLakiLaki().isSelected()); if (mahasiswaImpl.updateMahasiswa(mhs)) { formDetailMahasiswa.setVisible(false); formDetailMahasiswa.reset(); refresh(); } else {
JOptionPane.showMessageDialog(formDetailMahasiswa, "Update gagal"); }
32. Tambahkan 1 buah method hapusMhs
33. Tambahkan 2 buah method berikut public void hapusMhs() {
int barisTerpilih = table.getSelectedRow(); if (barisTerpilih == -1) {
JOptionPane.showMessageDialog(formDetailMahasiswa, "Pilih data yang hendak dihapus"); return;
}
mhs = new Mhs(table.getValueAt(barisTerpilih, 0).toString(), table.getValueAt(barisTerpilih, 1).toString());
if (mahasiswaImpl.deleteMahasiswa(mhs)) { formDetailMahasiswa.setVisible(false); refresh();
} else {
JOptionPane.showMessageDialog(formDetailMahasiswa, "Delete gagal"); }
}
public void showFormTambah(){ formDetailMahasiswa.reset();
formDetailMahasiswa.setInsert(true); formDetailMahasiswa.setVisible(true); }
public void showFormUbah(){
int barisTerpilih = table.getSelectedRow(); if (barisTerpilih == -1) {
JOptionPane.showMessageDialog(formDetailMahasiswa, "Pilih data yang hendak diubah"); return;
}
mhs = new Mhs(table.getValueAt(barisTerpilih, 0).toString(), table.getValueAt(barisTerpilih, 1).toString()); mhs.setKelas(table.getValueAt(barisTerpilih, 2).toString()); mhs.setJurusan(table.getValueAt(barisTerpilih, 3).toString()); mhs.setJenisKelamin(table.getValueAt(barisTerpilih, 4).toString().equals("Pria")); formDetailMahasiswa.setData(mhs); formDetailMahasiswa.setInsert(false); formDetailMahasiswa.setVisible(true); }
34. Tambahkan field berikut pada FormDetailMahasiswa private MhsController mhsController;
35. Tambahkan method pada kelas FormDetailMahasiswa
36. Tambahkan event actionPerformed pada btnSimpan, kemudian ketik kode program yang dicetak tebal
37. Tambahkan event actionPerformed pada btnBatal, kemudian ketik kode program yang dicetak tebal
38. Tambahkan field berikut pada FormDataMahasiswa private MhsController mhsController;
39. Tambahkan method pada FormDataMahasiswa
public void setMhsController(MhsController mhsController) { this.mhsController = mhsController;
}
private void btnSimpanActionPerformed(java.awt.event.ActionEvent evt) { // TODO add your handling code here:
if (txtNim.isEnabled()) { mhsController.tambahMhs(); } else { mhsController.ubahMhs(); } }
private void btnBatalActionPerformed(java.awt.event.ActionEvent evt) { // TODO add your handling code here:
reset();
setVisible(false); }
public void setMhsController(MhsController mhsController) { this.mhsController = mhsController;
40. Pada FormDataMahasiswa, tambahkan eventAction performed pada btnTambah,btnUbah,btnHapus dan btnTutup, kemudian ketik kode program yang dicetak tebal
41. Ubah method main pada kelas Main.java anda seperti kode program berikut
private void btnTambahActionPerformed(java.awt.event.ActionEvent evt) { // TODO add your handling code here:
mhsController.showFormTambah(); }
private void btnUbahActionPerformed(java.awt.event.ActionEvent evt) { // TODO add your handling code here:
mhsController.showFormUbah(); }
private void btnHapusActionPerformed(java.awt.event.ActionEvent evt) { // TODO add your handling code here:
mhsController.hapusMhs(); }
private void btnTutupActionPerformed(java.awt.event.ActionEvent evt) { // TODO add your handling code here:
System.exit(0); }
public static void main(String[] args) { // TODO code application logic here // FormMhs formMhs = new FormMhs(); // formMhs.setVisible(true);
//
// FormDokumenMhs formDokumenMhs = new FormDokumenMhs(); // formDokumenMhs.setVisible(true);
//
// MhsController mhsController = new MhsController(formDokumenMhs, formMhs); //
// formMhs.setMhsController(mhsController);
FormDataMahasiswa formDataMahasiswa = new FormDataMahasiswa(); formDataMahasiswa.setVisible(true);
FormDetailMahasiswa formDetailMahasiswa = new FormDetailMahasiswa(formDataMahasiswa, true);
MhsController mhsController=new MhsController(formDataMahasiswa, formDetailMahasiswa);
formDataMahasiswa.setMhsController(mhsController); formDetailMahasiswa.setMhsController(mhsController); }