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 10. Diform tampak menjadi seperti berikut 11. Klik kanan pada FlowLayout Properties kemudian atur agar Alignment nya menjadi Right Close 12. Tambahkan 4 buah Button ke dalam jPanel1 13. Ubah properties dari button dan tabel sesuai tabel berikut Komponen Variabel name lama Variabel name baru JTabel JButton JButton JButton JButton jTabel1 jButton1 jButton2 jButton3 jButton4 tbMahasiswa btnTambah btnUbah btnHapus btnTutup 14. Sehingga diinspector tampak seperti gambar berikut Text Tambah Ubah Hapus Tutup Di tampilan seperti gambar berikut 15. Klik kanan pada tbMahasiswa, kemudian pilih Tabel Contents ... Kemudian pilih Columns 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 private javax.swing.JScrollPane jScrollPane1; private javax.swing.JTable tbMahasiswa; // End of variables declaration public JTable getTbMahasiswa() { return tbMahasiswa; } } 18. Tambahkan 1 buah JDialog bernama FormDetailMahasiswa sebagai View 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) Sehingga FormDetailMahasiswa anda tampak seperi gambar berikut 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 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; } } 25. Silahkan anda buka kode program dari FormDetailMahasiswa, tambahkan method berikut 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 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); } } 29. Tambahkan 1 buah controller untuk mendukung 2 buah view yang baru anda buat 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 public void tambahMhs() { 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"); } } 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 ubahMhs() { 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 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"); } } 33. Tambahkan 2 buah method berikut 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 public void setMhsController(MhsController mhsController) { this.mhsController = mhsController; } 36. Tambahkan event actionPerformed pada btnSimpan, kemudian ketik kode program yang dicetak tebal private void btnSimpanActionPerformed(java.awt.event.ActionEvent evt) { // TODO add your handling code here: if (txtNim.isEnabled()) { mhsController.tambahMhs(); } else { mhsController.ubahMhs(); } } 37. Tambahkan event actionPerformed pada btnBatal, kemudian ketik kode program yang dicetak tebal private void btnBatalActionPerformed(java.awt.event.ActionEvent evt) { // TODO add your handling code here: reset(); setVisible(false); } 38. Tambahkan field berikut pada FormDataMahasiswa private MhsController mhsController; 39. Tambahkan method pada FormDataMahasiswa 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 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); } 41. Ubah method main pada kelas Main.java anda seperti kode program berikut 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); }