59
LAMPIRAN: LISTING PROGRAM File: student.sql ---------
phpMyAdmin SQL Dump version 3.1.3.1 http://www.phpmyadmin.net Host: localhost Generation Time: Feb 10, 2010 at 11:02 PM Server version: 5.1.33 PHP Version: 5.2.9
SET SQL_MODE="NO_AUTO_VALUE_ON_ZERO";
/*!40101 /*!40101 /*!40101 /*!40101
SET SET SET SET
@OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */; @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */; @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */; NAMES utf8 */;
--- Database: `student` --- ---------------------------------------------------------- Table structure for table `student` -CREATE TABLE IF NOT EXISTS `student` ( `nomor_induk` char(10) NOT NULL, `nama` varchar(50) NOT NULL, `kelas` int(11) NOT NULL, `alamat` varchar(100) DEFAULT NULL, PRIMARY KEY (`nomor_induk`) ) ENGINE=MyISAM DEFAULT CHARSET=latin1 COMMENT='ini tabel siswa.'; --- Dumping data for table `student` -INSERT INTO `student` (`nomor_induk`, `nama`, `kelas`, `alamat`) VALUES ('1203948912', 'John Doe', 9, 'Jl. Sei Belutu no. 17A Medan'), ('1204847381', 'Jane Doe', 10, 'Jl. Sei Mencirim no. 25 Medan');
Universitas Sumatera Utara
60
File: Student.Class.php
/** @var string */ public $nomor_induk; /** @var string */ public $nama; /** @var string */ public $kelas; /** @var string */ public $alamat;
}
?>
Universitas Sumatera Utara
61
File: StudentManager.class.php */ class StudentManager { /** * Mengembalikan data seluruh murid * @return Student[] */ public function getAllStudents() { //ambil semua student $con = mysql_connect("localhost","root",""); if (!$con) { die('Could not connect: ' . mysql_error()); } mysql_select_db("student", $con); $sql = "select * from student"; $result = mysql_query ($sql); $students = null; $i = 0; while($row = mysql_fetch_array($result)) { $student = new Student(); $student->nomor_induk = $row['nomor_induk']; $student->nama = $row['nama']; $student->kelas = $row['kelas']; $student->alamat = $row['alamat']; $students[$i] = $student; $i++; } mysql_close($con); return $students; } /** * Mengembalikan data seorang murid berdasarkan * nomor induk siswa * @param string Nomor Induk Siswa * @return Student */ public function getStudent($nomor_induk) { //ambil student berdasarkan nomor induk. $con = mysql_connect("localhost","root",""); if (!$con) { die('Could not connect: ' . mysql_error()); } mysql_select_db("student", $con); $sql = "select * from student where nomor_induk=".$nomor_induk; $result = mysql_query ($sql);
Universitas Sumatera Utara
62
$student = new Student(); while($row = mysql_fetch_array($result)) { $student->nomor_induk = $row['nomor_induk']; $student->nama = $row['nama']; $student->kelas = $row['kelas']; $student->alamat = $row['alamat']; } mysql_close($con); return $student; } /** * Menambah data baru seorang murid dan mengembalikan status penambahan. * @param Student * @return string */ public function addStudent($student) { //tambah student baru $con = mysql_connect("localhost","root",""); if (!$con) { die('Could not connect: ' . mysql_error()); } mysql_select_db("student", $con); $sql = "insert into student values ('$student>nomor_induk', '$student->nama', '$student->kelas', '$student>alamat')"; if (!mysql_query($sql,$con)) { mysql_close($con); return false; } mysql_close($con); return true; } /** * Menghapus data berdasarkan nomor induk siswa. * @param string * @return string */ public function deleteStudent($nomor_induk) { //hapus student $con = mysql_connect("localhost","root",""); if (!$con) { die('Could not connect: ' . mysql_error()); } mysql_select_db("student", $con); $sql = "delete from student where nomor_induk='$nomor_induk'"; if (!mysql_query($sql,$con)) { mysql_close($con); return false; } mysql_close($con); return true; }
Universitas Sumatera Utara
63
/** * Mengupdate data siswa. * @param Student * @return string */ public function updateStudent($student) { //update student where nomor_induk = $student.nomor_induk $con = mysql_connect("localhost","root",""); if (!$con) { die('Could not connect: ' . mysql_error()); } mysql_select_db("student", $con); $sql = "update student set nama='$student->nama', kelas='$student->kelas', alamat='$student->alamat' where nomor_induk='$student->nomor_induk'"; if (!mysql_query($sql,$con)) { mysql_close($con); return false; } mysql_close($con); return true; }
} ?>
Universitas Sumatera Utara
64
File: config.php "Student", ); ?>
Universitas Sumatera Utara
65
File:index.php
Daftar Murid Yayasan Apa Saja Berikut adalah daftar murid yang ada:
Nomor Induk | Nama | Kelas | Alamat |
getAllStudents(); foreach ($students as $val) { echo " $val->nomor_induk | $val->nama | $val->kelas | $val->alamat |
"; } ?>
Ambil murid yang nomor induknya 1203948912.
Nomor Induk | Nama | Kelas | Alamat |
getStudent("1203948912"); echo " $val->nomor_induk | $val->nama | $val->kelas | $val->alamat |
"; ?>
Update murid yang nomor induknya 1203948912 ubah nama jadi Jan Peter.
nomor_induk = "1203948912"; $student->nama = "Jan Peter"; $student->kelas = 9; $student->alamat = "Jl. Sei Belutu no. 17A Medan"; $val = $stu->updateStudent($student); if ($val) echo "Update sukses!"; else echo "Update gagal!"; ?>
Delete murid yang nomor induknya 1203948912.
deleteStudent("1203948912");
Universitas Sumatera Utara
66
if ($val) echo "Delete sukses!"; else echo "Delete gagal!"; ?>
Add murid dengan nomor induknya 1203948912.
nomor_induk = "1203948912"; $student->nama = "John Doe"; $student->kelas = 9; $student->alamat = "Jl. Sei Belutu no. 17A Medan"; $val = $stu->addStudent($student); if ($val) echo "Insert sukses!"; else echo "Insert gagal!"; ?>
Universitas Sumatera Utara
67
File: StudentFrame.java /** * Kelas ini adalah kelas utama untuk melakukan segala sesuatu. * Kelas ini dibuat untuk menunjukkan kemampuan web service yang * menyediakan komunikasi antara server dan komputer klien. * Contoh kasus yang berusaha diatasi adalah sebuah daftar siswa * di sebuah sekolah. Beberapa fungsional dasar yang disediakan * oleh aplikasi ini, antara lain: *
* - Mengambil dari server dan menampilkan data siswa.
* - Menambah data siswa baru
* - Memodifikasi data siswa yang sudah ada
* - Menghapus data siswa
*
*/ /* * StudentFrame.java * * Created on 11 Feb 10, 11:44:26 */ package main.lita; import id.ac.usu.lita.Student; import id.ac.usu.lita.StudentManagerLocator; import id.ac.usu.lita.StudentManagerPortType; import java.rmi.RemoteException; import java.util.ArrayList; //import java.util.logging.Level; //import java.util.logging.Logger; import javax.xml.rpc.ServiceException; /** * * @author Lita Elisabeth */ public class StudentFrame extends javax.swing.JFrame { ArrayList<Student> students; private int nomorRekam; private boolean rekamBaru; /** Membuat form StudentFrame */ public StudentFrame() { initComponents(); // Dibuat secara otomatis oleh netbeans. initYangLain(); // Fungsional yang kita sediakan } /** This method is called from within the constructor to * initialize the form. * WARNING: Do NOT modify this code. The content of this method is * always regenerated by the Form Editor. */ @SuppressWarnings("unchecked") // <editor-fold defaultstate="collapsed" desc="Generated Code"> private void initComponents() { jPanel1 = new javax.swing.JPanel(); jLabel1 = new javax.swing.JLabel();
Universitas Sumatera Utara
68
jLabel2 = new javax.swing.JLabel(); jLabel3 = new javax.swing.JLabel(); jLabel4 = new javax.swing.JLabel(); no_induk = new javax.swing.JTextField(); nama = new javax.swing.JTextField(); kelas = new javax.swing.JTextField(); jScrollPane1 = new javax.swing.JScrollPane(); alamat = new javax.swing.JTextArea(); sebelumnya = new javax.swing.JButton(); selanjutnya = new javax.swing.JButton(); no_rekam = new javax.swing.JTextField(); jSeparator1 = new javax.swing.JSeparator(); tambah = new javax.swing.JButton(); hapus = new javax.swing.JButton(); simpan = new javax.swing.JButton(); sunting = new javax.swing.JToggleButton(); jMenuBar1 = new javax.swing.JMenuBar(); jMenu1 = new javax.swing.JMenu(); sambungkan = new javax.swing.JMenuItem(); jSeparator2 = new javax.swing.JPopupMenu.Separator(); keluar = new javax.swing.JMenuItem();
setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE); jLabel1.setText("Nomor Induk"); jLabel2.setText("Nama"); jLabel3.setText("Kelas"); jLabel4.setText("Alamat"); no_induk.setEditable(false); no_induk.setToolTipText("Nomor induk siswa harus 10 karakter"); nama.setEditable(false); nama.setToolTipText("Nama siswa"); nama.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { namaActionPerformed(evt); } }); kelas.setEditable(false); kelas.setToolTipText("Kelas siswa"); alamat.setColumns(20); alamat.setEditable(false); alamat.setRows(5); alamat.setToolTipText("Alamat rumah siswa"); alamat.setWrapStyleWord(true); jScrollPane1.setViewportView(alamat); sebelumnya.setText("<<"); sebelumnya.setToolTipText("Ke rekam siswa sebelumnya"); sebelumnya.setEnabled(false);
Universitas Sumatera Utara
69
sebelumnya.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { sebelumnyaActionPerformed(evt); } }); selanjutnya.setText(">>"); selanjutnya.setToolTipText("Ke rekam siswa selanjutnya"); selanjutnya.setEnabled(false); selanjutnya.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { selanjutnyaActionPerformed(evt); } }); no_rekam.setEnabled(false); no_rekam.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { no_rekamActionPerformed(evt); } }); tambah.setText("Tambah siswa"); tambah.setEnabled(false); tambah.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { tambahActionPerformed(evt); } }); hapus.setText("Hapus"); hapus.setEnabled(false); hapus.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { hapusActionPerformed(evt); } }); simpan.setText("Simpan"); simpan.setEnabled(false); simpan.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { simpanActionPerformed(evt); } }); sunting.setMnemonic('s'); sunting.setText("Sunting"); sunting.setToolTipText("Buat data dapat disunting.");
Universitas Sumatera Utara
70
sunting.setEnabled(false); sunting.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { suntingActionPerformed(evt); } }); javax.swing.GroupLayout jPanel1Layout = new javax.swing.GroupLayout(jPanel1); jPanel1.setLayout(jPanel1Layout); jPanel1Layout.setHorizontalGroup( jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.L EADING) .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, jPanel1Layout.createSequentialGroup() .addContainerGap() .addGroup(jPanel1Layout.createParallelGroup(javax.swi ng.GroupLayout.Alignment.TRAILING) .addComponent(jSeparator1, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, 531, Short.MAX_VALUE) .addGroup(javax.swing.GroupLayout.Alignment.LEADI NG, jPanel1Layout.createSequentialGroup() .addComponent(sebelumnya) .addPreferredGap(javax.swing.LayoutStyle.Comp onentPlacement.RELATED) .addComponent(no_rekam, javax.swing.GroupLayout.PREFERRED_SIZE, 62, javax.swing.GroupLayout.PREFERRED_SIZE) .addPreferredGap(javax.swing.LayoutStyle.Comp onentPlacement.RELATED) .addComponent(selanjutnya) .addPreferredGap(javax.swing.LayoutStyle.Comp onentPlacement.RELATED) .addComponent(sunting) .addPreferredGap(javax.swing.LayoutStyle.Comp onentPlacement.RELATED) .addComponent(hapus) .addPreferredGap(javax.swing.LayoutStyle.Comp onentPlacement.RELATED) .addComponent(simpan) .addPreferredGap(javax.swing.LayoutStyle.Comp onentPlacement.RELATED, 118, Short.MAX_VALUE) .addComponent(tambah)) .addGroup(javax.swing.GroupLayout.Alignment.LEADI NG, jPanel1Layout.createSequentialGroup() .addGroup(jPanel1Layout.createParallelGroup(javax .swing.GroupLayout.Alignment.LEADING) .addComponent(jLabel1) .addComponent(jLabel2) .addComponent(jLabel3) .addComponent(jLabel4)) .addPreferredGap(javax.swing.LayoutStyle.Comp onentPlacement.RELATED) .addGroup(jPanel1Layout.createParallelGroup(j avax.swing.GroupLayout.Alignment.TRAILING)
Universitas Sumatera Utara
71
.addComponent(nama, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, 437, Short.MAX_VALUE) .addComponent(no_induk, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, 437, Short.MAX_VALUE) .addComponent(kelas, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, 437, Short.MAX_VALUE) .addComponent(jScrollPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 437, Short.MAX_VALUE)))) .addContainerGap()) ); jPanel1Layout.setVerticalGroup( jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.L EADING) .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, jPanel1Layout.createSequentialGroup() .addContainerGap() .addGroup(jPanel1Layout.createParallelGroup(javax.swi ng.GroupLayout.Alignment.BASELINE) .addComponent(sebelumnya) .addComponent(no_rekam, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(selanjutnya) .addComponent(tambah) .addComponent(hapus) .addComponent(simpan) .addComponent(sunting)) .addGap(16, 16, 16) .addComponent(jSeparator1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addGap(28, 28, 28) .addGroup(jPanel1Layout.createParallelGroup(javax.swi ng.GroupLayout.Alignment.BASELINE, false) .addComponent(jLabel1) .addComponent(no_induk, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) .addGap(18, 18, 18) .addGroup(jPanel1Layout.createParallelGroup(javax.swi ng.GroupLayout.Alignment.BASELINE) .addComponent(jLabel2) .addComponent(nama, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) .addGap(18, 18, 18) .addGroup(jPanel1Layout.createParallelGroup(javax.swi ng.GroupLayout.Alignment.BASELINE) .addComponent(jLabel3) .addComponent(kelas, javax.swing.GroupLayout.PREFERRED_SIZE,
Universitas Sumatera Utara
72
javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) .addGap(18, 18, 18) .addGroup(jPanel1Layout.createParallelGroup(javax.swi ng.GroupLayout.Alignment.LEADING) .addComponent(jLabel4) .addComponent(jScrollPane1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) .addGap(50, 50, 50)) ); jMenu1.setMnemonic('f'); jMenu1.setText("File");
sambungkan.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt .event.KeyEvent.VK_F5, 0)); sambungkan.setMnemonic('d'); sambungkan.setText("Ambil data"); sambungkan.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { sambungkanActionPerformed(evt); } }); jMenu1.add(sambungkan); jMenu1.add(jSeparator2);
keluar.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.eve nt.KeyEvent.VK_F4, java.awt.event.InputEvent.ALT_MASK)); keluar.setMnemonic('k'); keluar.setText("Keluar"); keluar.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { keluarActionPerformed(evt); } }); jMenu1.add(keluar); jMenuBar1.add(jMenu1); setJMenuBar(jMenuBar1); javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane()); getContentPane().setLayout(layout); layout.setHorizontalGroup( layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addComponent(jPanel1, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) ); layout.setVerticalGroup(
Universitas Sumatera Utara
73
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addComponent(jPanel1, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) ); pack(); }// private void keluarActionPerformed(java.awt.event.ActionEvent evt) { System.exit(0); // Keluar dari sistem. } private void sebelumnyaActionPerformed(java.awt.event.ActionEvent evt) { setPage(this.nomorRekam - 1); // Ke rekam sebelumnya } private void selanjutnyaActionPerformed(java.awt.event.ActionEvent evt) { setPage(this.nomorRekam + 1); // Ke rekam berikutnya. } private void namaActionPerformed(java.awt.event.ActionEvent evt) { // TODO add your handling code here: } /** * Method ini dipanggil saat menu "Ambil data" dipilih. Ia akan mengambil data * dari server dan menampilkannya ke aplikasi. */ private void sambungkanActionPerformed(java.awt.event.ActionEvent evt) { updateDataSiswa(); // Ambil dari server // Update isi perubahan dengan halaman. setPage(1); ////// // Aktifkan tombol-tombol untuk navigasi. ///// this.tambah.setEnabled(true); // Tombol penambahan data baru. // Apa bila ada data siswa yang diambil dari server. if (students.size() > 0) { this.hapus.setEnabled(true); // disable hapus this.no_rekam.setEnabled(true); // disable nomor rekam } else { // Apabila kosong this.sunting.setEnabled(false); // disable tombol sunting. } } /**
Universitas Sumatera Utara
74
* Method ini dijalankan saat pengguna menekan tombol "ENTER" di isian * nomor rekam. */ private void no_rekamActionPerformed(java.awt.event.ActionEvent evt) { lakukan(); // Pindah ke nomor yang ada di tekan. } /** * Method ini dijalankan saat pengguna menekan tombol Hapus. Ada dua skenario * saat tombol ini ditekan. *
* - Saat dalam mengisi data baru, tombol ini berfungsi untuk membatalkan * yang telah dilakukan.
* - Saat dalam keadaan biasa, tombol ini menghapus rekam yang sedang * aktif.
*
*/ private void hapusActionPerformed(java.awt.event.ActionEvent evt) { if (rekamBaru) { rekamBaru = false; updateDataSiswa(); setPage(nomorRekam); simpan.setEnabled(false); sunting.setSelected(rekamBaru); toggleSuntingData(); } else { String nomorInduk = no_induk.getText(); if (hapusData(nomorInduk)) {// Berhasil updateDataSiswa(); setPage(1); } else { // Gagal menghapus System.out.println("Gagal menghapus " + nomorInduk); } } } /** * Method ini mengaktifkan modus penambahan rekam baru untuk diisi. Method * ini dipanggil saat tombol Tambah ditekan. */ private void tambahActionPerformed(java.awt.event.ActionEvent evt) { int nomorRekamBaru = students.size() + 1; // Buat indeks baru. // Set GUI untuk menambahkan data siswa yang baru no_induk.setText(""); nama.setText(""); kelas.setText(""); alamat.setText("");
Universitas Sumatera Utara
75
no_rekam.setText(nomorRekamBaru + ""); simpan.setEnabled(true); hapus.setEnabled(true); sebelumnya.setEnabled(false); selanjutnya.setEnabled(false); sunting.setSelected(true); toggleSuntingData(); // Tandai kalau kita sedang membuat rekam baru. rekamBaru = true; } /** * Method ini dipanggil saat tombol Sunting ditekan. */ private void suntingActionPerformed(java.awt.event.ActionEvent evt) { toggleSuntingData(); } /** * Method ini dipanggil saat tombol Simpan ditekan. Method ini akan menyimpan * perubahan yang ada ke server lalu memuat ulang seluruh data siswa. */ private void simpanActionPerformed(java.awt.event.ActionEvent evt) { // Buat data sementara Student studentBaru = new Student(); studentBaru.setNomor_induk(no_induk.getText()); studentBaru.setNama(nama.getText()); studentBaru.setKelas(kelas.getText()); studentBaru.setAlamat(alamat.getText()); // Seandainya ini modus penambahan baru. if (rekamBaru) { if (tambahSiswa(studentBaru)) { System.out.println("Data berhasil ditambahkan."); updateDataSiswa(); setPage(1); } } else { // Ini modus biasa saat data yang sudah ada diubah lalu disimpan. if (ubahSiswa(studentBaru)) { System.out.println("Data berhasil diubah."); updateDataSiswa(); setPage(nomorRekam); } } } // Variables declaration - do not modify private javax.swing.JTextArea alamat; private javax.swing.JButton hapus; private javax.swing.JLabel jLabel1;
Universitas Sumatera Utara
76
private javax.swing.JLabel jLabel2; private javax.swing.JLabel jLabel3; private javax.swing.JLabel jLabel4; private javax.swing.JMenu jMenu1; private javax.swing.JMenuBar jMenuBar1; private javax.swing.JPanel jPanel1; private javax.swing.JScrollPane jScrollPane1; private javax.swing.JSeparator jSeparator1; private javax.swing.JPopupMenu.Separator jSeparator2; private javax.swing.JTextField kelas; private javax.swing.JMenuItem keluar; private javax.swing.JTextField nama; private javax.swing.JTextField no_induk; private javax.swing.JTextField no_rekam; private javax.swing.JMenuItem sambungkan; private javax.swing.JButton sebelumnya; private javax.swing.JButton selanjutnya; private javax.swing.JButton simpan; private javax.swing.JToggleButton sunting; private javax.swing.JButton tambah; // End of variables declaration /** * Inisialisasi saat obyek kelas ini dibuat. */ private void initYangLain() { students = new ArrayList<Student>(); // Daftar siswa-siswa. rekamBaru = false; // Flag untuk modus penambahan data baru. } /** * Method ini untuk pindah ke rekam yang disediakan. Method ini mengaktifkan * juga tombol-tombol yang perlu, dan sebaliknya. * @param nomorRekam Indeks dari rekam siswa yang hendak ditampilkan. */ private void setPage(int nomorRekam) { // Kalau memang tidak ada data, tidak usah menampilkan apaapa. if (students.isEmpty()) { no_rekam.setText("0"); no_rekam.setEnabled(false); sunting.setEnabled(false); hapus.setEnabled(false); simpan.setEnabled(false); sebelumnya.setEnabled(false); selanjutnya.setEnabled(false); no_induk.setText(""); no_induk.setEditable(false); nama.setText(""); nama.setEditable(false); kelas.setText(""); kelas.setEditable(false); alamat.setText(""); alamat.setEditable(false); return; }
Universitas Sumatera Utara
77
// Kalau ada orang yang salah memasukkan data, balikkan ke nomor yang // valid. if (nomorRekam <= 0 && nomorRekam > students.size()) { no_rekam.setText(this.nomorRekam + ""); return; } else { // Kalau benar. this.nomorRekam = nomorRekam; no_rekam.setText(this.nomorRekam + ""); } // SET FIELD-FIELD YANG DIBUTUHKAN Student student = students.get(nomorRekam - 1); no_induk.setText(student.getNomor_induk()); nama.setText(student.getNama()); kelas.setText(student.getKelas()); alamat.setText(student.getAlamat()); // SET NOMOR REKAM YANG AKTIF this.nomorRekam = nomorRekam; // SET TOMBOL-TOMBOL KONTROL sunting.setEnabled(true); no_rekam.setEnabled(true); if (nomorRekam == 1 || students.size() == 1) { sebelumnya.setEnabled(false); } else { sebelumnya.setEnabled(true); } if (nomorRekam == students.size()) { selanjutnya.setEnabled(false); } else { selanjutnya.setEnabled(true); } } /** * Method ini membaca isi dari field no_rekam (nomor rekam) dan dikonversikan * ke dalam bilangan integer untuk diproses lebih lanjut. Data itu akan * dipakai untuk berpindah ke indeks rekam. */ private void lakukan() { try { int noRek = Integer.parseInt(no_rekam.getText()); if (noRek > 0 && noRek <= students.size()) { setPage(noRek); return; } } catch (Exception e) { e.printStackTrace(); } no_rekam.setText(this.nomorRekam + ""); }
Universitas Sumatera Utara
78
/** * Method ini mengaktifkan dan menonaktifkan setiap field rekam siswa * berdasarkan kondisi tombol Sunting. Ia mengatur modus sunting. */ private void toggleSuntingData() { no_induk.setEditable(sunting.isSelected()); nama.setEditable(sunting.isSelected()); kelas.setEditable(sunting.isSelected()); alamat.setEditable(sunting.isSelected()); simpan.setEnabled(sunting.isSelected()); } ////////////////////////////////// // // BAGIAN YANG MEMANGGIL WEB SERVICE // ////////////////////////////////////////////////
/** * Update Siswa digunakan untuk mengupdate data siswa. */ private void updateDataSiswa() { try { // Webservice yang dipanggil... StudentManagerPortType service = new StudentManagerLocator().getStudentManagerPort(); Student[] studentList = service.getAllStudents(); // Semua data yang lama dihapus. students.clear(); // Jika data yang didapatkan tidak kosong, maka masukkan data-data // tersebut ke dalam data. if (studentList != null) { for (Student student : studentList) { students.add(student); } } } catch (RemoteException ex) { // Logger.getLogger(StudentFrame.class.getName()).log(Level.SEVERE, null, ex); System.err.println("Server tidak dapat dihubungi."); } catch (ServiceException ex) { // Logger.getLogger(StudentFrame.class.getName()).log(Level.SEVERE, null, ex); System.err.println("Gagal saat menjalankan web service getAllStudents()."); } } /** * Method ini menghapus data berdasarkan nomor induk. * @param nomorInduk Nomor induk siswa.
Universitas Sumatera Utara
79
* @return true -> berhasil, false -> gagal */ private boolean hapusData(String nomorInduk) { try { StudentManagerPortType service = new StudentManagerLocator().getStudentManagerPort(); String result = service.deleteStudent(nomorInduk); if (!result.isEmpty()) { return true; } } catch (RemoteException ex) { // Logger.getLogger(StudentFrame.class.getName()).log(Level.SEVERE, null, ex); System.err.println("Server tidak dapat dihubungi."); } catch (ServiceException ex) { // Logger.getLogger(StudentFrame.class.getName()).log(Level.SEVERE, null, ex); System.err.println("Gagal saat menjalankan web service deleteStudent();"); } return false; } /** * Method ini menambah data siswa baru. * @param studentBaru Data siswa baru yang hendak ditambahkan. * @return true -> berhasil, false -> gagal */ private boolean tambahSiswa(Student studentBaru) { try { StudentManagerPortType service = new StudentManagerLocator().getStudentManagerPort(); String result = service.addStudent(studentBaru); if (!result.isEmpty()) { return true; // BERHASIL } } catch (RemoteException ex) { // Logger.getLogger(StudentFrame.class.getName()).log(Level.SEVERE, null, ex); System.err.println("Server tidak dapat dihubungi."); } catch (ServiceException ex) { // Logger.getLogger(StudentFrame.class.getName()).log(Level.SEVERE, null, ex); System.err.println("Gagal saat menjalankan web service addStudent()."); } return false; } /** * Method ini mengubah data siswa yang sudah ada. * @param studentBaru Data siswa baru yang hendak ditambahkan. * @return true -> berhasil, false -> gagal */
Universitas Sumatera Utara
80
private boolean ubahSiswa(Student studentBaru) { try { StudentManagerPortType service = new StudentManagerLocator().getStudentManagerPort(); String result = service.updateStudent(studentBaru); if (!result.isEmpty()) { return true; // BERHASIL } } catch (RemoteException ex) { // Logger.getLogger(StudentFrame.class.getName()).log(Level.SEVERE, null, ex); System.err.println("Server tidak dapat dihubungi."); } catch (ServiceException ex) { // Logger.getLogger(StudentFrame.class.getName()).log(Level.SEVERE, null, ex); System.err.println("Gagal saat menjalankan web service updateStudent()."); } return false; } }
Universitas Sumatera Utara
81
File: main.java /** * Aplikasi utama untuk menjalankan StudentFrame. */ package main.lita; /** * * @author Lita Elisabeth */ public class Main { /** * @param args the command line arguments */ public static void main(String[] args) { java.awt.EventQueue.invokeLater(new Runnable() { public void run() { new StudentFrame().setVisible(true); } }); } }
Universitas Sumatera Utara