Modul 18 Database (Lanjutan)
Modul 18 Database (Lanjutan)
Pertemuan XVIII
Database
import java.security.MessageDigest;
Di bawah ini adalah potongan program yang akan kita buat ketika proses konversi dari
data tipe String ke bentuk hash SHA-256 dan menyimpannya ke dalam table user (TbUser).
Pertama dibuat objek md dari class MessageDigest dengan algorithma SHA-256 (catatan :
penggunaan getInstance harus diberi penanganan exception, misalnya digunakan di dalam
blok try … catch). Data password yang akan kita konversi ke tipe array byte dengan metode
getBytes, kemudian kita masukkan ke dalam objek md dengan metode update dan
dilakukan konversi dengan metode digest().
Hasilnya berupa array byte dikonversi bentuk heksadesimal dan disimpan dalam array
karakter (class StringBuffer) dengan nama sb. Dengan menggunakan metode toString maka
kita mendapatkan nilai sb dalam tipe String. Selanjutnya kita simpan ke dalam table user
(TbUser).
MessageDigest md = MessageDigest.getInstance("SHA-256");
md.update(inputPassword.getBytes());
byte bytePassword[] = md.digest();
StringBuffer sb = new StringBuffer();
for (i = 0; i < bytePassword.length; i++) {
sb.append(Integer.toString((bytePassword[i] & 0xff) + 0x100,
16).substring(1));
}
inputPassword = sb.toString();
if (simpan==1){
JOptionPane.showMessageDialog(null,"Sudah tersimpan");
} else {
JOptionPane.showMessageDialog(null,"Gagal menyimpan data user",
"Kesalahan",JOptionPane.ERROR_MESSAGE);
}
page 1 of 52
Materi Pemrograman I (Pertemuan XVIII) Universitas Pamulang
Untuk proses penggantian password, langkah konversinya sama dengan proses di atas.
Perbedaannya hanya terletak pada proses penyimpanan ke dalam database, yaitu
menggunakan perintah update.
Ketika data user sudah tersimpan, maka user bisa menggunakannya untuk login. Pada
proses login, user harus memasukkan ID user dan password. Selanjutnya program akan
membandingkan ID user dan password dengan data yang tersimpan, jika sama maka user
dapat menggunakan program sesuai data hak akses yang diberikan. Tetapi jika tidak sama,
maka user diberi informasi bahwa ID user atau passwordnya salah dan tidak dapat
menggunakan programnya.
Hash SHA-256 merupakan konversi satu arah, maka hasilnya tidak dapat dikembalikan
ke nilai aslinya. Untuk membandingkan password yang sudah di hash, maka password yang
dimasukkan harus di-hash terlebih dulu, kemudian hasilnya dibandingkan dengan nilai yang
tersimpan.
Proses mengkonversi password yang dimasukkan ketika login dan membandingkan
dengan password yang tersimpan serta penentuan hak akses dapat dilihat pada potongan
program di bawah ini :
MessageDigest md=null;
try{
md = MessageDigest.getInstance("SHA-256");
} catch (Exception ex){
JOptionPane.showMessageDialog(null,"Kesalahan pada hash SHA-
256\n"+ex,"Kesalahan",JOptionPane.ERROR_MESSAGE);
}
md.update(inputPassword.getBytes());
byte bytePassword[] = md.digest();
Connection cn = null;
try {
cn = DriverManager.getConnection(StringConnection);
} catch (Exception ex) {
JDBC_Err=true;
JOptionPane.showMessageDialog(null,"Koneksi ke database DbTokoABC
gagal\n"+ex,"Kesalahan",JOptionPane.ERROR_MESSAGE);
}
if (!JDBC_Err){
try {
cn = DriverManager.getConnection(StringConnection);
String SQLStatemen = "Select * from TbUser where
IDUser='"+TxtIDUserLogin.getText().trim()+"' and
PasswordUser='"+inputPassword+"'";
Statement sta = cn.createStatement();
ResultSet rset = sta.executeQuery(SQLStatemen);
page 2 of 52
Materi Pemrograman I (Pertemuan XVIII) Universitas Pamulang
rset.next();
if (rset.getRow()>0){
IDUserAktif=TxtIDUserLogin.getText().trim();
NamaUserAktif=rset.getString("NamaUser").trim();
byte[] ByteBufHakAkses=bufHakAkses.substring(0,10).getBytes();
byte[] ByteBufUserID=bufUserID.getBytes();
for (i=0;i<10;i++){
ByteBufHakAkses[i]= (byte)(ByteBufHakAkses[i] ^ ByteBufUserID[i]);
}
if (bufHakAkses.substring(10,20).equals(new
String(ByteBufHakAkses))){
HakAksesUserAktif=bufHakAkses.substring(0,10);
} else {
HakAksesUserAktif="";
while (HakAksesUserAktif.length() < 10){
HakAksesUserAktif = HakAksesUserAktif.concat("3");
}
}
boolean Status;
for (i=0;i<10;i++){
Status=(HakAksesUserAktif.substring(i,i+1).equals("1") ||
HakAksesUserAktif.substring(i,i+1).equals("2"));
switch (i){
case 0:MenuBarang.setEnabled(Status); break;
case 1:MenuCustomer.setEnabled(Status); break;
case 2:MenuUserAccount.setEnabled(Status); break;
case 3:MenuPenjualan.setEnabled(Status); break;
}
}
frmLogin.setVisible(false);
MenuLogin.setText("Logout");
} else {
sta.close();
rset.close();
}
} catch (Exception ex){
JOptionPane.showMessageDialog(null,"Tidak dapat membuka tabel
TbUser\n"+ex,"Kesalahan",JOptionPane.ERROR_MESSAGE);
}
}
page 3 of 52
Materi Pemrograman I (Pertemuan XVIII) Universitas Pamulang
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import javax.swing.table.DefaultTableModel;
import javax.swing.table.TableColumn;
import javax.swing.table.*;
import java.sql.*;
import java.util.*;
import java.text.*;
import java.security.MessageDigest;
/*Mendefinisikan Frame*/
private JDesktopPane frmMDI;
private JInternalFrame frmBarang;
private JInternalFrame frmCustomer;
private JInternalFrame frmUserAccount;
private JInternalFrame frmPenjualan;
private JInternalFrame frmLogin;
page 4 of 52
Materi Pemrograman I (Pertemuan XVIII) Universitas Pamulang
page 5 of 52
Materi Pemrograman I (Pertemuan XVIII) Universitas Pamulang
}
};
JScrollPane ScrollBarJualDaftarBarang = new JScrollPane();
page 6 of 52
Materi Pemrograman I (Pertemuan XVIII) Universitas Pamulang
page 7 of 52
Materi Pemrograman I (Pertemuan XVIII) Universitas Pamulang
AplikasiToko(){
super("Aplikasi Toko");
setSize((int)(0.7*dimensi.width),(int)(0.7*dimensi.height));
setLocation(dimensi.width/2-getWidth()/2,dimensi.height/2-
getHeight()/2);
setDefaultCloseOperation(EXIT_ON_CLOSE);
frmMDI = new JDesktopPane ();
frmMDI.setLayout(null);
this.add(frmMDI);
MenuTransaksi.add(MenuPenjualan);
MenuBar.add(MenuTransaksi);
MenuAplikasi.add(MenuLogin);
MenuAplikasi.add(MenuExit);
MenuBar.add(MenuAplikasi);
MenuPenjualan.addActionListener(new MenuHandler());
MenuLogin.addActionListener(new MenuHandler());
MenuExit.addActionListener(new MenuHandler());
page 8 of 52
Materi Pemrograman I (Pertemuan XVIII) Universitas Pamulang
TblBarangDelete.addActionListener(new TombolBarangHandler());
TblBarangSave.addActionListener(new TombolBarangHandler());
TblBarangCancel.addActionListener(new TombolBarangHandler());
page 9 of 52
Materi Pemrograman I (Pertemuan XVIII) Universitas Pamulang
Connection cn = null;
try {
cn = DriverManager.getConnection(StringConnection);
} catch (Exception ex) {
JDBC_Err=true;
JOptionPane.showMessageDialog(null,"Koneksi ke database
DbTokoABC gagal\n"+ex,"Kesalahan",JOptionPane.ERROR_MESSAGE);
}
if (!JDBC_Err){
try {
cn = DriverManager.getConnection(StringConnection);
String SQLStatemen = "Select * from TbBarang where
KodeBarang='"+TxtKodeBarang.getText()+"'";
Statement sta = cn.createStatement();
ResultSet rset = sta.executeQuery(SQLStatemen);
rset.next();
if (rset.getRow()>0){
TxtNamaBarang.setText(rset.getString("NamaBarang"));
TxtSatuanBarang.setText(rset.getString("SatuanBarang"));
TxtHargaBarang.setText(rset.getString("HargaBarang"));
TxtStockBarang.setText(rset.getString("StockBarang"));
sta.close();
rset.close();
} else {
sta.close();
rset.close();
ClearFormBarang();
JOptionPane.showMessageDialog(null,"Kode barang tidak
ada");
}
} catch (Exception ex){
JOptionPane.showMessageDialog(null,"Tidak dapat membuka
tabel TbBarang\n"+ex,"Kesalahan",JOptionPane.ERROR_MESSAGE);
}
}
/*selesai mencari data barang*/
}
}
});
try {
cn = DriverManager.getConnection(StringConnection);
} catch (Exception ex) {
JDBC_Err=true;
JOptionPane.showMessageDialog(null,"Koneksi ke database
DbTokoABC gagal\n"+ex,"Kesalahan",JOptionPane.ERROR_MESSAGE);
}
if (!JDBC_Err){
page 10 of 52
Materi Pemrograman I (Pertemuan XVIII) Universitas Pamulang
try {
cn = DriverManager.getConnection(StringConnection);
String SQLStatemen = "Select * from TbCustomer where
KodeCustomer='"+TxtKodeCustomer.getText()+"'";
Statement sta = cn.createStatement();
ResultSet rset = sta.executeQuery(SQLStatemen);
rset.next();
if (rset.getRow()>0){
TxtNamaCustomer.setText(rset.getString("NamaCustomer"));
TxtAlamatCustomer.setText(rset.getString("AlamatCustomer"));
TxtNoTeleponCustomer.setText(rset.getString("NoTelepon"));
TxtEmailCustomer.setText(rset.getString("Email"));
sta.close();
rset.close();
} else {
sta.close();
rset.close();
ClearFormCustomer();
JOptionPane.showMessageDialog(null,"Kode customer tidak
ada");
}
} catch (Exception ex){
JOptionPane.showMessageDialog(null,"Tidak dapat membuka
tabel TbCustomer\n"+ex,"Kesalahan",JOptionPane.ERROR_MESSAGE);
}
}
/*selesai mencari data customer*/
}
}
});
try {
cn = DriverManager.getConnection(StringConnection);
} catch (Exception ex) {
JDBC_Err=true;
JOptionPane.showMessageDialog(null,"Koneksi ke database
DbTokoABC gagal\n"+ex,"Kesalahan",JOptionPane.ERROR_MESSAGE);
}
if (!JDBC_Err){
try {
cn = DriverManager.getConnection(StringConnection);
String SQLStatemen = "Select TbDetilPenjualan.NoNota,
TbPenjualan.KodeCustomer,TbCustomer.NamaCustomer,"
+"TbDetilPenjualan.KodeBarang,TbBarang.NamaBarang,
TbDetilPenjualan.Harga, TbDetilPenjualan.Qty,"
+"(TbDetilPenjualan.Harga*TbDetilPenjualan.Qty) as
Subtotal from TbDetilPenjualan inner join "
+"TbPenjualan on
TbDetilPenjualan.NoNota=TbPenjualan.NoNota inner join TbCustomer on "
page 11 of 52
Materi Pemrograman I (Pertemuan XVIII) Universitas Pamulang
+"TbPenjualan.KodeCustomer=TbCustomer.KodeCustomer inner
join TbBarang on "
+"TbDetilPenjualan.KodeBarang=TbBarang.KodeBarang where
TbDetilPenjualan.NoNota='"
+TxtNoNotaJual.getText()+"'";
Statement sta = cn.createStatement();
ResultSet rset = sta.executeQuery(SQLStatemen);
rset.next();
if (rset.getRow()>0){
TxtKodeCustomerJual.setText(rset.getString("KodeCustomer"));
TxtNamaCustomerJual.setText(rset.getString("NamaCustomer"));
do {
ModelTabelPenjualan.insertRow(ModelTabelPenjualan.getRowCount(),new
Object[]{ModelTabelPenjualan.getRowCount()+1,rset.getString("KodeBarang"),r
set.getString("NamaBarang"),rset.getString("Harga"),rset.getString("Qty"),r
set.getString("SubTotal")});
} while (rset.next());
sta.close();
rset.close();
int Total=0,Bayar=0,SubTtl=0;
int i;
for (i=0;i<TabelPenjualan.getRowCount();i++){
SubTtl=0;
try {
SubTtl=Integer.parseInt((String)TabelPenjualan.getModel().getValueAt(i,5));
} catch (Exception ex){
}
Total=Total+SubTtl;
}
TxtTotalJual.setText(Integer.toString(Total));
Bayar=0;
try {
Bayar=Integer.parseInt(TxtBayarJual.getText());
} catch (Exception ex){
}
TxtKembaliJual.setText(Integer.toString(Bayar-Total));
} else {
sta.close();
rset.close();
ClearFormPenjualan();
JOptionPane.showMessageDialog(null,"No. Nota belum ada");
}
} catch (Exception ex){
JOptionPane.showMessageDialog(null,"Tidak dapat membuka
tabel TbPenjualan\n"+ex,"Kesalahan",JOptionPane.ERROR_MESSAGE);
}
}
try {
page 12 of 52
Materi Pemrograman I (Pertemuan XVIII) Universitas Pamulang
TxtSubTotalJual.setText(Integer.toString(Integer.parseInt(TxtHargaBarangJua
l.getText())*Integer.parseInt(TxtJumlahJual.getText())));
} catch (Exception ex){
TxtSubTotalJual.setText("0");
}
/*selesai mencari data barang*/
}
}
});
try {
cn = DriverManager.getConnection(StringConnection);
} catch (Exception ex) {
JDBC_Err=true;
JOptionPane.showMessageDialog(null,"Koneksi ke database
DbTokoABC gagal\n"+ex,"Kesalahan",JOptionPane.ERROR_MESSAGE);
}
if (!JDBC_Err){
try {
cn = DriverManager.getConnection(StringConnection);
String SQLStatemen = "Select * from TbBarang where
KodeBarang='"+TxtKodeBarangJual.getText()+"'";
Statement sta = cn.createStatement();
ResultSet rset = sta.executeQuery(SQLStatemen);
rset.next();
if (rset.getRow()>0){
TxtNamaBarangJual.setText(rset.getString("NamaBarang"));
TxtHargaBarangJual.setText(rset.getString("HargaBarang"));
sta.close();
rset.close();
} else {
sta.close();
rset.close();
TxtNamaBarangJual.setText("");
TxtHargaBarangJual.setText("");
JOptionPane.showMessageDialog(null,"Kode barang tidak
ada");
}
} catch (Exception ex){
JOptionPane.showMessageDialog(null,"Tidak dapat membuka
tabel TbBarang\n"+ex,"Kesalahan",JOptionPane.ERROR_MESSAGE);
}
}
try {
TxtSubTotalJual.setText(Integer.toString(Integer.parseInt(TxtHargaBarangJua
l.getText())*Integer.parseInt(TxtJumlahJual.getText())));
} catch (Exception ex){
page 13 of 52
Materi Pemrograman I (Pertemuan XVIII) Universitas Pamulang
TxtSubTotalJual.setText("0");
}
/*selesai mencari data barang*/
}
}
});
try {
cn = DriverManager.getConnection(StringConnection);
} catch (Exception ex) {
JDBC_Err=true;
JOptionPane.showMessageDialog(null,"Koneksi ke database
DbTokoABC gagal\n"+ex,"Kesalahan",JOptionPane.ERROR_MESSAGE);
}
if (!JDBC_Err){
try {
cn = DriverManager.getConnection(StringConnection);
String SQLStatemen = "Select * from TbCustomer where
KodeCustomer='"+TxtKodeCustomerJual.getText()+"'";
Statement sta = cn.createStatement();
ResultSet rset = sta.executeQuery(SQLStatemen);
rset.next();
if (rset.getRow()>0){
TxtNamaCustomerJual.setText(rset.getString("NamaCustomer"));
sta.close();
rset.close();
} else {
sta.close();
rset.close();
TxtNamaCustomerJual.setText("");
JOptionPane.showMessageDialog(null,"Kode customer tidak
ada");
}
} catch (Exception ex){
JOptionPane.showMessageDialog(null,"Tidak dapat membuka
tabel TbCustomer\n"+ex,"Kesalahan",JOptionPane.ERROR_MESSAGE);
}
}
/*selesai mencari data customer*/
}
}
});
page 14 of 52
Materi Pemrograman I (Pertemuan XVIII) Universitas Pamulang
TxtSubTotalJual.setText(Integer.toString(Integer.parseInt(TxtHargaBarangJua
l.getText())*Integer.parseInt(TxtJumlahJual.getText())));
} catch (Exception ex){
TxtSubTotalJual.setText("0");
}
}
});
try {
TxtKembaliJual.setText(Integer.toString(Integer.parseInt(TxtBayarJual.getTe
xt())-Total));
} catch (Exception ex){
TxtKembaliJual.setText("0");
}
}
});
setContentPane(frmMDI);
page 15 of 52
Materi Pemrograman I (Pertemuan XVIII) Universitas Pamulang
frmJualDaftarBarang.setLocation(dimensi.width/2-
frmJualDaftarBarang.getWidth()/2,dimensi.height/2-
frmJualDaftarBarang.getHeight()/2);
frmJualDaftarBarang.setDefaultCloseOperation(DISPOSE_ON_CLOSE);
frmJualDaftarBarang.setAlwaysOnTop(true);
TabelDaftarBarang.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
TabelDaftarBarang.setEnabled(true);
ScrollBarDaftarBarang.setBounds(1,1,frmDaftarBarang.getWidth()-
10,frmDaftarBarang.getHeight()-100);
pnlDaftarBarang.add(ScrollBarDaftarBarang);
/*Menampilkan tombol di form DaftarBarang*/
TblDaftarBarangPilih.setBounds((frmDaftarBarang.getWidth()/2)-
100,frmDaftarBarang.getHeight()-85,80,30);
pnlDaftarBarang.add(TblDaftarBarangPilih);
TblDaftarBarangBatal.setBounds((frmDaftarBarang.getWidth()/2)+20,frmDaftarB
arang.getHeight()-85,80,30);
pnlDaftarBarang.add(TblDaftarBarangBatal);
pnlDaftarBarang.setLayout(null);
frmDaftarBarang.add(pnlDaftarBarang);
page 16 of 52
Materi Pemrograman I (Pertemuan XVIII) Universitas Pamulang
pnlBarang.add(TxtKodeBarang);
LblNamaBarang.setBounds(30,45,80,20);
pnlBarang.add(LblNamaBarang);
TxtNamaBarang.setBounds(120,45,200,20);
pnlBarang.add(TxtNamaBarang);
LblSatuanBarang.setBounds(30,70,80,20);
pnlBarang.add(LblSatuanBarang);
TxtSatuanBarang.setBounds(120,70,140,20);
pnlBarang.add(TxtSatuanBarang);
LblHargaBarang.setBounds(30,95,80,20);
pnlBarang.add(LblHargaBarang);
TxtHargaBarang.setBounds(120,95,100,20);
pnlBarang.add(TxtHargaBarang);
LblStockBarang.setBounds(30,120,80,20);
pnlBarang.add(LblStockBarang);
TxtStockBarang.setBounds(120,120,60,20);
pnlBarang.add(TxtStockBarang);
/*Menampilkan tombol di form Barang*/
TblBarangDaftar.setBounds(225,16,70,25);
pnlBarang.add(TblBarangDaftar);
TblBarangDelete.setBounds(50,180,80,30);
pnlBarang.add(TblBarangDelete);
TblBarangSave.setBounds(140,180,80,30);
pnlBarang.add(TblBarangSave);
TblBarangCancel.setBounds(230,180,80,30);
pnlBarang.add(TblBarangCancel);
pnlBarang.setLayout(null);
frmBarang.add(pnlBarang);
TabelDaftarCustomer.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
TabelDaftarCustomer.setEnabled(true);
ScrollBarDaftarCustomer.setBounds(1,1,frmDaftarCustomer.getWidth()-
10,frmDaftarCustomer.getHeight()-100);
pnlDaftarCustomer.add(ScrollBarDaftarCustomer);
/*Menampilkan tombol di form DaftarCustomer*/
page 17 of 52
Materi Pemrograman I (Pertemuan XVIII) Universitas Pamulang
TblDaftarCustomerPilih.setBounds((frmDaftarCustomer.getWidth()/2)-
100,frmDaftarCustomer.getHeight()-85,80,30);
pnlDaftarCustomer.add(TblDaftarCustomerPilih);
TblDaftarCustomerBatal.setBounds((frmDaftarCustomer.getWidth()/2)+20,frmDaf
tarCustomer.getHeight()-85,80,30);
pnlDaftarCustomer.add(TblDaftarCustomerBatal);
pnlDaftarCustomer.setLayout(null);
frmDaftarCustomer.add(pnlDaftarCustomer);
page 18 of 52
Materi Pemrograman I (Pertemuan XVIII) Universitas Pamulang
ColumnTabelJualDaftarBarang.setPreferredWidth(100);
TabelJualDaftarBarang.setSelectionMode(ListSelectionModel.SINGLE_SELECTION)
;
TabelJualDaftarBarang.setEnabled(true);
ScrollBarJualDaftarBarang.setBounds(1,1,frmJualDaftarBarang.getWidth()-
10,frmJualDaftarBarang.getHeight()-100);
pnlJualDaftarBarang.add(ScrollBarJualDaftarBarang);
/*Menampilkan tombol di form JualDaftarBarang*/
TblJualDaftarBarangPilih.setBounds((frmJualDaftarBarang.getWidth()/2)-
100,frmJualDaftarBarang.getHeight()-85,80,30);
pnlJualDaftarBarang.add(TblJualDaftarBarangPilih);
TblJualDaftarBarangBatal.setBounds((frmJualDaftarBarang.getWidth()/2)+20,fr
mJualDaftarBarang.getHeight()-85,80,30);
pnlJualDaftarBarang.add(TblJualDaftarBarangBatal);
pnlJualDaftarBarang.setLayout(null);
frmJualDaftarBarang.add(pnlJualDaftarBarang);
ScrollBarJualDaftarCustomer.getViewport().add(TabelJualDaftarCustomer);
// Disable auto resizing
TabelJualDaftarCustomer.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
// set Column width
TableColumn ColumnTabelJualDaftarCustomer =
TabelJualDaftarCustomer.getColumnModel().getColumn(0);
ColumnTabelJualDaftarCustomer.setPreferredWidth(80);
ColumnTabelJualDaftarCustomer =
TabelJualDaftarCustomer.getColumnModel().getColumn(1);
ColumnTabelJualDaftarCustomer.setPreferredWidth(230);
ColumnTabelJualDaftarCustomer =
TabelJualDaftarCustomer.getColumnModel().getColumn(2);
ColumnTabelJualDaftarCustomer.setPreferredWidth(100);
TabelJualDaftarCustomer.setSelectionMode(ListSelectionModel.SINGLE_SELECTIO
N);
TabelJualDaftarCustomer.setEnabled(true);
ScrollBarJualDaftarCustomer.setBounds(1,1,frmJualDaftarCustomer.getWidth()-
10,frmJualDaftarCustomer.getHeight()-100);
pnlJualDaftarCustomer.add(ScrollBarJualDaftarCustomer);
/*Menampilkan tombol di form JualDaftarCustomer*/
page 19 of 52
Materi Pemrograman I (Pertemuan XVIII) Universitas Pamulang
TblJualDaftarCustomerPilih.setBounds((frmJualDaftarCustomer.getWidth()/2)-
100,frmJualDaftarCustomer.getHeight()-85,80,30);
pnlJualDaftarCustomer.add(TblJualDaftarCustomerPilih);
TblJualDaftarCustomerBatal.setBounds((frmJualDaftarCustomer.getWidth()/2)+2
0,frmJualDaftarCustomer.getHeight()-85,80,30);
pnlJualDaftarCustomer.add(TblJualDaftarCustomerBatal);
pnlJualDaftarCustomer.setLayout(null);
frmJualDaftarCustomer.add(pnlJualDaftarCustomer);
TblUserAccountFullAll.setBounds(40,270,80,30);
pnlUserAccount.add(TblUserAccountFullAll);
TblUserAccountViewAll.setBounds(140,270,80,30);
pnlUserAccount.add(TblUserAccountViewAll);
TblUserAccountDenyAll.setBounds(240,270,80,30);
pnlUserAccount.add(TblUserAccountDenyAll);
pnlUserAccount.setLayout(null);
frmUserAccount.add(pnlUserAccount);
/*Membuat tabel di User Account*/
UserAccountTabel.setModel(UserAccountModelTabel);
UserAccountScrollBar.getViewport().add(UserAccountTabel);
// Disable auto resizing
UserAccountTabel.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
// set Column width
TableColumn UserAccountTabelColumn =
UserAccountTabel.getColumnModel().getColumn(0);
UserAccountTabelColumn.setPreferredWidth(100);
UserAccountTabelColumn =
UserAccountTabel.getColumnModel().getColumn(1);
UserAccountTabelColumn.setPreferredWidth(150);
UserAccountTabelColumn =
UserAccountTabel.getColumnModel().getColumn(2);
UserAccountTabelColumn.setPreferredWidth(80);
UserAccountTabel.setEnabled(true);
UserAccountScrollBar.setBounds(20,100,350,160);
pnlUserAccount.add(UserAccountScrollBar);
page 20 of 52
Materi Pemrograman I (Pertemuan XVIII) Universitas Pamulang
MenuPopupHakAkses.add(MenuHakAksesView);
MenuPopupHakAkses.add(MenuHakAksesDeny);
MenuHakAksesFull.addActionListener(new MenuHakAksesHandler());
MenuHakAksesView.addActionListener(new MenuHakAksesHandler());
MenuHakAksesDeny.addActionListener(new MenuHakAksesHandler());
TblPenjualanNoBaru.setBounds(190,7,85,25);
pnlPenjualan.add(TblPenjualanNoBaru);
pnlCustomerJual.setBorder(BorderFactory.createTitledBorder("Customer"));
pnlCustomerJual.setBounds(20,35,350,80);
LblKodeCustomerJual.setBounds(10,20,95,20);
pnlCustomerJual.add(LblKodeCustomerJual);
TxtKodeCustomerJual.setBounds(105,20,100,20);
pnlCustomerJual.add(TxtKodeCustomerJual);
LblNamaCustomerJual.setBounds(10,45,95,20);
pnlCustomerJual.add(LblNamaCustomerJual);
TxtNamaCustomerJual.setBounds(105,45,200,20);
pnlCustomerJual.add(TxtNamaCustomerJual);
TxtNamaCustomerJual.setEditable(false);
TblJualCustomerDaftar.setBounds(210,16,70,25);
pnlCustomerJual.add(TblJualCustomerDaftar);
pnlCustomerJual.setLayout(null);
pnlPenjualan.add(pnlCustomerJual);
page 21 of 52
Materi Pemrograman I (Pertemuan XVIII) Universitas Pamulang
LblKodeBarangJual.setBounds(10,20,90,20);
pnlDetilPenjualan.add(LblKodeBarangJual);
TxtKodeBarangJual.setBounds(90,20,100,20);
pnlDetilPenjualan.add(TxtKodeBarangJual);
LblNamaBarangJual.setBounds(10,45,90,20);
pnlDetilPenjualan.add(LblNamaBarangJual);
TxtNamaBarangJual.setBounds(90,45,200,20);
pnlDetilPenjualan.add(TxtNamaBarangJual);
LblHargaBarangJual.setBounds(300,20,50,20);
pnlDetilPenjualan.add(LblHargaBarangJual);
TxtHargaBarangJual.setBounds(350,20,100,20);
pnlDetilPenjualan.add(TxtHargaBarangJual);
LblJumlahJual.setBounds(300,45,50,20);
pnlDetilPenjualan.add(LblJumlahJual);
TxtJumlahJual.setBounds(350,45,60,20);
pnlDetilPenjualan.add(TxtJumlahJual);
LblSubTotalJual.setBounds(460,20,60,20);
pnlDetilPenjualan.add(LblSubTotalJual);
TxtSubTotalJual.setBounds(520,20,100,20);
pnlDetilPenjualan.add(TxtSubTotalJual);
TblJualBarangDaftar.setBounds(195,16,70,25);
pnlDetilPenjualan.add(TblJualBarangDaftar);
TxtNamaBarangJual.setEditable(false);
TxtHargaBarangJual.setEditable(false);
TxtSubTotalJual.setEditable(false);
TblPenjualanTambah.setBounds(520,45,80,25);
pnlDetilPenjualan.add(TblPenjualanTambah);
page 22 of 52
Materi Pemrograman I (Pertemuan XVIII) Universitas Pamulang
TabelPenjualan.getColumnModel().getColumn(3).setCellRenderer(
rightRenderer );
TabelPenjualan.getColumnModel().getColumn(4).setCellRenderer(
rightRenderer );
TabelPenjualan.getColumnModel().getColumn(5).setCellRenderer(
rightRenderer );
TabelPenjualan.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
TabelPenjualan.setEnabled(true);
ScrollBarPenjualan.setBounds(5,80,620,145);
pnlDetilPenjualan.add(ScrollBarPenjualan);
if (TblPilih.getText().equals("Delete")) {
if (TabelPenjualan.getSelectedRow()>=0){
ModelTabelPenjualan.removeRow(TabelPenjualan.getSelectedRow());
int i;
for (i=0;i<TabelPenjualan.getRowCount();i++){
TabelPenjualan.setValueAt(i+1,i,0);
}
}
}
}
});
pnlDetilPenjualan.setLayout(null);
pnlPenjualan.add(pnlDetilPenjualan);
page 23 of 52
Materi Pemrograman I (Pertemuan XVIII) Universitas Pamulang
LblKembaliJual.setBounds(320,430,80,20);
pnlPenjualan.add(LblKembaliJual);
TxtKembaliJual.setBounds(400,430,100,20);
pnlPenjualan.add(TxtKembaliJual);
TxtTotalJual.setEditable(false);
TxtKembaliJual.setEditable(false);
TblPenjualanSave.setBounds(540,370,80,40);
pnlPenjualan.add(TblPenjualanSave);
TblPenjualanCancel.setBounds(540,420,80,30);
pnlPenjualan.add(TblPenjualanCancel);
pnlPenjualan.setLayout(null);
frmPenjualan.add(pnlPenjualan);
TblLoginLogin.setBounds(80,100,80,30);
pnlLogin.add(TblLoginLogin);
TblLoginCancel.setBounds(180,100,80,30);
pnlLogin.add(TblLoginCancel);
pnlLogin.setLayout(null);
frmLogin.add(pnlLogin);
setJMenuBar(MenuBar);
setVisible(true);
}
page 24 of 52
Materi Pemrograman I (Pertemuan XVIII) Universitas Pamulang
if (M.getText().equals("Barang")) {
TblBarangSave.setEnabled(HakAksesUserAktif.substring(0,1).equals("1"));
TblBarangDelete.setEnabled(HakAksesUserAktif.substring(0,1).equals("1
"));
frmBarang.setVisible(true);
} else if (M.getText().equals("Customer")) {
TblCustomerSave.setEnabled(HakAksesUserAktif.substring(1,2).equals("1"));
TblCustomerDelete.setEnabled(HakAksesUserAktif.substring(1,2).equals(
"1"));
frmCustomer.setVisible(true);
} else if (M.getText().equals("User Account")) {
TxtIDUserUserAccount.setText(IDUserAktif);
TxtNamaUserUserAccount.setText(NamaUserAktif);
int i;
for (i=0;i<4;i++){
if (HakAksesUserAktif.substring(i,i+1).equals("1")){
UserAccountTabel.setValueAt("Full",i,2);
} else if (HakAksesUserAktif.substring(i,i+1).equals("2")){
UserAccountTabel.setValueAt("View",i,2);
} else {
UserAccountTabel.setValueAt("Deny",i,2);
}
}
TxtIDUserUserAccount.setEnabled(HakAksesUserAktif.substring(2,3).equals("1"
));
TblUserAccountSave.setEnabled(HakAksesUserAktif.substring(2,3).equals("1"))
;
TblUserAccountDelete.setEnabled(HakAksesUserAktif.substring(2,3).equa
ls("1"));
frmUserAccount.setVisible(true);
} else if (M.getText().equals("Penjualan")) {
TblPenjualanSave.setEnabled(HakAksesUserAktif.substring(3,4).equals("1"));
frmPenjualan.setVisible(true);
} else if (M==MenuLogin) {
if (M.getText().equals("Login")){
frmLogin.setBounds((frmMDI.getWidth()/2)-
(frmLogin.getWidth()/2),(frmMDI.getHeight()/2)-
(frmLogin.getHeight()/2),frmLogin.getWidth(),frmLogin.getHeight());
frmLogin.setVisible(true);
} else {
MenuLogin.setText("Login");
/*Disable semua menu*/
MenuBarang.setEnabled(false);
MenuCustomer.setEnabled(false);
MenuUserAccount.setEnabled(false);
MenuPenjualan.setEnabled(false);
page 25 of 52
Materi Pemrograman I (Pertemuan XVIII) Universitas Pamulang
frmUserAccount.setVisible(false);
frmPenjualan.setVisible(false);
}
} else if (M.getText().equals("Exit")) {
dispose();
}
}
}
if (UserAccountTabel.getSelectedRow()>=0){
if (TblPilih==MenuHakAksesFull) {
UserAccountTabel.setValueAt("Full",UserAccountTabel.getSelectedRow(),2);
} else if (TblPilih==MenuHakAksesView) {
UserAccountTabel.setValueAt("View",UserAccountTabel.getSelectedRow(),2);
} else if (TblPilih==MenuHakAksesDeny) {
UserAccountTabel.setValueAt("Deny",UserAccountTabel.getSelectedRow(),2);
}
}
}
}
page 26 of 52
Materi Pemrograman I (Pertemuan XVIII) Universitas Pamulang
if (TblPilih.getText().equals("Pilih")) {
if (TabelDaftarBarang.getSelectedRow()>=0){
TxtKodeBarang.setText((String)TabelDaftarBarang.getModel().getValueAt(Tabel
DaftarBarang.getSelectedRow(),0));
frmDaftarBarang.setVisible(false);
frmDaftarBarang.dispose();
if (!JDBC_Err){
try {
cn = DriverManager.getConnection(StringConnection);
String SQLStatemen = "Select * from TbBarang where
KodeBarang='"+TxtKodeBarang.getText()+"'";
Statement sta = cn.createStatement();
ResultSet rset = sta.executeQuery(SQLStatemen);
rset.next();
if (rset.getRow()>0){
TxtNamaBarang.setText(rset.getString("NamaBarang"));
TxtSatuanBarang.setText(rset.getString("SatuanBarang"));
TxtHargaBarang.setText(rset.getString("HargaBarang"));
TxtStockBarang.setText(rset.getString("StockBarang"));
sta.close();
rset.close();
} else {
sta.close();
rset.close();
ClearFormBarang();
JOptionPane.showMessageDialog(null,"Kode barang tidak
ada");
}
} catch (Exception ex){
JOptionPane.showMessageDialog(null,"Tidak dapat membuka
tabel TbBarang\n"+ex,"Kesalahan",JOptionPane.ERROR_MESSAGE);
}
}
/*selesai mencari data barang*/
} else {
JOptionPane.showMessageDialog(null,"Belum ada yang dipilih, klik
item di tabel");
}
} else if (TblPilih.getText().equals("Batal")) {
frmDaftarBarang.setVisible(false);
frmDaftarBarang.dispose();
}
}
}
page 27 of 52
Materi Pemrograman I (Pertemuan XVIII) Universitas Pamulang
if (TblPilih.getText().equals("Pilih")) {
if (TabelDaftarCustomer.getSelectedRow()>=0){
TxtKodeCustomer.setText((String)TabelDaftarCustomer.getModel().getValueAt(T
abelDaftarCustomer.getSelectedRow(),0));
frmDaftarCustomer.setVisible(false);
frmDaftarCustomer.dispose();
if (!JDBC_Err){
try {
cn = DriverManager.getConnection(StringConnection);
String SQLStatemen = "Select * from TbCustomer where
KodeCustomer='"+TxtKodeCustomer.getText()+"'";
Statement sta = cn.createStatement();
ResultSet rset = sta.executeQuery(SQLStatemen);
rset.next();
if (rset.getRow()>0){
TxtNamaCustomer.setText(rset.getString("NamaCustomer"));
TxtAlamatCustomer.setText(rset.getString("AlamatCustomer"));
TxtNoTeleponCustomer.setText(rset.getString("NoTelepon"));
TxtEmailCustomer.setText(rset.getString("Email"));
sta.close();
rset.close();
} else {
sta.close();
rset.close();
ClearFormCustomer();
JOptionPane.showMessageDialog(null,"Kode customer tidak
ada");
}
} catch (Exception ex){
JOptionPane.showMessageDialog(null,"Tidak dapat membuka
tabel TbCustomer\n"+ex,"Kesalahan",JOptionPane.ERROR_MESSAGE);
}
}
/*selesai mencari data customer*/
} else {
JOptionPane.showMessageDialog(null,"Belum ada yang dipilih, klik
item di tabel");
}
} else if (TblPilih.getText().equals("Batal")) {
page 28 of 52
Materi Pemrograman I (Pertemuan XVIII) Universitas Pamulang
frmDaftarCustomer.setVisible(false);
frmDaftarCustomer.dispose();
}
}
}
if (TblPilih.getText().equals("Pilih")) {
if (TabelJualDaftarBarang.getSelectedRow()>=0){
TxtKodeBarangJual.setText((String)TabelJualDaftarBarang.getModel().getValue
At(TabelJualDaftarBarang.getSelectedRow(),0));
frmJualDaftarBarang.setVisible(false);
frmJualDaftarBarang.dispose();
if (!JDBC_Err){
try {
cn = DriverManager.getConnection(StringConnection);
String SQLStatemen = "Select * from TbBarang where
KodeBarang='"+TxtKodeBarangJual.getText()+"'";
Statement sta = cn.createStatement();
ResultSet rset = sta.executeQuery(SQLStatemen);
rset.next();
if (rset.getRow()>0){
TxtNamaBarangJual.setText(rset.getString("NamaBarang"));
TxtHargaBarangJual.setText(rset.getString("HargaBarang"));
sta.close();
rset.close();
} else {
sta.close();
rset.close();
ClearFormBarang();
JOptionPane.showMessageDialog(null,"Kode barang tidak
ada");
}
} catch (Exception ex){
JOptionPane.showMessageDialog(null,"Tidak dapat membuka
tabel TbBarang\n"+ex,"Kesalahan",JOptionPane.ERROR_MESSAGE);
}
}
/*selesai mencari data barang*/
try {
page 29 of 52
Materi Pemrograman I (Pertemuan XVIII) Universitas Pamulang
TxtSubTotalJual.setText(Integer.toString(Integer.parseInt(TxtHargaBarangJua
l.getText())*Integer.parseInt(TxtJumlahJual.getText())));
} catch (Exception ex){
TxtSubTotalJual.setText("0");
}
} else {
JOptionPane.showMessageDialog(null,"Belum ada yang dipilih, klik
item di tabel");
}
} else if (TblPilih.getText().equals("Batal")) {
frmJualDaftarBarang.setVisible(false);
frmJualDaftarBarang.dispose();
}
}
}
if (TblPilih.getText().equals("Pilih")) {
if (TabelJualDaftarCustomer.getSelectedRow()>=0){
TxtKodeCustomerJual.setText((String)TabelJualDaftarCustomer.getModel().getV
alueAt(TabelJualDaftarCustomer.getSelectedRow(),0));
frmJualDaftarCustomer.setVisible(false);
frmJualDaftarCustomer.dispose();
if (!JDBC_Err){
try {
cn = DriverManager.getConnection(StringConnection);
String SQLStatemen = "Select * from TbCustomer where
KodeCustomer='"+TxtKodeCustomerJual.getText()+"'";
Statement sta = cn.createStatement();
ResultSet rset = sta.executeQuery(SQLStatemen);
rset.next();
if (rset.getRow()>0){
TxtNamaCustomerJual.setText(rset.getString("NamaCustomer"));
sta.close();
rset.close();
} else {
sta.close();
rset.close();
page 30 of 52
Materi Pemrograman I (Pertemuan XVIII) Universitas Pamulang
ClearFormCustomer();
JOptionPane.showMessageDialog(null,"Kode customer tidak
ada");
}
} catch (Exception ex){
JOptionPane.showMessageDialog(null,"Tidak dapat membuka
tabel TbCustomer\n"+ex,"Kesalahan",JOptionPane.ERROR_MESSAGE);
}
}
/*selesai mencari data customer*/
} else {
JOptionPane.showMessageDialog(null,"Belum ada yang dipilih, klik
item di tabel");
}
} else if (TblPilih.getText().equals("Batal")) {
frmJualDaftarCustomer.setVisible(false);
frmJualDaftarCustomer.dispose();
}
}
}
if (TblPilih.getText().equals("Daftar")) {
/*Mulai mencari data barang*/
Connection cn = null;
try {
cn = DriverManager.getConnection(StringConnection);
} catch (Exception ex) {
JDBC_Err=true;
JOptionPane.showMessageDialog(null,"Koneksi ke database
DbTokoABC gagal\n"+ex,"Kesalahan",JOptionPane.ERROR_MESSAGE);
}
if (!JDBC_Err){
try {
cn = DriverManager.getConnection(StringConnection);
String SQLStatemen = "Select KodeBarang,NamaBarang,
SatuanBarang from TbBarang order by NamaBarang";
Statement sta = cn.createStatement();
ResultSet rset = sta.executeQuery(SQLStatemen);
ModelTabelDaftarBarang.setRowCount(0);
while (rset.next()){
ModelTabelDaftarBarang.insertRow(ModelTabelDaftarBarang.getRowCount(),new
Object[]{rset.getString("KodeBarang"),rset.getString("NamaBarang"),
rset.getString("SatuanBarang")});
}
sta.close();
rset.close();
} catch (Exception ex){
JOptionPane.showMessageDialog(null,"Tidak dapat membuka tabel
TbBarang\n"+ex,"Kesalahan",JOptionPane.ERROR_MESSAGE);
}
page 31 of 52
Materi Pemrograman I (Pertemuan XVIII) Universitas Pamulang
try {
cn = DriverManager.getConnection(StringConnection);
} catch (Exception ex) {
JDBC_Err=true;
JOptionPane.showMessageDialog(null,"Koneksi ke database
DbTokoABC gagal\n"+ex,"Kesalahan",JOptionPane.ERROR_MESSAGE);
}
if (!JDBC_Err){
try {
cn = DriverManager.getConnection(StringConnection);
String SQLStatemen = "Select * from TbBarang where
KodeBarang='"+TxtKodeBarang.getText()+"'";
Statement sta = cn.createStatement();
ResultSet rset = sta.executeQuery(SQLStatemen);
rset.next();
if (rset.getRow()>0){
sta.close();
rset.close();
if (simpan==1){
TxtKodeBarang.setText("");
ClearFormBarang();
JOptionPane.showMessageDialog(null,"Sudah dihapus");
} else {
JOptionPane.showMessageDialog(null,"Gagal menghapus data
barang","Kesalahan",JOptionPane.ERROR_MESSAGE);
}
} else {
sta.close();
rset.close();
try {
cn = DriverManager.getConnection(StringConnection);
} catch (Exception ex) {
page 32 of 52
Materi Pemrograman I (Pertemuan XVIII) Universitas Pamulang
JDBC_Err=true;
JOptionPane.showMessageDialog(null,"Koneksi ke database
DbTokoABC gagal\n"+ex,"Kesalahan",JOptionPane.ERROR_MESSAGE);
}
if (!JDBC_Err){
try {
cn = DriverManager.getConnection(StringConnection);
String SQLStatemen = "Select * from TbBarang where
KodeBarang='"+TxtKodeBarang.getText()+"'";
Statement sta = cn.createStatement();
ResultSet rset = sta.executeQuery(SQLStatemen);
rset.next();
if (rset.getRow()>0){
sta.close();
rset.close();
Object[] arrOpsi = {"Ya","Tidak"};
int pilih=JOptionPane.showOptionDialog(null,"Kode Barang
sudah ada\nApakah data diupdate?","Konfirmasi",JOptionPane.YES_NO_OPTION,
JOptionPane.QUESTION_MESSAGE,null,arrOpsi,arrOpsi[0]);
if (pilih==0){
SQLStatemen = "update TbBarang set NamaBarang='"+
TxtNamaBarang.getText()+
"', SatuanBarang='"+TxtSatuanBarang.getText()+
"', HargaBarang='"+TxtHargaBarang.getText()+
"', StockBarang='"+TxtStockBarang.getText()+
"' where KodeBarang='"+TxtKodeBarang.getText()+"'";
sta = cn.createStatement();
int simpan = sta.executeUpdate(SQLStatemen);
if (simpan==1){
TxtKodeBarang.setText("");
ClearFormBarang();
JOptionPane.showMessageDialog(null,"Sudah tersimpan");
} else {
JOptionPane.showMessageDialog(null,"Gagal menyimpan data
barang","Kesalahan",JOptionPane.ERROR_MESSAGE);
}
}
} else {
sta.close();
rset.close();
if (simpan==1){
TxtKodeBarang.setText("");
ClearFormBarang();
JOptionPane.showMessageDialog(null,"Sudah tersimpan");
} else {
JOptionPane.showMessageDialog(null,"Gagal menyimpan data
barang","Kesalahan",JOptionPane.ERROR_MESSAGE);
}
}
} catch (Exception ex){
page 33 of 52
Materi Pemrograman I (Pertemuan XVIII) Universitas Pamulang
if (TblPilih.getText().equals("Daftar")) {
/*Mulai mencari data Customer*/
Connection cn = null;
try {
cn = DriverManager.getConnection(StringConnection);
} catch (Exception ex) {
JDBC_Err=true;
JOptionPane.showMessageDialog(null,"Koneksi ke database
DbTokoABC gagal\n"+ex,"Kesalahan",JOptionPane.ERROR_MESSAGE);
}
if (!JDBC_Err){
try {
cn = DriverManager.getConnection(StringConnection);
String SQLStatemen = "Select KodeCustomer,NamaCustomer,
AlamatCustomer from TbCustomer order by NamaCustomer";
Statement sta = cn.createStatement();
ResultSet rset = sta.executeQuery(SQLStatemen);
ModelTabelDaftarCustomer.setRowCount(0);
while (rset.next()){
ModelTabelDaftarCustomer.insertRow(ModelTabelDaftarCustomer.getRowCount(),
new Object[]{rset.getString("KodeCustomer"),
rset.getString("NamaCustomer"),rset.getString("AlamatCustomer")});
}
sta.close();
rset.close();
} catch (Exception ex){
JOptionPane.showMessageDialog(null,"Tidak dapat membuka tabel
TbCustomer\n"+ex,"Kesalahan",JOptionPane.ERROR_MESSAGE);
}
}
try {
cn = DriverManager.getConnection(StringConnection);
page 34 of 52
Materi Pemrograman I (Pertemuan XVIII) Universitas Pamulang
if (!JDBC_Err){
try {
cn = DriverManager.getConnection(StringConnection);
String SQLStatemen = "Select * from TbCustomer where
KodeCustomer='"+TxtKodeCustomer.getText()+"'";
Statement sta = cn.createStatement();
ResultSet rset = sta.executeQuery(SQLStatemen);
rset.next();
if (rset.getRow()>0){
sta.close();
rset.close();
if (simpan==1){
TxtKodeCustomer.setText("");
ClearFormCustomer();
JOptionPane.showMessageDialog(null,"Sudah dihapus");
} else {
JOptionPane.showMessageDialog(null,"Gagal menghapus data
customer","Kesalahan",JOptionPane.ERROR_MESSAGE);
}
} else {
sta.close();
rset.close();
JOptionPane.showMessageDialog(null,"Kode customer tidak
ada");
}
} catch (Exception ex){
JOptionPane.showMessageDialog(null,"Tidak dapat membuka tabel
TbCustomer\n"+ex,"Kesalahan",JOptionPane.ERROR_MESSAGE);
}
}
/*Selesai menghapus data Customer*/
} else if (TblPilih.getText().equals("Save")) {
/*Mulai menyimpan data Customer*/
Connection cn = null;
try {
cn = DriverManager.getConnection(StringConnection);
} catch (Exception ex) {
JDBC_Err=true;
JOptionPane.showMessageDialog(null,"Koneksi ke database
DbTokoABC gagal\n"+ex,"Kesalahan",JOptionPane.ERROR_MESSAGE);
}
if (!JDBC_Err){
try {
cn = DriverManager.getConnection(StringConnection);
String SQLStatemen = "Select * from TbCustomer where
KodeCustomer='"+TxtKodeCustomer.getText()+"'";
page 35 of 52
Materi Pemrograman I (Pertemuan XVIII) Universitas Pamulang
rset.next();
if (rset.getRow()>0){
sta.close();
rset.close();
Object[] arrOpsi = {"Ya","Tidak"};
int pilih=JOptionPane.showOptionDialog(null,"Kode customer
sudah ada\nApakah data diupdate?","Konfirmasi",JOptionPane.YES_NO_OPTION,
JOptionPane.QUESTION_MESSAGE,null,arrOpsi,arrOpsi[0]);
if (pilih==0){
SQLStatemen = "update TbCustomer set
NamaCustomer='"+TxtNamaCustomer.getText()+
"', AlamatCustomer='"+TxtAlamatCustomer.getText()+
"', NoTelepon='"+TxtNoTeleponCustomer.getText()+
"', Email='"+TxtEmailCustomer.getText()+
"' where KodeCustomer='"+
TxtKodeCustomer.getText()+"'";
sta = cn.createStatement();
int simpan = sta.executeUpdate(SQLStatemen);
if (simpan==1){
TxtKodeCustomer.setText("");
ClearFormCustomer();
JOptionPane.showMessageDialog(null,"Sudah tersimpan");
} else {
JOptionPane.showMessageDialog(null,"Gagal menyimpan data
customer","Kesalahan",JOptionPane.ERROR_MESSAGE);
}
}
} else {
sta.close();
rset.close();
SQLStatemen = "insert into TbCustomer values
('"+TxtKodeCustomer.getText()+"','"+TxtNamaCustomer.getText()+"','"+TxtAlam
atCustomer.getText()+"','"+TxtNoTeleponCustomer.getText()+"','"+TxtEmailCus
tomer.getText()+"')";
sta = cn.createStatement();
int simpan = sta.executeUpdate(SQLStatemen);
if (simpan==1){
TxtKodeCustomer.setText("");
ClearFormCustomer();
JOptionPane.showMessageDialog(null,"Sudah tersimpan");
} else {
JOptionPane.showMessageDialog(null,"Gagal menyimpan data
customer","Kesalahan",JOptionPane.ERROR_MESSAGE);
}
}
} catch (Exception ex){
JOptionPane.showMessageDialog(null,"Tidak dapat membuka tabel
TbCustomer\n"+ex,"Kesalahan",JOptionPane.ERROR_MESSAGE);
}
}
/*selesai menyimpan data Customer*/
} else if (TblPilih.getText().equals("Cancel")) {
frmCustomer.setVisible(false);
}
}
}
page 36 of 52
Materi Pemrograman I (Pertemuan XVIII) Universitas Pamulang
if (TblPilih==TblUserAccountSave) {
String bufUserID = TxtIDUserUserAccount.getText().trim();
if (bufUserID.length()>0){
/*Mulai menyimpan data User Account*/
Connection cn = null;
String bufHakAkses = "";
int i;
for (i=0;i<=(UserAccountModelTabel.getRowCount()-1);i++){
if
(((String)UserAccountTabel.getModel().getValueAt(i,2)).equals("Full")) {
bufHakAkses = bufHakAkses.concat("1");
} else if
(((String)UserAccountTabel.getModel().getValueAt(i,2)).equals("View")) {
bufHakAkses = bufHakAkses.concat("2");
} else {
bufHakAkses = bufHakAkses.concat("3");
}
}
byte[] ByteBufHakAkses=bufHakAkses.getBytes();
byte[] ByteBufUserID=bufUserID.getBytes();
for (i=0;i<10;i++){
ByteBufHakAkses[i]= (byte)(ByteBufHakAkses[i] ^
ByteBufUserID[i]);
}
bufHakAkses=bufHakAkses.concat(new String(ByteBufHakAkses));
try {
cn = DriverManager.getConnection(StringConnection);
} catch (Exception ex) {
JDBC_Err=true;
JOptionPane.showMessageDialog(null,"Koneksi ke database
DbTokoABC gagal\n"+ex,"Kesalahan",JOptionPane.ERROR_MESSAGE);
}
if (!JDBC_Err){
try {
cn = DriverManager.getConnection(StringConnection);
String SQLStatemen = "select * from TbUser where
IDUser='"+TxtIDUserUserAccount.getText()+"'";
Statement sta = cn.createStatement();
ResultSet rset = sta.executeQuery(SQLStatemen);
page 37 of 52
Materi Pemrograman I (Pertemuan XVIII) Universitas Pamulang
rset.next();
if (rset.getRow()>0){
sta.close();
rset.close();
Object[] arrOpsi = {"Ya","Tidak"};
int pilih=JOptionPane.showOptionDialog(null,"ID User sudah
ada\nApakah data
diupdate?","Konfirmasi",JOptionPane.YES_NO_OPTION,JOptionPane.QUESTION_MESS
AGE,null,arrOpsi,arrOpsi[0]);
if (pilih==0){
SQLStatemen = "update TbUser set NamaUser='"+
TxtNamaUserUserAccount.getText()+
"', HakAkses='"+bufHakAkses+
"' where IDUser='"+
TxtIDUserUserAccount.getText()+"'";
sta = cn.createStatement();
int simpan = sta.executeUpdate(SQLStatemen);
if (simpan==1){
JOptionPane.showMessageDialog(null,"Sudah diupdate");
} else {
JOptionPane.showMessageDialog(null,"Gagal meng-update
data user","Kesalahan",JOptionPane.ERROR_MESSAGE);
}
}
} else {
sta.close();
rset.close();
page 38 of 52
Materi Pemrograman I (Pertemuan XVIII) Universitas Pamulang
if (simpan==1){
JOptionPane.showMessageDialog(null,"Sudah
tersimpan");
} else {
JOptionPane.showMessageDialog(null,"Gagal
menyimpan data user","Kesalahan",JOptionPane.ERROR_MESSAGE);
}
} else {
JOptionPane.showMessageDialog(null,"Password baru
tidak sama","Kesalahan",JOptionPane.ERROR_MESSAGE);
}
}
}
}
} catch (Exception ex){
JOptionPane.showMessageDialog(null,"Tidak dapat membuka
tabel TbUserAccount\n"+ex,"Kesalahan",JOptionPane.ERROR_MESSAGE);
}
}
/*selesai menyimpan data Customer*/
} else {
JOptionPane.showMessageDialog(null,"ID user tidak boleh
kosong","Kesalahan",JOptionPane.ERROR_MESSAGE);
}
} else if (TblPilih==TblUserAccountChangePassword) {
/*Mulai ganti Password*/
JPasswordField PasswordField = new JPasswordField();
int TombolOpsi=JOptionPane.showConfirmDialog(null, PasswordField,
"Ketik Password Lama", JOptionPane.OK_CANCEL_OPTION);
if (TombolOpsi==JOptionPane.OK_OPTION){
char[] Password = PasswordField.getPassword();
String inputPassword = new String(Password);
MessageDigest md=null;
try{
md = MessageDigest.getInstance("SHA-256");
} catch (Exception ex){
JOptionPane.showMessageDialog(null,"Kesalahan pada hash SHA-
256\n"+ex,"Kesalahan",JOptionPane.ERROR_MESSAGE);
}
md.update(inputPassword.getBytes());
byte bytePassword[] = md.digest();
Connection cn = null;
try {
cn = DriverManager.getConnection(StringConnection);
} catch (Exception ex) {
JDBC_Err=true;
JOptionPane.showMessageDialog(null,"Koneksi ke database
DbTokoABC gagal\n"+ex,"Kesalahan",JOptionPane.ERROR_MESSAGE);
}
page 39 of 52
Materi Pemrograman I (Pertemuan XVIII) Universitas Pamulang
if (!JDBC_Err){
try {
cn = DriverManager.getConnection(StringConnection);
String SQLStatemen = "Select * from TbUser where
IDUser='"+TxtIDUserUserAccount.getText()+"' and
PasswordUser='"+inputPassword+"'";
Statement sta = cn.createStatement();
ResultSet rset = sta.executeQuery(SQLStatemen);
rset.next();
if (rset.getRow()>0){
sta.close();
rset.close();
sb = new StringBuffer();
for (i = 0; i < bytePassword.length; i++) {
sb.append(Integer.toString((bytePassword[i] &
0xff) + 0x100, 16).substring(1));
}
inputPassword = sb.toString();
if (simpan==1){
JOptionPane.showMessageDialog(null,"Password sudah
diganti");
} else {
JOptionPane.showMessageDialog(null,"Gagal
mengganti password","Kesalahan",JOptionPane.ERROR_MESSAGE);
}
} else {
JOptionPane.showMessageDialog(null,"Password baru
tidak sama","Kesalahan",JOptionPane.ERROR_MESSAGE);
}
}
}
} else {
sta.close();
page 40 of 52
Materi Pemrograman I (Pertemuan XVIII) Universitas Pamulang
rset.close();
JOptionPane.showMessageDialog(null,"ID User atau password
salah");
}
} catch (Exception ex){
JOptionPane.showMessageDialog(null,"Tidak dapat membuka
tabel TbUser\n"+ex,"Kesalahan",JOptionPane.ERROR_MESSAGE);
}
}
}
/*Selesai ganti Password*/
} else if (TblPilih==TblUserAccountDelete) {
/*Mulai menghapus data user*/
Connection cn = null;
try {
cn = DriverManager.getConnection(StringConnection);
} catch (Exception ex) {
JDBC_Err=true;
JOptionPane.showMessageDialog(null,"Koneksi ke database
DbTokoABC gagal\n"+ex,"Kesalahan",JOptionPane.ERROR_MESSAGE);
}
if (!JDBC_Err){
try {
cn = DriverManager.getConnection(StringConnection);
String SQLStatemen = "Select * from TbUser where
IDUser='"+TxtIDUserUserAccount.getText()+"'";
Statement sta = cn.createStatement();
ResultSet rset = sta.executeQuery(SQLStatemen);
rset.next();
if (rset.getRow()>0){
sta.close();
rset.close();
if (simpan==1){
TxtIDUserUserAccount.setText(IDUserAktif);
TxtNamaUserUserAccount.setText(NamaUserAktif);
JOptionPane.showMessageDialog(null,"Sudah dihapus");
} else {
JOptionPane.showMessageDialog(null,"Gagal menghapus data
user","Kesalahan",JOptionPane.ERROR_MESSAGE);
}
} else {
sta.close();
rset.close();
}
} catch (Exception ex){
JOptionPane.showMessageDialog(null,"Tidak dapat membuka tabel
TbUser\n"+ex,"Kesalahan",JOptionPane.ERROR_MESSAGE);
}
}
page 41 of 52
Materi Pemrograman I (Pertemuan XVIII) Universitas Pamulang
if (TblPilih==TblJualCustomerDaftar) {
/*Mulai mencari data Customer*/
Connection cn = null;
try {
cn = DriverManager.getConnection(StringConnection);
} catch (Exception ex) {
JDBC_Err=true;
JOptionPane.showMessageDialog(null,"Koneksi ke database
DbTokoABC gagal\n"+ex,"Kesalahan",JOptionPane.ERROR_MESSAGE);
}
if (!JDBC_Err){
try {
cn = DriverManager.getConnection(StringConnection);
String SQLStatemen = "Select KodeCustomer,NamaCustomer,
AlamatCustomer from TbCustomer order by NamaCustomer";
Statement sta = cn.createStatement();
ResultSet rset = sta.executeQuery(SQLStatemen);
ModelTabelJualDaftarCustomer.setRowCount(0);
while (rset.next()){
ModelTabelJualDaftarCustomer.insertRow(ModelTabelJualDaftarCustomer.getRowC
ount(),new
Object[]{rset.getString("KodeCustomer"),rset.getString("NamaCustomer"),rset
.getString("AlamatCustomer")});
}
sta.close();
rset.close();
} catch (Exception ex){
page 42 of 52
Materi Pemrograman I (Pertemuan XVIII) Universitas Pamulang
try {
cn = DriverManager.getConnection(StringConnection);
} catch (Exception ex) {
JDBC_Err=true;
JOptionPane.showMessageDialog(null,"Koneksi ke database
DbTokoABC gagal\n"+ex,"Kesalahan",JOptionPane.ERROR_MESSAGE);
}
if (!JDBC_Err){
try {
cn = DriverManager.getConnection(StringConnection);
String SQLStatemen = "Select
KodeBarang,NamaBarang,SatuanBarang from TbBarang order by NamaBarang";
Statement sta = cn.createStatement();
ResultSet rset = sta.executeQuery(SQLStatemen);
ModelTabelJualDaftarBarang.setRowCount(0);
while (rset.next()){
ModelTabelJualDaftarBarang.insertRow(ModelTabelJualDaftarBarang.getRowCount
(),new Object[]{rset.getString("KodeBarang"),
rset.getString("NamaBarang"),rset.getString("SatuanBarang")});
}
sta.close();
rset.close();
} catch (Exception ex){
JOptionPane.showMessageDialog(null,"Tidak dapat membuka tabel
TbBarang\n"+ex,"Kesalahan",JOptionPane.ERROR_MESSAGE);
}
}
try {
cn = DriverManager.getConnection(StringConnection);
} catch (Exception ex) {
JDBC_Err=true;
JOptionPane.showMessageDialog(null,"Koneksi ke database
DbTokoABC gagal\n"+ex,"Kesalahan",JOptionPane.ERROR_MESSAGE);
}
if (!JDBC_Err){
java.util.Date WaktuSekarang;
SimpleDateFormat FormatWaktu;
page 43 of 52
Materi Pemrograman I (Pertemuan XVIII) Universitas Pamulang
String tgl="",bln="",thn="",cari="";
FormatWaktu = new SimpleDateFormat ("HH:mm:ss EEEE, dd-MM-
yyyy",Locale.getDefault());
WaktuSekarang = new java.util.Date();
FormatWaktu.applyPattern("dd");
try {
tgl = FormatWaktu.format(WaktuSekarang);
} catch (NumberFormatException n) {
tgl = "00";
}
FormatWaktu.applyPattern("MM");
try {
bln = FormatWaktu.format(WaktuSekarang);
} catch (NumberFormatException n) {
bln = "00";
}
FormatWaktu.applyPattern("yy");
try {
thn = FormatWaktu.format(WaktuSekarang);
} catch (NumberFormatException n) {
thn = "00";
}
cari=thn+bln+tgl;
try {
cn = DriverManager.getConnection(StringConnection);
String SQLStatemen = "Select * from TbPenjualan where
Substring(NoNota,1,6)='" +cari+ "' order by NoNota Desc";
Statement sta = cn.createStatement();
ResultSet rset = sta.executeQuery(SQLStatemen);
rset.next();
if (rset.getRow()>0){
String NoBaru=
Integer.toString(Integer.parseInt(rset.getString("NoNota").substring(6,10))
+1);
while (NoBaru.length()<4){
NoBaru="0"+NoBaru;
}
TxtNoNotaJual.setText(cari+NoBaru);
} else {
TxtNoNotaJual.setText(cari+"0001");
}
sta.close();
rset.close();
} catch (Exception ex){
JOptionPane.showMessageDialog(null,"Tidak dapat membuka tabel
TbPenjualan\n"+ex,"Kesalahan",JOptionPane.ERROR_MESSAGE);
}
}
/*selesai membuat no. baru*/
} else if (TblPilih.getText().equals("Tambah")) {
/*Mulai menambah item penjualan*/
boolean ada=false;
int i=0;
page 44 of 52
Materi Pemrograman I (Pertemuan XVIII) Universitas Pamulang
if (ada){
TabelPenjualan.setValueAt(TxtNamaBarangJual.getText(),i,2);
TabelPenjualan.setValueAt(TxtHargaBarangJual.getText(),i,3);
TabelPenjualan.setValueAt(TxtJumlahJual.getText(),i,4);
TabelPenjualan.setValueAt(TxtSubTotalJual.getText(),i,5);
} else {
ModelTabelPenjualan.insertRow(ModelTabelPenjualan.getRowCount(),new
Object[]{ModelTabelPenjualan.getRowCount()+1,TxtKodeBarangJual.getText(),Tx
tNamaBarangJual.getText(),TxtHargaBarangJual.getText(),TxtJumlahJual.getTex
t(),TxtSubTotalJual.getText()});
}
int Total=0,SubTtl,Bayar;
for (i=0;i<TabelPenjualan.getRowCount();i++){
SubTtl=0;
try {
SubTtl=Integer.parseInt((String)TabelPenjualan.getModel().getValueAt(i,5));
} catch (Exception ex){
}
Total=Total+SubTtl;
}
TxtTotalJual.setText(Integer.toString(Total));
Bayar=0;
try {
Bayar=Integer.parseInt(TxtBayarJual.getText());
} catch (Exception ex){
}
TxtKembaliJual.setText(Integer.toString(Bayar-Total));
/*Selesai menambah item penjualan*/
} else if (TblPilih.getText().equals("Save")) {
/*Mulai menyimpan data Customer*/
Connection cn = null;
try {
cn = DriverManager.getConnection(StringConnection);
} catch (Exception ex) {
JDBC_Err=true;
JOptionPane.showMessageDialog(null,"Koneksi ke database
DbTokoABC gagal\n"+ex,"Kesalahan",JOptionPane.ERROR_MESSAGE);
}
if (!JDBC_Err){
java.util.Date WaktuSekarang;
SimpleDateFormat FormatWaktu;
FormatWaktu = new SimpleDateFormat ("yyyy/MM/dd
HH:mm:ss",Locale.getDefault());
WaktuSekarang = new java.util.Date();
page 45 of 52
Materi Pemrograman I (Pertemuan XVIII) Universitas Pamulang
String Tanggal="";
Boolean diSimpan=true;
try {
Tanggal = FormatWaktu.format(WaktuSekarang);
} catch (NumberFormatException n) {
Tanggal = "1900/01/01 01:01:01";
}
try {
cn = DriverManager.getConnection(StringConnection);
String SQLStatemen = "Select * from TbPenjualan where
NoNota='"+TxtNoNotaJual.getText()+"'";
Statement sta = cn.createStatement();
ResultSet rset = sta.executeQuery(SQLStatemen);
int simpan=0;
rset.next();
if (rset.getRow()>0){
sta.close();
rset.close();
if (diSimpan){
if (simpan==1){
int i;
for (i=0;i<TabelPenjualan.getRowCount();i++){
SQLStatemen = "Select * from TbDetilPenjualan where
NoNota='"+TxtNoNotaJual.getText()+"' and
KodeBarang='"+(String)TabelPenjualan.getModel().getValueAt(i,1)+"'";
sta = cn.createStatement();
rset = sta.executeQuery(SQLStatemen);
rset.next();
if (rset.getRow()>0){
page 46 of 52
Materi Pemrograman I (Pertemuan XVIII) Universitas Pamulang
JOptionPane.showMessageDialog(null,"Sudah tersimpan");
} else {
JOptionPane.showMessageDialog(null,"Gagal menyimpan data
penjualan","Kesalahan",JOptionPane.ERROR_MESSAGE);
}
}
} catch (Exception ex){
JOptionPane.showMessageDialog(null,"Tidak dapat membuka tabel
TbPenjualan\n"+ex,"Kesalahan",JOptionPane.ERROR_MESSAGE);
}
}
/*selesai menyimpan data Customer*/
} else if (TblPilih.getText().equals("Cancel")) {
frmPenjualan.setVisible(false);
}
}
}
if (TblPilih==TblLoginLogin) {
/*Mulai proses Login*/
IDUserAktif="";
NamaUserAktif="";
HakAksesUserAktif="";
if (TxtIDUserLogin.getText().trim().length()>0){
char[] Password = TxtPasswordLogin.getPassword();
String inputPassword = new String(Password);
MessageDigest md=null;
try{
md = MessageDigest.getInstance("SHA-256");
} catch (Exception ex){
page 47 of 52
Materi Pemrograman I (Pertemuan XVIII) Universitas Pamulang
Connection cn = null;
try {
cn = DriverManager.getConnection(StringConnection);
} catch (Exception ex) {
JDBC_Err=true;
JOptionPane.showMessageDialog(null,"Koneksi ke database
DbTokoABC gagal\n"+ex,"Kesalahan",JOptionPane.ERROR_MESSAGE);
}
if (!JDBC_Err){
try {
cn = DriverManager.getConnection(StringConnection);
String SQLStatemen = "Select * from TbUser where IDUser='"+
TxtIDUserLogin.getText().trim()+"' and PasswordUser='"+inputPassword+"'";
Statement sta = cn.createStatement();
ResultSet rset = sta.executeQuery(SQLStatemen);
rset.next();
if (rset.getRow()>0){
IDUserAktif=TxtIDUserLogin.getText().trim();
NamaUserAktif=rset.getString("NamaUser").trim();
byte[] ByteBufHakAkses =
bufHakAkses.substring(0,10).getBytes();
byte[] ByteBufUserID=bufUserID.getBytes();
for (i=0;i<10;i++){
ByteBufHakAkses[i]= (byte)(ByteBufHakAkses[i] ^
ByteBufUserID[i]);
}
if (bufHakAkses.substring(10,20).equals(new
String(ByteBufHakAkses))){
HakAksesUserAktif=bufHakAkses.substring(0,10);
} else {
HakAksesUserAktif="";
while (HakAksesUserAktif.length() < 10){
HakAksesUserAktif = HakAksesUserAktif.concat("3");
page 48 of 52
Materi Pemrograman I (Pertemuan XVIII) Universitas Pamulang
}
}
boolean Status;
for (i=0;i<10;i++){
Status=(HakAksesUserAktif.substring(i,i+1).equals("1")
|| HakAksesUserAktif.substring(i,i+1).equals("2"));
switch (i){
case 0:MenuBarang.setEnabled(Status); break;
case 1:MenuCustomer.setEnabled(Status); break;
case 2:MenuUserAccount.setEnabled(Status); break;
case 3:MenuPenjualan.setEnabled(Status); break;
}
}
frmLogin.setVisible(false);
MenuLogin.setText("Logout");
} else {
sta.close();
rset.close();
JOptionPane.showMessageDialog(null,"ID User atau password
salah");
}
} catch (Exception ex){
JOptionPane.showMessageDialog(null,"Tidak dapat membuka
tabel TbUser\n"+ex,"Kesalahan",JOptionPane.ERROR_MESSAGE);
}
}
}
/*Selesai proses Login*/
} else if (TblPilih==TblLoginCancel) {
frmLogin.setVisible(false);
}
}
}
try{
Class.forName(StringDriver);
} catch (Exception ex){
JDBC_Err=true;
JOptionPane.showMessageDialog(null,"JDBC Driver tidak ditemukan
atau rusak\n"+ex,"Kesalahan",JOptionPane.ERROR_MESSAGE);
}
if (!JDBC_Err){
try {
Connection cn = DriverManager.getConnection(StringConnection);
} catch (Exception ex) {
JOptionPane.showMessageDialog(null,"Koneksi ke database DbTokoABC
gagal\n"+ex,"Kesalahan",JOptionPane.ERROR_MESSAGE);
}
}
}
}
page 49 of 52
Materi Pemrograman I (Pertemuan XVIII) Universitas Pamulang
page 50 of 52
Materi Pemrograman I (Pertemuan XVIII) Universitas Pamulang
page 51 of 52
Materi Pemrograman I (Pertemuan XVIII) Universitas Pamulang
Referensi:
1. Hariyanto, Bambang, (2007), Esensi-esensi Bahasa Pemrograman Java, Edisi 2,
Informatika Bandung, November 2007.
2. Utomo, Eko Priyo, (2009), Panduan Mudah Mengenal Bahasa Java, Yrama Widya,
Juni 2009.
3. Tim Pengembang JENI, JENI 1-6, Depdiknas, 2007
page 52 of 52