Praktikum Java Semester 7: Part 1
Praktikum Java Semester 7: Part 2
Praktikum Java Semester 7: Part 3
Praktikum Java Semester 7: Part 4
Praktikum Java Semester 7: Part 5
Buat package utils
buat class MD5
dan isikan dengan
public class MD5 {
public static String getMd5(String input)
{
try {
MessageDigest md = MessageDigest.getInstance("MD5");
byte[] messageDigest = md.digest(input.getBytes());
BigInteger no = new BigInteger(1, messageDigest);
String hashtext = no.toString(16);
while (hashtext.length() < 32) {
hashtext = "0" + hashtext;
}
return hashtext;
}
catch (NoSuchAlgorithmException e) {
throw new RuntimeException(e);
}
}
}
Class ini berfungsi untuk melakukan enkripsi pada string password supaya bisa dicocokkan dengan data password yang ada pada table.
Pada package model
, buat class Pengguna
dan isikan dengan
public class Pengguna {
Connection connection;
private int id;
private String username;
private String password;
private String namaLengkap;
private boolean isAdmin;
public Pengguna(Connection connection) {
this.connection = connection;
}
public Pengguna(int id, String username, String namaLengkap, boolean isAdmin) {
this.id = id;
this.username = username;
this.namaLengkap = namaLengkap;
this.isAdmin = isAdmin;
}
public Pengguna login(){
Pengguna pengguna = null;
String loginSQL = "SELECT * FROM pengguna WHERE username = ? AND password = ?";
PreparedStatement ps;
try {
ps = this.connection.prepareStatement(loginSQL);
String md5Password = MD5.getMd5(this.password);
ps.setString(1, this.username);
ps.setString(2, md5Password);
ResultSet rs = ps.executeQuery();
if(rs.next()){
pengguna = new Pengguna(
rs.getInt(1),
rs.getString(2),
rs.getString(4),
rs.getBoolean(5)
);
}
} catch (SQLException ex) {
System.out.println("Gagal login");
}
return pengguna;
}
}
Jangan lupa untuk Generate Getter and Setter
untuk semua atribut pada class Pengguna.
Method login()
pada Pengguna mengubah atribut password kedalam md5Password menggunakan class MD5 yang sebelumnya sudah dibuat. Method ini akan me-return object Pengguna yang bisa diambil id, nama lengkap, dan level usernya.
Pada package view.admin
Buat JFrame AdminMainFrame
dan isikan
- JPanel: Properties->background: [102,16,242]
- JLabel
- JLabel: name->lbNamaLengkap
- JButton: name->btUbahPassword
- JButton: name->btJenisBarang
- JButton
- JButton
- JButton
- JButton
- JButton
- JButton
- JButton: name->btTutup
Masuk pada bagian Source
dan tambahkan atribut Pengguna beserta setter-nya, letakkan sebelum constructor
Pengguna pengguna;
public void setPengguna(Pengguna pengguna){
this.pengguna = pengguna;
}
public AdminMainFrame() {
initComponents();
}
Ganti extends javax.swing.JFrame
menjadi
public class AdminMainFrame extends CustomFrame
Karena JenisBarang sudah punya frame bisa ditambahkan pada btJenisBarang
private void btjenisBarangActionPerformed(java.awt.event.ActionEvent evt) {
JenisBarangViewFrame frame = new JenisBarangViewFrame();
frame.customShow();
}
Tambahkan method untuk btTutup
dan formWindowActivated
private void btTutupActionPerformed(java.awt.event.ActionEvent evt) {
System.exit(0);
}
private void formWindowActivated(java.awt.event.WindowEvent evt) {
lbNamaLengkap.setText(pengguna.getNamaLengkap());
}
Pada package view
buat package baru cashier
dan buat JFrame CashierMainFrame
dan isikan
- JPanel: Properties->background: [102,16,242]
- JLabel
- JLabel: name->lbNamaLengkap
- JButton: name->btUbahPassword
- JButton
- JButton
- JButton: name->btTutup
Sama seperti pada AdminMainFrame, masuk pada bagian Source
dan tambahkan atribut Pengguna beserta setter-nya, letakkan sebelum constructor
Pengguna pengguna;
public void setPengguna(Pengguna pengguna){
this.pengguna = pengguna;
}
public CashierMainFrame() {
initComponents();
}
Ganti extends javax.swing.JFrame
menjadi
public class CashierMainFrame extends CustomFrame
Tambahkan method untuk btTutup
dan formWindowActivated
private void btTutupActionPerformed(java.awt.event.ActionEvent evt) {
System.exit(0);
}
private void formWindowActivated(java.awt.event.WindowEvent evt) {
lbNamaLengkap.setText(pengguna.getNamaLengkap());
}
Pada package view
buat package baru auth
dan buat JFrame LoginFrame
dan isikan
- JPanel: Properties->background: [102,16,242]
- JLabel
- JLabel
- JTextField: name->tfUsername
- JLabel
- JPasswordField: name->tfPassword
- JButton: name->btBatal
- JButton: name->btLogin
Ganti extends javax.swing.JFrame
menjadi
public class LoginFrame extends CustomFrame
Pada btLogin
tambahkan
private void btLoginActionPerformed(java.awt.event.ActionEvent evt) {
Database db = new Database();
Connection connection = db.getConnection();
Pengguna pengguna = new Pengguna(connection);
String stringPassword = new String(tfPassword.getPassword());
pengguna.setUsername(tfUsername.getText());
pengguna.setPassword(stringPassword);
pengguna = pengguna.login();
if(pengguna != null){
if(pengguna.isIsAdmin()){
dispose();
AdminMainFrame frame = new AdminMainFrame();
frame.setPengguna(pengguna);
frame.customShow();
}else{
dispose();
CashierMainFrame frame = new CashierMainFrame();
frame.setPengguna(pengguna);
frame.customShow();
}
}else{
JOptionPane.showMessageDialog(null, "Login gagal");
}
}
Pada btBatal
tambahkan
private void btBatalActionPerformed(java.awt.event.ActionEvent evt) {
System.exit(0);
}
Terakhir pada class Main
ubah method main-nya menjadi
public static void main(String[] args) {
LoginFrame frame = new LoginFrame();
frame.customShow();
}
Struktur project pada akhir Part 4 ini:
Praktikum Java Semester 7: Part 1
Praktikum Java Semester 7: Part 2
Praktikum Java Semester 7: Part 3
Praktikum Java Semester 7: Part 4
Praktikum Java Semester 7: Part 5