RSS

Aplikasi MiniMarket dengan Client Server


Setelah semua aplikasi telah kita membuat, sekarang kita membuat program aplikasi java to java dengan bantuan RMI (Remote Method Invocation).

Syarat objek dapat lewat RMI adalah :
1 membuat interface yang extends ke java.rmi.Remote sedangkan , contoh pembuatan interface :


Kita membuat Interface pada package AksesRMI

untuk akses barang :

===============================================================

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package AksesRMI;

import Entitas.Barang;
import Koneksi.Koneksi;
import Services.ServicesBarang;
import java.rmi.RemoteException;
import java.rmi.server.UnicastRemoteObject;
import java.sql.ResultSet;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.List;

/**
 *
 * @author admin
 */
public class AksesBarang extends UnicastRemoteObject implements ServicesBarang {

    public AksesBarang() throws RemoteException {
    }

    @Override
    public List<Barang> getBarang() throws RemoteException {
        List<Barang> listBarang = new ArrayList<>();
        Statement statement = null;
        try {
            statement = Koneksi.getConnecction().createStatement();
            ResultSet resultSet = statement.executeQuery("select * from barang");
            while (resultSet.next()) {
                Barang barang = new Barang();
                barang.setIdBarang(resultSet.getString(1));
                barang.setKategori(resultSet.getString(2));
                barang.setNamaBarang(resultSet.getString(3));
                listBarang.add(barang);
            }
            resultSet.close();
            return listBarang;
        } catch (Exception e) {
            System.out.println("" + e.getMessage());
            return null;
        } finally {
            if (statement != null) {
                try {
                    statement.close();
                } catch (Exception e) {
                }
            }
        }
    }

    @Override
    public void insert(Barang barang) throws RemoteException {
        Statement statement = null;
        try {
            statement = Koneksi.getConnecction().createStatement();
            statement.executeUpdate("insert into barang values('" + barang.getIdBarang() + "','" + barang.getKategori() + "','" + barang.getNamaBarang() + "',0,0)");
        } catch (Exception e) {
            System.out.println("" + e.getMessage());
        } finally {
            if (statement != null) {
                try {
                    statement.close();
                } catch (Exception e) {
                }
            }
        }
    }

    @Override
    public void update(Barang barang) throws RemoteException {
        Statement statement = null;
        try {
            statement = Koneksi.getConnecction().createStatement();
            statement.executeUpdate("update barang set kategori = '" + barang.getKategori() + "',nama_barang='" + barang.getNamaBarang() + "' where id_barang = '" + barang.getIdBarang() + "'");
        } catch (Exception e) {
            System.out.println("" + e.getMessage());
        } finally {
            if (statement != null) {
                try {
                    statement.close();
                } catch (Exception e) {
                }
            }
        }
    }

    @Override
    public void delete(Barang barang) throws RemoteException {
        Statement statement = null;
        try {
            statement = Koneksi.getConnecction().createStatement();
            statement.executeUpdate("delete from barang where id_barang = '" + barang.getIdBarang() + "'");
        } catch (Exception e) {
            System.out.println("" + e.getMessage());
        } finally {
            if (statement != null) {
                try {
                    statement.close();
                } catch (Exception e) {
                }
            }
        }
    }
}


===============================================================

Untuk AksesDetailTransaksi

===============================================================

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package AksesRMI;

import Entitas.DetailTransaksi;
import Koneksi.Koneksi;
import java.rmi.RemoteException;
import java.rmi.server.UnicastRemoteObject;
import java.sql.ResultSet;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.List;

/**
 *
 * @author admin
 */
public class AksesDetailTransaksi extends UnicastRemoteObject implements Services.ServicesDetailTransaksi{
 
    public AksesDetailTransaksi() throws RemoteException{
     
    }

    @Override
    public List<DetailTransaksi> getDetailTransaksi() throws RemoteException {
        List<DetailTransaksi> listDetailTransaksi = new ArrayList<>();
        Statement statement = null;
        try {
            statement = Koneksi.getConnecction().createStatement();
            ResultSet resultSet = statement.executeQuery("SELECT r.id_pengadaan,r.id_barang,b.nama_barang,"
                + "r.harga_beli_satuan,b.harga_jual,r.jumlah,"
                + "r.tgl_kadaluarsa FROM rel_pengadaan_barang r, barang b WHERE b.id_barang = r.id_barang "
                + "AND id_pengadaan = r.id_pengadaan");
            while (resultSet.next()) {
                DetailTransaksi detailTransaksi = new DetailTransaksi();
                detailTransaksi.setId_pengadaan(resultSet.getString(1));
                detailTransaksi.setId_barang(resultSet.getString(2));
                detailTransaksi.setNama_barang(resultSet.getString(3));
                detailTransaksi.setHarga_beli_satuan(resultSet.getInt(4));
                detailTransaksi.setHarga_jual_satuan(resultSet.getDouble(5));
                detailTransaksi.setJumlah(resultSet.getInt(6));
                listDetailTransaksi.add(detailTransaksi);
            }
            resultSet.close();
            return listDetailTransaksi;
        } catch (Exception e) {
            System.out.println(e.getMessage());
            return null;
        } finally {
            if (statement != null) {
                try {
                    statement.close();
                } catch (Exception e) {
                }

            }
        }
    }

    @Override
    public void insert(DetailTransaksi detailTransaksi) throws RemoteException {
        Statement statement = null;
        try {
            statement = Koneksi.getConnecction().createStatement();
            statement.executeUpdate("insert into rel_pengadaan_barang values('"+detailTransaksi.getId_pengadaan()+"','"+detailTransaksi.getId_barang()+"',
'"+detailTransaksi.getJumlah()+"'"
                    + ",'"+detailTransaksi.getHarga_beli_satuan()+"','"+detailTransaksi.getTgl_kadaluarsa()+"',
'"+detailTransaksi.getHarga_jual_satuan()+"','"+detailTransaksi.getJumlah()+"')");
        } catch (Exception e) {
            System.out.println(e.getMessage());
        }finally{
            if (statement!=null) {
                try {
                    statement.close();
                } catch (Exception e) {
                }
            }
        }
    }

    @Override
    public void update(DetailTransaksi detailTransaksi) throws RemoteException {
        Statement statement = null;
        try {
            statement = Koneksi.getConnecction().createStatement();
            statement.executeUpdate("update rel_pengadaan_barang set jumlah='"+detailTransaksi.getJumlah()+"', "
                    + "harga_beli_satuan='"+detailTransaksi.getHarga_beli_satuan()+"', tgl_kadaluarsa='"+detailTransaksi.getTgl_kadaluarsa()+"', harga_jual_satuan='"+detailTransaksi.getHarga_jual_satuan()+"' "
                    + "where ID_BARANG ='"+detailTransaksi.getId_barang()+"'");
        } catch (Exception e) {
            System.out.println(e.getMessage());
        }finally{
            if (statement!=null) {
                try {
                    statement.close();
                } catch (Exception e) {
                }
            }
        }
    }

    @Override
    public void delete(DetailTransaksi detailTransaksi) throws RemoteException {
        Statement statement = null;
        try {
            statement = Koneksi.getConnecction().createStatement();
            statement.executeUpdate("delete from rel_pengadaan_barang where ID_BARANG ='"+detailTransaksi.getId_barang()+"'");
        } catch (Exception e) {
            System.out.println(e.getMessage());
        }finally{
            if (statement!=null) {
                try {
                    statement.close();
                } catch (Exception e) {
                }
            }
        }
    }
 
}


===============================================================

Untuk AksesKategori

===============================================================

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package AksesRMI;

import Entitas.Kategori;
import Koneksi.Koneksi;
import Services.ServicesKategori;
import java.rmi.RemoteException;
import java.rmi.server.UnicastRemoteObject;
import java.sql.ResultSet;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.List;

/**
 *
 * @author admin
 */
public class AksesKategori extends UnicastRemoteObject implements ServicesKategori {

    public AksesKategori() throws RemoteException {
    }

    @Override
    public List<Kategori> getKategori() throws RemoteException {
        List<Kategori> listKategori = new ArrayList<>();
        Statement statement = null;
        try {
            statement = Koneksi.getConnecction().createStatement();
            ResultSet resultSet = statement.executeQuery("select * from kategori");
            while (resultSet.next()) {
                Kategori kategori = new Kategori();
                kategori.setKategori(resultSet.getString(1));
                kategori.setDeskripsi(resultSet.getString(2));
                listKategori.add(kategori);
            }
            resultSet.close();
            return listKategori;
        } catch (Exception e) {
            System.out.println("" + e.getMessage());
            return null;
        } finally {
            if (statement != null) {
                try {
                    statement.close();
                } catch (Exception e) {
                }
            }
        }
    }

    @Override
    public void insert(Kategori kategori) throws RemoteException {
        Statement statement = null;
     
        try {
            statement = Koneksi.getConnecction().createStatement();
            statement.executeUpdate("insert into kategori values ('"+kategori.getKategori() +"','"+kategori.getDeskripsi()+"')");
        } catch (Exception e) {
            System.out.println("" + e.getMessage());
        } finally {
            if (statement != null) {
                try {
                    statement.close();
                } catch (Exception e) {
                }
            }
        }
    }

    @Override
    public void delete(Kategori kategori) throws RemoteException {
        Statement statement = null;
        try {
            statement = Koneksi.getConnecction().createStatement();
            statement.executeUpdate("delete from kategori where kategori = '"+kategori.getKategori()+"'");
        } catch (Exception e) {
            System.out.println("" + e.getMessage());
        } finally {
            if (statement != null) {
                try {
                    statement.close();
                } catch (Exception e) {
                }
            }
        }
    }
}


===============================================================

Untuk AksesPengadaan

===============================================================

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package AksesRMI;

import Entitas.Pengadaan;
import Koneksi.Koneksi;
import Services.ServicesPengadaan;
import java.rmi.RemoteException;
import java.rmi.server.UnicastRemoteObject;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.List;

/**
 *
 * @author admin
 */
public class AksesPengadaan extends UnicastRemoteObject implements ServicesPengadaan {

    public AksesPengadaan() throws RemoteException {
    }

    @Override
    public List<Pengadaan> getPengadaan() throws RemoteException {
        List<Pengadaan> listPengadaan = new ArrayList<>();
        Statement statement = null;
        try {
            statement = Koneksi.getConnecction().createStatement();
            ResultSet resultSet = statement.executeQuery("select * from pengadaan");
            while (resultSet.next()) {
                Pengadaan pengadaan = new Pengadaan();
                pengadaan.setId_pengadaan(resultSet.getString(1));
                pengadaan.setTanggal(resultSet.getString(3));
                pengadaan.setSupplier(resultSet.getString(4));
                pengadaan.setTotal_transaksi(resultSet.getDouble(5));
                listPengadaan.add(pengadaan);
            }
            resultSet.close();
            return listPengadaan;
        } catch (Exception e) {
            System.out.println("" + e.getMessage());
            return null;
        } finally {
            if (statement != null) {
                try {
                    statement.close();
                } catch (Exception e) {
                }
            }
        }
    }

    @Override
    public void insert(Pengadaan pengadaan) throws RemoteException {
        Statement statement = null;

        int count = 100;
        try {
            statement = Koneksi.getConnecction().createStatement();
            ResultSet resultSet = statement.executeQuery("select tanggal, id_pengadaan from pengadaan");
            while (resultSet.next()) {
                String data1 = resultSet.getString(1);
                String data2 = resultSet.getString(2);
                if (data1.equals(pengadaan.getTanggal())) {
                    if (count == Integer.valueOf(data2.substring(14, 17))) {
                        count++;
                    }
                }
            }
            String id_pengadaan = "TB." + pengadaan.getTanggal2() + "." + count;
            statement.executeUpdate("insert into pengadaan values('" + id_pengadaan + "'  ,'admin'  ,'" + pengadaan.getTanggal() + "'  ,'" + pengadaan.getSupplier() + "'  ,0)");

        } catch (SQLException e) {
            System.out.println("" + e.getMessage());
        } finally {
            if (statement != null) {
                try {
                    statement.close();
                } catch (Exception e) {
                }
            }
        }
    }

    @Override
    public void delete(Pengadaan pengadaan) throws RemoteException {
        Statement statement = null;
        try {
            statement = Koneksi.getConnecction().createStatement();
            statement.executeUpdate("delete from pengadaan where id_pengadaan = '" + pengadaan.getId_pengadaan() + "'");
        } catch (Exception e) {
            System.out.println("" + e.getMessage());
        } finally {
            if (statement != null) {
                try {
                    statement.close();
                } catch (Exception e) {
                }
            }
        }
    }
}


===============================================================

Untuk AksesUser

===============================================================

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package AksesRMI;

import Entitas.User;
import Koneksi.Koneksi;
import Services.ServicesUser;
import java.rmi.RemoteException;
import java.rmi.server.UnicastRemoteObject;
import java.sql.ResultSet;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.List;

/**
 *
 * @author admin
 */
public class AksesUser extends UnicastRemoteObject implements ServicesUser {

    public AksesUser() throws RemoteException {
    }

    @Override
    public List<User> getUser() throws RemoteException {
        List<User> listUser= new ArrayList<>();
        Statement statement = null;
        try {
            statement = Koneksi.getConnecction().createStatement();
            ResultSet resultSet = statement.executeQuery("select * from user");
            while (resultSet.next()) {
                User user = new User();
                user.setUsername(resultSet.getString(1));
                user.setPassword(resultSet.getString(2));
                user.setLevel(resultSet.getString(3));
                user.setNama(resultSet.getString(4));
                user.setAlamat(resultSet.getString(5));
                user.setTelpon(resultSet.getString(6));
                listUser.add(user);
            }
            resultSet.close();
            return listUser;
        } catch (Exception e) {
            System.out.println("" + e.getMessage());
            return null;
        } finally {
            if (statement != null) {
                try {
                    statement.close();
                } catch (Exception e) {
                }
            }
        }
    }

    @Override
    public void insert(User user) throws RemoteException {
        Statement statement = null;
     
        char[] passw = user.getPassword().toCharArray();
        String sandi = "";
        for (int i = 0; i < passw.length; i++) {
            sandi = sandi + passw[i];
        }

        int level;
        if (user.getLevel().equals("Admin")) {
            level = 0;
        } else {
            level = 1;
        }
     
        try {
            statement = Koneksi.getConnecction().createStatement();
            statement.executeUpdate("insert into user values('" + user.getUsername() + "',md5('" + sandi + "')," + level + ",'" + user.getNama() + "','" + user.getAlamat() + "','" + user.getAlamat() + "')");
        } catch (Exception e) {
            System.out.println("" + e.getMessage());
        } finally {
            if (statement != null) {
                try {
                    statement.close();
                } catch (Exception e) {
                }
            }
        }
    }

    @Override
    public void delete(User user) throws RemoteException {
        Statement statement = null;
        try {
            statement = Koneksi.getConnecction().createStatement();
            statement.executeUpdate("delete from user where username = '" + user.getUsername() + "'");
        } catch (Exception e) {
            System.out.println("" + e.getMessage());
        } finally {
            if (statement != null) {
                try {
                    statement.close();
                } catch (Exception e) {
                }
            }
        }
    }

    @Override
    public void reset(User user) throws RemoteException {
        Statement statement = null;
        try {
            statement = Koneksi.getConnecction().createStatement();
            statement.executeUpdate("update user set password=md5('" + user.getPassword2()+ "') where username='" + user.getUsername2() + "'");
        } catch (Exception e) {
            System.out.println("" + e.getMessage());
        } finally {
            if (statement != null) {
                try {
                    statement.close();
                } catch (Exception e) {
                }
            }
        }
    }
}


===============================================================

Semua method yang di definisikan di dalam interface yang extend ke java.rmi.Remote harus melemparkan remote eksepsi : throws RemoteException , contoh :


Semua kelas yang mengimplementasikan interface diatas harus extends UnicastRemoteObject dan memiliki konstruktor yang throws RemoteException; contoh :


Setelah Akses RMI telah kita buat kita membuat Minimarket-api yang fungsinya untuk menghubungkan client dengan servis. Disini kita liat ada 2 package yaitu entitas dan services.



Untuk source code nya bisa diambil disini

Semoga bermanfaat ya :)

2 komentar:

笹 涼介 mengatakan...

dropbox nya malah mengalihkan ke home ><
foldernya gk ada :(

makasih sebelumnya

Unknown mengatakan...

gan gmn nih, kok malah ke home
bagi donk program kerennya ^.^

Posting Komentar