JURUSAN MANAJEMEN INFORMATIKA ID. pdf

FORM UJIAN AKHIR SEMESTER GENAP TAHUN AJARAN 2014/2015
_____ JURUSAN _______________________
PROGRAM STUDI D3
MANAJEMEN INFORMATIKA
Mata Kuliah

: Pemrograman Client Server

Dosen

: I Ketut Putra Yasa

Hari,Tgl kumpul

: Selasa, 13 Januari 2014
13.00 – 13.40
: Take Home, 1 x 24 jam

Sifat Ujian

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


:

. 0 2 .

/

/

(DD/MM/YYYY)

*Lengkapi semua data diatas sebelum mulai mengerjakan

1. Create Data Source (10 point)

insert into sesuatu1 alues('001','aaaaaa',__)
1

CREATE FUNCTION FcHitTotalData6(@dt4 char(3))
returns int as begin

declare @total int
select @total=sum(data6) from sesuatu2
group by data4 having data4=@dt4
if @total is null
set @total=0
return @total
end

3
insert into sesuatu1 values('002','bbbbbb',__)

go

DBMANN
CREATE DATABASE _______
go
USE _________1a
go
CREATE TABLE Sesuatu1( data1 char(3) primary
key, data2 varchar(20) not null, data3 int )

go

insert into sesuatu1 values('003','cccccc',0)
go

CREATE TABLE Sesuatu2( data4 char(3)
foreign key references sesuatu1(data1),
data5 datetime, data6 int,
primary key (data4,data5) )
go

CREATE
select
go
CREATE
select

PROC SpTampilSesuatu1 as
* from sesuatu1


CREATE TRIGGER tgUbahData3 ON sesuatu2
FOR Insert,Update,Delete as begin transaction
declare @dt4lama char(3),@dt6lama int,
@totlama int,@dt4baru char(3),
@dt6baru int,@totbaru int
select @dt4lama=data4,@dt6lama=data6
from deleted
select @dt4baru=data4,@dt6baru=data6
from inserted
--panggil function hitung total data6

select @totlama=
dbo.________________ 1c (@dt4lama)
update sesuatu1 set data3=@totlama
where data1=@dt4lama
select @totbaru=
dbo.fcHitungTotalData6 (@dt4baru)
update sesuatu1 set data3=@totbaru
where data1=@dt4baru
if @@error=0

commit transaction
else
rollback transaction

PROC SpTampilSesuatu2 as
* from sesuatu2

go

SpInsEME
CREATE PROC _______________(
@dt4 char(3),@dt5 datetime,@dt6 int) as
declare @cekdata int
select @cekdata = count(data4) from sesuatu2
where data4 = @dt4 and data5=@dt5
if @cekdata = 0
insert into sesuatu2 values(@dt4,@dt5,@dt6)
go

CREATE PROCEDURE SpUpdateData6(

@dt4 char(3),@dt5 datetime,@dt6 int) as
update sesuatu2 set data6=@dt6
where data4=@dt4 and data5=@dt5
go
1b

CREATE PROCEDURE ____________ (
@dt4 char(3),@dt5 datetime) as
delete from sesuatu2
where data4=@dt4 and data5=@dt5
go

go
--panggil proc utk insert tabel sesuatu2
1d

______________1d '001','2011/01/01', 5
______________ '001','2011/01/05', 5
______________ '002','2011/01/05', 8
--panggil proc utk ubah data6

1e

_______________1e '001','2011/01/01', 8
--panggil proc utk hapus data sesuatu2

SpN Del
__________
'001','2011/01/01'

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;

package lib.entitas;


public class Sesuatu1 {
private String d1;

import java.util.Date;

private _______

3a

public class Sesuatu2 {
private String d4;
private ______3d d5;
private int d6;

d2;

private int d3;
public String getD1() {
return d1;
}


public String getD4() {
return d4;
}

public void setD1(String d1) {
this.d1 = d1;
}

public void setD4(String d4) {
this.d4 = d4;
}

public String getD2() {
return d2;
}

public _______3e getD5() {
return d5;
}

public void setD2(String d2) {
this.d2 = d2;
}

public void setD5(_______3f d5) {
this.d5 = d5;
}

public _____3b getD3() {
return d3;
}

public int getD6() {
return d6;
}

public void setD3(_____3c d3) {
this.d3 = d3;
}

public void setD6(int d6) {
this.d6 = d6;
}

}
}

package lib.service;
//import semua class yang digunakan

import java.rmi.Remote;
import java.rmi.RemoteException;
import java.util.List;
import lib._________.__________

3g

;

import lib._________.__________

3h

;

public interface InfRemoteClientN
_____________________ extends ________3i {
public void setIClient(int i) throws RemoteException;
public void refreshTampilSesuatu1(List data)throws ________________1j;
public void refreshTampilSesuatu2(List data)throws ________________3k;
}
package lib.service;
import java.rmi.Remote;
import java.rmi._____________________3l;

import java.util.List;
import lib.entitas.Sesuatu1;
import lib.entitas.Sesuatu2;
public interface ____________________
extends ___________3m {
InfRemoteServerA
public
public
public
public
public

boolean insertSesuatu2(Sesuatu2 obj) throws RemoteException;
boolean updateSesuatu2(Sesuatu2 obj) throws RemoteException;
boolean deleteSesuatu2(Sesuatu2 obj) throws RemoteException;
List selectAllSesuatu1() throws RemoteException;
List selectAllSesuatu2() throws RemoteException;

RegJE
public int ____________
( InfRemoteClientN
_____________________ irc )

______

________________3o;

UnRegEN
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 __________;
NAKon
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/__________
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
return true;
} catch (SQLException e) {
return ________
}
}

4n

;

//eksekusi statement

4g

";

public ____________4o eksekusiQuery(String query) {
try {
preStat = NAKon
______.prepareStatement(query);
return preStat.executeQuery();
} catch (SQLException e) {
return null;
}
}
}

5. ProjectServerTesPCS – class ServerTesPCS (Point 30)
package server;
import
import
import
import
import
import
import
import

java.rmi.RemoteException;
java.rmi.registry.LocateRegistry;
java.rmi.registry.Registry;
java.rmi.server.UnicastRemoteObject;
java.sql.ResultSet;
java.sql.SQLException;
java.util.ArrayList;
java.util.List;

import lib.service.__________________________
import lib.service.__________________________

5a

;

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
private
private
private

____________5d konDB;
boolean statusEksekusi;
ResultSet rs;
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 selectAllSesuatu1() throws RemoteException {
strQuery = "SpTampilSesuatu1";
konDB.getKoneksi();
rs = konDB.eksekusiQuery(strQuery);
List listData = new ArrayList();
try {
while (rs.next()) {
Sesuatu1 data = new Sesuatu1();
data.setD1(rs.___________ 5i (1));
data.setD2(rs.getString(2));
data.setD3(rs.___________
listData.add(data);

5j

(3));

}
rs.close();
return listData;
} catch (SQLException se) {
System.out.println("eksekusi query error:" + se);
return null;
}
}
public List selectAllSesuatu2() throws RemoteException {
strQuery = "SpTampilSesuatu2";
konDB.getKoneksi();
rs = konDB.eksekusiQuery(strQuery);
List lsData = new ArrayList();
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);
InfRemoteClientN
InfRemoteClientN
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(_______);
ajem = new ServerTesPCS();
ServerTesPCS _____
EME
server NA
reg.rebind("_________________",
_______5r);
System.out.println("Server ON");
}
}

6. ProjectClientTesPCS (point 20)
package client;
import
import
import
import
import
import

java.rmi.NotBoundException;
java.rmi.RemoteException;
java.rmi.registry.LocateRegistry;
java.rmi.registry.Registry;
java.rmi.server.UnicastRemoteObject;
java.util.List;

InfRemoteClientN ;
import lib.service.______________________
InfRemoteServerA;
import lib.service._______________________

import lib.entitas.Sesuatu1;
import lib.entitas.Sesuatu2;
//implement remote client

public class N
__________
extends UnicastRemoteObject implements InfRemoteClientN
______________________ {
client
Registry registry;
InfRemoteServerA
____________________
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);
}

public void _________________________6g(List data)
throws RemoteException
{
form.refreshTabelS1(data);
}
public void _________________________6h (List 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;
InfRemoteServerA;
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;
}
InfRemoteServerA
public void setIrs(______________________
irs) {
this.irs = irs;
}
public void refreshTabelS1(List 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).__________
listS1.get(i).__________

6l

(),

6k

(),

listS1.get(i).__________

6m

()});

}
}
public void refreshTabelS2(List 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).___________
listS2.get(i).___________

6o

(),

listS2.get(i).___________

6p

()});

6n

(),

}
}
enTampil
public void ______________
() {
List listData1 = new ArrayList();
List listData2 = new ArrayList();
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();
}