FORM UJIAN AKHIR SEMESTER GENAP TAHUN AJARAN 2014/2015 PROGRAM STUDI _____ JURUSAN _______________________
Mata Kuliah : Pemrograman Client Server
Dosen :
Hari,Tgl kumpul : Selasa, 13 Januari 2014 13.00 – 13.40
Sifat Ujian : Take Home, 1 x 24 jam Ket :
• Diisi langsung dengan diketik bukan tulis tangan, kemudian diprint , print black / color
• Jika form yang telah diisi tidak bisa di-save, klik File Print pilih adobe pdf atau Ms Office OneNote
Ruang : No Kursi :
NIM :
Nama :
__________________________________________
Tgl Lahir : (DD/MM/YYYY) *Lengkapi semua data diatas sebelum mulai mengerjakan
1. Create Data Source (10 point)
CREATE DATABASE _______ go
foreign key references sesuatu1(data1), data5 datetime, data6 int,
primary key (data4,data5) )
go
CREATE PROC SpTampilSesuatu1 as
select * from sesuatu1
go
CREATE PROC SpTampilSesuatu2 as
select * from sesuatu2
CREATE PROCEDURE ____________1b ( @dt4 char(3),@dt5 datetime) as delete from sesuatu2
where data4=@dt4 and data5=@dt5
go
CREATE FUNCTION FcHitTotalData6(@dt4 char(3))
returns int as begin
CREATE TRIGGER tgUbahData3 ON sesuatu2
FOR Insert,Update,Delete as begin transaction
declare @dt4lama char(3),@dt6lama int,
dbo.fcHitungTotalData6 (@dt4baru) update sesuatu1 set data3=@totbaru
--panggil proc utk insert tabel sesuatu2
1d '001','2011/01/01',
--panggil proc utk hapus data sesuatu2
2. Isi Tabel Sesuatu1 setelah semua query diatas dieksekusi : (10 point)
Data1 Data2 Data3
001
aaaaaa
___
002
bbbbbb
___
003
cccccc
___
Catatan : untuk no 3 dan seterusnya, penulisan code case sensitive 3. Project LibTesPCS (15 point)
package lib.entitas;
import java.rmi.RemoteException;
import java.util.List;
import lib._________.__________ 3g;
import lib._________.__________ 3h;
public interface extends
________
3i {public void setIClient(int i) throws RemoteException;
public void refreshTampilSesuatu1(List<Sesuatu1> data)throws ________________1j;
public void refreshTampilSesuatu2(List<Sesuatu2> data)throws ________________3k;
}
package lib.service;
import java.rmi.Remote;
import java.util.List;
import lib.entitas.Sesuatu1;
import lib.entitas.Sesuatu2;
public interface extends ___________3m {
public boolean insertSesuatu2(Sesuatu2 obj) throws RemoteException;
public boolean updateSesuatu2(Sesuatu2 obj) throws RemoteException;
public boolean deleteSesuatu2(Sesuatu2 obj) throws RemoteException;
public List<Sesuatu1> selectAllSesuatu1() throws RemoteException;
public List<Sesuatu2> selectAllSesuatu2() throws RemoteException;
public int ( irc )
______ ________________3o;
public void (int i) throws RemoteException;
}
4. ProjectServerTesPCS – class KoneksiDB (Point 15)
package server;
import java.sql.____________4a; import java.sql.DriverManager;
import java.sql.______________________4b;
import java.sql._______________4c;
import java.sql.ResulSet;
public class KoneksiDB {
private Connection ;
private PreparedStatement preStat;
public ______________4d get________4e() {
if (_________4f == null) {
try {
Class.forName("net.sourceforge.jtds.jdbc.Driver"); try {
String url = "jdbc:jtds:sqlserver://localhost:1433/__________ 4g";
_________4h = DriverManager.getConnection(url,"sa","amikom"); System.out.println("Koneksi Database sukses");
} catch (_________________4i se) {
System.out.println("Koneksi Database Gagal error:" + se); System.exit(0);
}
} catch (ClassNotFoundException cnfe) { System.exit(0);
} }
________ _________ 4j; //mengembalikan nilai koneksi }
public boolean eksekusiNonQuery(String query) {
try {
_______4k = __________4l.prepareStatement(query);
_______.________________();4m //eksekusi statement
return true;
} catch (SQLException e) {
return ________ 4n;
} }
InfRemoteServerA
RegJE
UnRegEN
InfRemoteClientN
public ____________4o eksekusiQuery(String query) { try {
preStat = .prepareStatement(query); return preStat.executeQuery();
} catch (SQLException e) { return null;
} }
}
5. ProjectServerTesPCS – class ServerTesPCS (Point 30)
package server;
import java.rmi.RemoteException;
import java.rmi.registry.LocateRegistry;
import java.rmi.registry.Registry;
import java.rmi.server.UnicastRemoteObject;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
import lib.service.__________________________ 5a;
import lib.service.__________________________ 5b;
import lib.entitas.Sesuatu1;
import lib.entitas.Sesuatu2;
//class ServerTesPCS mengimplementasikan interface remote server
public class ServerTesPCS extends UnicastRemoteObject
implements ________________________5c {
private String strQuery;
private ____________5d konDB;
private boolean statusEksekusi;
private ResultSet rs;
private List lsOp = new ___________5e ();
public ServerTesPCS() throws RemoteException {
}
public boolean insertSesuatu2(Sesuatu2 obj) throws RemoteException {
//panggil procedure untuk insert tabel sesuatu2 strQuery =
5f
statusEksekusi = konDB.eksekusiNonQuery(strQuery); refreshClient();
return statusEksekusi; }
public boolean updateSesuatu2(Sesuatu2 obj) throws RemoteException {
//panggil procedure untuk update data6 tabel sesuatu2 strQuery =
5g
statusEksekusi = konDB.eksekusiNonQuery(strQuery); refreshClient();
return statusEksekusi; }
public boolean deleteSesuatu2(Sesuatu2 obj) throws RemoteException {
//panggil procedure untuk menghapus data dari tabel sesuatu2 strQuery
5h
statusEksekusi = konDB.eksekusiNonQuery(strQuery); refreshClient();
return statusEksekusi; }
public List<Sesuatu1> selectAllSesuatu1() throws RemoteException {
strQuery = "SpTampilSesuatu1"; konDB.getKoneksi();
rs = konDB.eksekusiQuery(strQuery);
List listData = new ArrayList<Sesuatu1>(); try {
while (rs.next()) {
Sesuatu1 data = new Sesuatu1();
data.setD1(rs.___________ 5i (1)); data.setD2(rs.getString(2));
data.setD3(rs.___________ 5j (3)); listData.add(data);
}
rs.close(); return listData;
} catch (SQLException se) {
System.out.println("eksekusi query error:" + se); return null;
} }
public List<Sesuatu2> selectAllSesuatu2() throws RemoteException {
strQuery = "SpTampilSesuatu2"; konDB.getKoneksi();
rs = konDB.eksekusiQuery(strQuery); List lsData = new ArrayList<Sesuatu2>(); try {
while (rs.next()) {
Sesuatu2 data = new Sesuatu2(); data.setD4(rs.getString(1));
data.setD5(rs.__________ 5k (2));
data.setD6(rs.__________ 5l (3));
lsData.add(data); }
rs.close();
return __________5m;
} catch (_________________5n se) {
System.out.println("eksekusi query error:" + se); return null;
} }
public int ______________5o(_________________________5p irc)
throws RemoteException { int i = 0;
lsOp.add(irc);
i = lsOp.indexOf(irc);
System.out.println("Jumlah Client :" + lsOp.size()); return i;
}
public void ___________5q (int i) throws RemoteException { lsOp.remove(i);
for (int j = i; j < lsOp.size(); j++) {
_____________________ irc = (________________________) lsOp.get(j); if (irc != null) {
irc.setIClient(i); }
}
System.out.println("Jumlah Client :" + lsOp.size()); }
public static void main(String[] args) throws RemoteException {
Registry reg = LocateRegistry.createRegistry(_______); ServerTesPCS _____ = new ServerTesPCS();
reg.rebind(" ", _______5r);
System.out.println("Server ON");
} }
6. ProjectClientTesPCS (point 20)
package client;
import java.rmi.NotBoundException;
import java.rmi.RemoteException;
import java.rmi.registry.LocateRegistry;
import java.rmi.registry.Registry;
import java.rmi.server.UnicastRemoteObject;
import java.util.List;
import lib.service.
import lib.service.
import lib.entitas.Sesuatu1;
import lib.entitas.Sesuatu2;
public class __________ extends UnicastRemoteObject implements ______________________ {
Registry registry;
irs;
FrmTesPCS form = new FrmTesPCS();
int iClient = 0;
// constructor
public ________________6a () throws RemoteException, NotBoundException {
super();
// menghubungkan ke port server
registry = LocateRegistry.getRegistry("localhost", ________6b); // mencari nama server yang terdaftar didalam registry
irs = (_____________________6c) registry.lookup(____________________6d);
form.setVisible(true);
// memanggil method di server untuk mendaftarkan client
form.setiFrm(irs._____________6e(this));
form.setIrs(irs); }
// implementasi semua method InterfaceRemoteClient
public void __________6f (int i) throws RemoteException {
form.setiFrm(iClient + 1); }
InfRemoteClientN
InfRemoteClientN
ajem
EME server NA
InfRemoteClientN ;
InfRemoteServerA;
N client
//implement remote client
InfRemoteClientN
public void _________________________6g(List<Sesuatu1> data)
throws RemoteException {
form.refreshTabelS1(data); }
public void _________________________6h (List<Sesuatu2> data)
throws RemoteException {
form.refreshTabelS2(data); }
public static void main(String[] args) throws RemoteException, NotBoundException {
// inisiasi class
____________ client = new ____________();6i }
}
package client;
import java.util.List;
import javax.swing.table.DefaultTableModel;
import lib.service.
import lib.entitas.Sesuatu1;
import lib.entitas.Sesuatu2;
public class FrmTesPCS extends javax.swing.JFrame {
private int iFrm;
private _____________________6j irs;
private DefaultTableModel dtModel = new DefaultTableModel();
public FrmTesPCS() {
initComponents(); }
public void setiFrm(int iFrm) {
this.iFrm = iFrm; }
public void setIrs( irs) {
this.irs = irs; }
public void refreshTabelS1(List<Sesuatu1> listS1) { dtModel = (DefaultTableModel) TblSesuatu1.getModel(); dtModel.setRowCount(0);
for (int i = 0; i < listS1.size(); i++) { //mengambil nilai semua atribut entitas Sesuatu1
dtModel.addRow(
new Object[]{listS1.get(i).__________ 6k(),
listS1.get(i).__________ 6l(),
InfRemoteServerA;
listS1.get(i).__________ 6m()}); }
}
public void refreshTabelS2(List<Sesuatu2> listS2) { dtModel = (DefaultTableModel) TblSesuatu2.getModel(); dtModel.setRowCount(0);
for (int i = 0; i < listS2.size(); i++) { //mengambil nilai semua atribut entitas Sesuatu2 dtModel.addRow(
new Object[]{listS2.get(i).___________ 6n(),
listS2.get(i).___________ 6o(),
listS2.get(i).___________ 6p()}); }
}
public void () {
List<Sesuatu1> listData1 = new ArrayList<Sesuatu1>(); List<Sesuatu2> listData2 = new ArrayList<Sesuatu2>(); try {
//memanggil method untuk menampilkan data sesuatu1 dan sesuatu2 yang ada di server
listData1 = irs.____________________________ 6q();
listData2 = irs.____________________________ 6r();
} catch (RemoteException ex) {
Logger.getLogger(FrmTesPCS.class.getName()).log( Level.SEVERE, null, ex);
}
refreshTabelS1(listData1);
refreshTabelS2(listData2); }
//event saat form ditutup
private void formWindowClosing(java.awt.event.WindowEvent evt) {
try {
//memanggil method untuk keluar dari layanan server irs._____________ 6s(iFrm);
} catch (RemoteException ex) {
Logger.getLogger(FrmTesPCS.class.getName()).log(Level.SEVERE, null, ex); }
}
//event saat form dibuka
private void formWindowOpened(java.awt.event.WindowEvent evt) {
//memanggil method untuk menampilkan isi TblSesuatu1 & TblSesuatu2
_______________6t();
}