Hasil implementasi antar muka pengguna untuk OLAP yang sudah dirancang pada bab sebelumnya dapat dilihat sebagai berikut:
Gambar 4.37 Tampilan Halaman Login
Gambar 4.38 merupakan tampilan halaman proses login untuk masuk ke sistem. Pengguna diharuskan melakukan login menuju ke proses selanjutnya. Proses login diawali dengan pengguna mengisi field username dan password yang sesuai kemudian milih tombol “login”.
Listing program yang digunakan untuk tampilan login terdapat pada tabel 4.12.
Tabel 4.12 Listing Program untuk Halaman Login
. . . .
<body>
<div class="container">
<h1 align="center">PT. ASDP INDONESIA FERRY</h1>
<h2 align="center">Data Warehouse Pemantauan Pelayanan Operasional</h2>
<%
if (request.getParameter("action") != null && request.getParameter("action").equals("error")){
%>
<h3 align="center">Username dan Password Salah</h3>
<% } %>
<form method="post" action="Control.jsp" > <table width="400" border="0" cellspacing="0"
align="center"> <tr> <td width="50"> </td> <td colspan="1"><span> <label>Username</label> <label></label> </span> </td> <td width="100"><span class="container2"> <input style="width:200px; height:20px" name="user" type="text" class="teks_form" />
</span></td> </tr> <tr> <td> </td> <td colspan="1"><span> <label>Password</label> </span> </td> <td><span class="container4"> <input style="width:200px;
height:20px" type="password" name="pass" value="" id="password"> </span>
</td> </tr> </table>
<table align ="right" width="450" border="0"> <tr> <td colspan="2"> </td> <td> </td> <td> </td> </tr> <tr> <td colspan="2"> </td> <td colspan="2"> </td> <td colspan="2"> </td> <td colspan="2"> </td> <td colspan="2"> </td> <td colspan="2"> </td> <td> </td> <td> </td> <td> </td> <td> </td> <td> </td> <td> </td> <td> </td> <td> </td> <td> </td>
<td> </td> <td> </td>
<td><input type="submit" name="login" value="Login" /></td>
<td><a href="index.jsp"><input type="reset" name="Reset" value="Batal"/></a></td> <td> </td> </tr> </table> <p> </p> <p align="left"> </p> <p align="left"> </p> <p> </p> </form> ….
Proses login mengirimkan data username dan password masukan dari admin ke file Control.jsp. Di dalam file Control.jsp, parameter
username dan password ditangkap dan diproses pada method login. Jika masukan benar maka pengguna akan masuk sebagai admin, tapi jika masukan salah proses dianggap gagal dan harus mengulangi login yang benar. Listing program untuk proses login di file Control.jsp terdapat pada tabel 4.13.
Tabel 4.13 Fungsi Login pada Control.jsp
<%
if (login.login(request.getParameter("user"), request.getParameter("pass"))) {
response.sendRedirect("form_transformasi.jsp");
} else if (request.getParameter("logout") != null && request.getParameter("logout").equals("true")) {
response.sendRedirect("index.jsp");
} else if (request.getParameter("action") != null) { if (request.getParameter("action").equals("1")) { //method runbat 1 boolean result = Tools.Tools.runBat("transfer_data.bat"); out.print(result); } } else { response.sendRedirect("index.jsp?action=error");
}
%>
Proses login mengirimkan data username dan password masukan pengguna kemudian dicocokan dengan data pengguna di database. Proses ini dilakukan oleh kelas Login.java. Listing program untuk kelas Login.java terdapat pada tabel 4.14.
Tabel 4.14 Fungsi Login pada kelas Login
public class Login {
public boolean login(String userName, String password){ // DatabaseConnector test = new DatabaseConnector(); boolean out = false;
DatabaseConnector conn = new DatabaseConnector();
try {
String query = "select * from admin";
Statement st = conn.getConnection().createStatement(); ResultSet rs = st.executeQuery(query); while(rs.next()){ System.out.println("username :" +rs.getString("username")); System.out.println("password :" +rs.getString("password")); out = true; } st.close();
} catch (Exception ex){
System.out.println("message: "+ex.getMessage()); return out;
}
if(userName == null || password == null || !(userName.equals("admin") && password.equals("1234"))) { return false; } else { return true; } } }
Jika kombinasi data username dan password sesuai dengan data pada
database maka proses login berhasil. Jika tidak maka pengguna mengulangi proses login. Gambar 4.38 merupakan tampilan pross login gagal.
Gambar 4.38 Tampilan untuk proses Login gagal
4.4.2 Halaman Menu Utama
Setelah pengguna berhasil melakukan login maka sistem akan langsung menampilkan laporan rekapitulasi produksi dan pendapatan. Halaman menu utama dapat dilihat pada gambar 4.39.
Gambar 4.39 Tampilan halaman utama
Halaman menu utama mengakses halaman LaporanRekapitulasi.jsp. Dalam halaman LaporanRekapitulasi.jsp terdapat struktur MDX yang digunakan untuk mengakses database asdpferry sehingga data diperoleh dalam bentuk multidimensi. Struktur LaporanRekapitulasi.jsp terdapat pada tabel 4.15.
Tabel 4.15 Struktur halaman LaporanRekapitulasi.jsp
select NON EMPTY {[Measures].[Produksi], [Measures].[Pendapatan]} ON COLUMNS,
NON EMPTY Hierarchize(Union(Union({([Dimensi
Lintasan.Lintasan].[Semua Lintasan], [Dimensi Kapal.Kapal].[Semua Kapal], [Dimensi Waktu.Waktu].[Semua Waktu], [Dimensi
Tiket.Tiket].[Semua Tiket])}, Crossjoin([Dimensi
Lintasan.Lintasan].[Semua Lintasan].Children, {([Dimensi
Kapal.Kapal].[Semua Kapal], [Dimensi Waktu.Waktu].[Semua Waktu], [Dimensi Tiket.Tiket].[Semua Tiket])})), Union(Crossjoin({[Dimensi
Lintasan.Lintasan].[Semua Lintasan].[AIMERE_KUPANG]},
Crossjoin([Dimensi Kapal.Kapal].[Semua Kapal].Children, {([Dimensi Waktu.Waktu].[Semua Waktu], [Dimensi Tiket.Tiket].[Semua
Tiket])})), Crossjoin({[Dimensi Lintasan.Lintasan].[Semua Lintasan].[AIMERE_KUPANG]}, Union(Crossjoin({[Dimensi Kapal.Kapal].[Semua Kapal].[BALIBO]}, Crossjoin([Dimensi
Waktu.Waktu].[Semua Waktu].Children, {[Dimensi Tiket.Tiket].[Semua Tiket]})), Crossjoin({[Dimensi Kapal.Kapal].[Semua
Kapal].[BALIBO]}, Crossjoin([Dimensi Waktu.Waktu].[Semua Waktu].[2010].Children, {[Dimensi Tiket.Tiket].[Semua Tiket]}))))))) ON ROWS
from [Rekapitulasi_Pelayanan]
4.4.3 Halaman Menu Laporan Produksi
Halaman ini menyajikan informasi jumlah produksi tiket kapal yang terjual pada tahun 2010 dan 2011. Halaman menu laporan produksi dapat dilihat pada gambar 4.40
Halaman menu laporan produksi mengakses halaman LaporanProduksi.jsp. Dalam halaman LaporanProduksi.jsp terdapat struktur MDX yang digunakan untuk mengakses database asdpferry sehingga data diperoleh dalam bentuk multidimensi. Struktur LaporanProduksii.jsp terdapat pada tabel 4.16.
Tabel 4.16 Struktur halaman laporan Produksi.jsp
<jp:mondrianQuery id="query01" jdbcDriver="com.mysql.jdbc.Driver" jdbcUrl="jdbc:mysql://localhost/asdpferry?user=root&password=123456" catalogUri="/WEB-INF/queries/LaporanProduksi.xml">
select NON EMPTY Crossjoin({[Measures].[Produksi]}, Union({[Dimensi Tiket.Tiket].[Semua Tiket]}, [Dimensi Tiket.Tiket].[Semua
Tiket].Children)) ON COLUMNS, NON EMPTY Hierarchize(Union(Union(Union(Union(Union(Union(Union(Union(Union(Union(U nion(Union(Union(Union(Union(Union(Union(Union(Union(Union(Union(Union(Un ion(Union(Union(Union(Union(Union(Union(Union(Union(Union(Union(Union(Uni on(Union(Union(Union(Crossjoin({[Dimensi Lintasan.Lintasan].[Semua Lintasan]}, Union(Crossjoin({[Dimensi Kapal.Kapal].[Semua Kapal]}, {[Dimensi Waktu.Waktu].[Semua Waktu]}), Crossjoin({[Dimensi
Kapal.Kapal].[Semua Kapal]}, [Dimensi Waktu.Waktu].[Semua
Waktu].Children))), Crossjoin({[Dimensi Lintasan.Lintasan].[Semua
Lintasan].[AIMERE_KUPANG]}, Union(Crossjoin({[Dimensi Kapal.Kapal].[Semua Kapal]}, {[Dimensi Waktu.Waktu].[Semua Waktu]}), Crossjoin({[Dimensi Kapal.Kapal].[Semua Kapal]}, [Dimensi Waktu.Waktu].[Semua
Waktu].Children)))), Crossjoin({[Dimensi Lintasan.Lintasan].[Semua Lintasan].[AIMERE_WAINGAPU]}, Union(Crossjoin({[Dimensi
Kapal.Kapal].[Semua Kapal]}, {[Dimensi Waktu.Waktu].[Semua Waktu]}), Crossjoin({[Dimensi Kapal.Kapal].[Semua Kapal]}, [Dimensi
Waktu.Waktu].[Semua Waktu].Children)))), Crossjoin({[Dimensi Lintasan.Lintasan].[Semua Lintasan].[BARANUSA_KALABAHI]},
Union(Crossjoin({[Dimensi Kapal.Kapal].[Semua Kapal]}, {[Dimensi Waktu.Waktu].[Semua Waktu]}), Crossjoin({[Dimensi Kapal.Kapal].[Semua Kapal]}, [Dimensi Waktu.Waktu].[Semua Waktu].Children)))),
Crossjoin({[Dimensi Lintasan.Lintasan].[Semua
Lintasan].[BARANUSA_LEWOLEBA]}, Union(Crossjoin({[Dimensi
Kapal.Kapal].[Semua Kapal]}, {[Dimensi Waktu.Waktu].[Semua Waktu]}), Crossjoin({[Dimensi Kapal.Kapal].[Semua Kapal]}, [Dimensi
Waktu.Waktu].[Semua Waktu].Children)))), Crossjoin({[Dimensi Lintasan.Lintasan].[Semua Lintasan].[ENDE_KUPANG]},
Union(Crossjoin({[Dimensi Kapal.Kapal].[Semua Kapal]}, {[Dimensi Waktu.Waktu].[Semua Waktu]}), Crossjoin({[Dimensi Kapal.Kapal].[Semua Kapal]}, [Dimensi Waktu.Waktu].[Semua Waktu].Children)))),
Crossjoin({[Dimensi Lintasan.Lintasan].[Semua Lintasan].[ENDE_WAINGAPU]}, Union(Crossjoin({[Dimensi Kapal.Kapal].[Semua Kapal]}, {[Dimensi
Waktu.Waktu].[Semua Waktu]}), Crossjoin({[Dimensi Kapal.Kapal].[Semua Kapal]}, [Dimensi Waktu.Waktu].[Semua Waktu].Children)))),
Crossjoin({[Dimensi Lintasan.Lintasan].[Semua
Lintasan].[KALABAHI_KUPANG]}, Union(Crossjoin({[Dimensi
Kapal.Kapal].[Semua Kapal]}, {[Dimensi Waktu.Waktu].[Semua Waktu]}), Crossjoin({[Dimensi Kapal.Kapal].[Semua Kapal]}, [Dimensi
Waktu.Waktu].[Semua Waktu].Children)))), Crossjoin({[Dimensi Lintasan.Lintasan].[Semua Lintasan].[KALABAHI_BARANUSA]},
Union(Crossjoin({[Dimensi Kapal.Kapal].[Semua Kapal]}, {[Dimensi Waktu.Waktu].[Semua Waktu]}), Crossjoin({[Dimensi Kapal.Kapal].[Semua Kapal]}, [Dimensi Waktu.Waktu].[Semua Waktu].Children)))),
Crossjoin({[Dimensi Lintasan.Lintasan].[Semua
Lintasan].[KALABAHI_LEWOLEBA]}, Union(Crossjoin({[Dimensi
Kapal.Kapal].[Semua Kapal]}, {[Dimensi Waktu.Waktu].[Semua Waktu]}), Crossjoin({[Dimensi Kapal.Kapal].[Semua Kapal]}, [Dimensi
Waktu.Waktu].[Semua Waktu].Children)))), Crossjoin({[Dimensi Lintasan.Lintasan].[Semua Lintasan].[KALABAHI_TELUKGURITA]}, Union(Crossjoin({[Dimensi Kapal.Kapal].[Semua Kapal]}, {[Dimensi Waktu.Waktu].[Semua Waktu]}), Crossjoin({[Dimensi Kapal.Kapal].[Semua Kapal]}, [Dimensi Waktu.Waktu].[Semua Waktu].Children)))),
Crossjoin({[Dimensi Lintasan.Lintasan].[Semua Lintasan].[KUPANG_AIMERE]}, Union(Crossjoin({[Dimensi Kapal.Kapal].[Semua Kapal]}, {[Dimensi
Waktu.Waktu].[Semua Waktu]}), Crossjoin({[Dimensi Kapal.Kapal].[Semua Kapal]}, [Dimensi Waktu.Waktu].[Semua Waktu].Children)))),
Crossjoin({[Dimensi Lintasan.Lintasan].[Semua Lintasan].[KUPANG_ENDE]}, Union(Crossjoin({[Dimensi Kapal.Kapal].[Semua Kapal]}, {[Dimensi
Waktu.Waktu].[Semua Waktu]}), Crossjoin({[Dimensi Kapal.Kapal].[Semua Kapal]}, [Dimensi Waktu.Waktu].[Semua Waktu].Children)))),
Crossjoin({[Dimensi Lintasan.Lintasan].[Semua
Lintasan].[KALABAHI_LARANTUKA]}, Union(Crossjoin({[Dimensi
Kapal.Kapal].[Semua Kapal]}, {[Dimensi Waktu.Waktu].[Semua Waktu]}), Crossjoin({[Dimensi Kapal.Kapal].[Semua Kapal]}, [Dimensi
Waktu.Waktu].[Semua Waktu].Children)))), Crossjoin({[Dimensi Lintasan.Lintasan].[Semua Lintasan].[KUPANG_KALABAHI]},
Union(Crossjoin({[Dimensi Kapal.Kapal].[Semua Kapal]}, {[Dimensi Waktu.Waktu].[Semua Waktu]}), Crossjoin({[Dimensi Kapal.Kapal].[Semua Kapal]}, [Dimensi Waktu.Waktu].[Semua Waktu].Children)))),
Crossjoin({[Dimensi Lintasan.Lintasan].[Semua
Lintasan].[KUPANG_LARANTUKA]}, Union(Crossjoin({[Dimensi
Kapal.Kapal].[Semua Kapal]}, {[Dimensi Waktu.Waktu].[Semua Waktu]}), Crossjoin({[Dimensi Kapal.Kapal].[Semua Kapal]}, [Dimensi
Waktu.Waktu].[Semua Waktu].Children)))), Crossjoin({[Dimensi Lintasan.Lintasan].[Semua Lintasan].[KUPANG_LEWOLEBA]},
Union(Crossjoin({[Dimensi Kapal.Kapal].[Semua Kapal]}, {[Dimensi Waktu.Waktu].[Semua Waktu]}), Crossjoin({[Dimensi Kapal.Kapal].[Semua Kapal]}, [Dimensi Waktu.Waktu].[Semua Waktu].Children)))),
Crossjoin({[Dimensi Lintasan.Lintasan].[Semua Lintasan].[KUPANG_ROTE]}, Union(Crossjoin({[Dimensi Kapal.Kapal].[Semua Kapal]}, {[Dimensi
Waktu.Waktu].[Semua Waktu]}), Crossjoin({[Dimensi Kapal.Kapal].[Semua Kapal]}, [Dimensi Waktu.Waktu].[Semua Waktu].Children)))),
Crossjoin({[Dimensi Lintasan.Lintasan].[Semua Lintasan].[KUPANG_SABU]}, Union(Crossjoin({[Dimensi Kapal.Kapal].[Semua Kapal]}, {[Dimensi
Waktu.Waktu].[Semua Waktu]}), Crossjoin({[Dimensi Kapal.Kapal].[Semua Kapal]}, [Dimensi Waktu.Waktu].[Semua Waktu].Children)))),
Crossjoin({[Dimensi Lintasan.Lintasan].[Semua
Lintasan].[KUPANG_WAINGAPU]}, Union(Crossjoin({[Dimensi
Kapal.Kapal].[Semua Kapal]}, {[Dimensi Waktu.Waktu].[Semua Waktu]}), Crossjoin({[Dimensi Kapal.Kapal].[Semua Kapal]}, [Dimensi
Waktu.Waktu].[Semua Waktu].Children)))), Crossjoin({[Dimensi Lintasan.Lintasan].[Semua Lintasan].[LARANTUKA_KALABAHI]}, Union(Crossjoin({[Dimensi Kapal.Kapal].[Semua Kapal]}, {[Dimensi Waktu.Waktu].[Semua Waktu]}), Crossjoin({[Dimensi Kapal.Kapal].[Semua Kapal]}, [Dimensi Waktu.Waktu].[Semua Waktu].Children)))),
Crossjoin({[Dimensi Lintasan.Lintasan].[Semua
Lintasan].[LARANTUKA_KUPANG]}, Union(Crossjoin({[Dimensi
Kapal.Kapal].[Semua Kapal]}, {[Dimensi Waktu.Waktu].[Semua Waktu]}), Crossjoin({[Dimensi Kapal.Kapal].[Semua Kapal]}, [Dimensi
Waktu.Waktu].[Semua Waktu].Children)))), Crossjoin({[Dimensi Lintasan.Lintasan].[Semua Lintasan].[LARANTUKA_LEWOLEBA]},
Union(Crossjoin({[Dimensi Kapal.Kapal].[Semua Kapal]}, {[Dimensi Waktu.Waktu].[Semua Waktu]}), Crossjoin({[Dimensi Kapal.Kapal].[Semua Kapal]}, [Dimensi Waktu.Waktu].[Semua Waktu].Children)))),
Crossjoin({[Dimensi Lintasan.Lintasan].[Semua
Lintasan].[LARANTUKA_WAIWERANG]}, Union(Crossjoin({[Dimensi
Kapal.Kapal].[Semua Kapal]}, {[Dimensi Waktu.Waktu].[Semua Waktu]}), Crossjoin({[Dimensi Kapal.Kapal].[Semua Kapal]}, [Dimensi
Waktu.Waktu].[Semua Waktu].Children)))), Crossjoin({[Dimensi Lintasan.Lintasan].[Semua Lintasan].[WAIWERANG_LEWOLEBA]}, Union(Crossjoin({[Dimensi Kapal.Kapal].[Semua Kapal]}, {[Dimensi Waktu.Waktu].[Semua Waktu]}), Crossjoin({[Dimensi Kapal.Kapal].[Semua Kapal]}, [Dimensi Waktu.Waktu].[Semua Waktu].Children)))),
Crossjoin({[Dimensi Lintasan.Lintasan].[Semua Lintasan].[ROTE_KUPANG]}, Union(Crossjoin({[Dimensi Kapal.Kapal].[Semua Kapal]}, {[Dimensi
Waktu.Waktu].[Semua Waktu]}), Crossjoin({[Dimensi Kapal.Kapal].[Semua Kapal]}, [Dimensi Waktu.Waktu].[Semua Waktu].Children)))),
Crossjoin({[Dimensi Lintasan.Lintasan].[Semua Lintasan].[SABU_KUPANG]}, Union(Crossjoin({[Dimensi Kapal.Kapal].[Semua Kapal]}, {[Dimensi
Waktu.Waktu].[Semua Waktu]}), Crossjoin({[Dimensi Kapal.Kapal].[Semua Kapal]}, [Dimensi Waktu.Waktu].[Semua Waktu].Children)))),
Crossjoin({[Dimensi Lintasan.Lintasan].[Semua
Lintasan].[LEWOLEBA_KALABAHI]}, Union(Crossjoin({[Dimensi
Kapal.Kapal].[Semua Kapal]}, {[Dimensi Waktu.Waktu].[Semua Waktu]}), Crossjoin({[Dimensi Kapal.Kapal].[Semua Kapal]}, [Dimensi
Waktu.Waktu].[Semua Waktu].Children)))), Crossjoin({[Dimensi Lintasan.Lintasan].[Semua Lintasan].[LEWOLEBA_KUPANG]},
Union(Crossjoin({[Dimensi Kapal.Kapal].[Semua Kapal]}, {[Dimensi Waktu.Waktu].[Semua Waktu]}), Crossjoin({[Dimensi Kapal.Kapal].[Semua Kapal]}, [Dimensi Waktu.Waktu].[Semua Waktu].Children)))),
Crossjoin({[Dimensi Lintasan.Lintasan].[Semua
Lintasan].[LEWOLEBA_BARANUSA]}, Union(Crossjoin({[Dimensi
Kapal.Kapal].[Semua Kapal]}, {[Dimensi Waktu.Waktu].[Semua Waktu]}), Crossjoin({[Dimensi Kapal.Kapal].[Semua Kapal]}, [Dimensi
Waktu.Waktu].[Semua Waktu].Children)))), Crossjoin({[Dimensi Lintasan.Lintasan].[Semua Lintasan].[LEWOLEBA_LARANTUKA]}, Union(Crossjoin({[Dimensi Kapal.Kapal].[Semua Kapal]}, {[Dimensi Waktu.Waktu].[Semua Waktu]}), Crossjoin({[Dimensi Kapal.Kapal].[Semua Kapal]}, [Dimensi Waktu.Waktu].[Semua Waktu].Children)))),
Crossjoin({[Dimensi Lintasan.Lintasan].[Semua Lintasan].[SABU_WAINGAPU]}, Union(Crossjoin({[Dimensi Kapal.Kapal].[Semua Kapal]}, {[Dimensi
Waktu.Waktu].[Semua Waktu]}), Crossjoin({[Dimensi Kapal.Kapal].[Semua Kapal]}, [Dimensi Waktu.Waktu].[Semua Waktu].Children)))),
Crossjoin({[Dimensi Lintasan.Lintasan].[Semua
Lintasan].[TELUKGURITA_KALABAHI]}, Union(Crossjoin({[Dimensi
Kapal.Kapal].[Semua Kapal]}, {[Dimensi Waktu.Waktu].[Semua Waktu]}), Crossjoin({[Dimensi Kapal.Kapal].[Semua Kapal]}, [Dimensi
Waktu.Waktu].[Semua Waktu].Children)))), Crossjoin({[Dimensi Lintasan.Lintasan].[Semua Lintasan].[LEWOLEBA_WAIWERANG]}, Union(Crossjoin({[Dimensi Kapal.Kapal].[Semua Kapal]}, {[Dimensi Waktu.Waktu].[Semua Waktu]}), Crossjoin({[Dimensi Kapal.Kapal].[Semua Kapal]}, [Dimensi Waktu.Waktu].[Semua Waktu].Children)))),
Crossjoin({[Dimensi Lintasan.Lintasan].[Semua
Lintasan].[WAINGAPU_AIMERE]}, Union(Crossjoin({[Dimensi
Kapal.Kapal].[Semua Kapal]}, {[Dimensi Waktu.Waktu].[Semua Waktu]}), Crossjoin({[Dimensi Kapal.Kapal].[Semua Kapal]}, [Dimensi
Waktu.Waktu].[Semua Waktu].Children)))), Crossjoin({[Dimensi Lintasan.Lintasan].[Semua Lintasan].[WAINGAPU_ENDE]},
Union(Crossjoin({[Dimensi Kapal.Kapal].[Semua Kapal]}, {[Dimensi Waktu.Waktu].[Semua Waktu]}), Crossjoin({[Dimensi Kapal.Kapal].[Semua Kapal]}, [Dimensi Waktu.Waktu].[Semua Waktu].Children)))),
Crossjoin({[Dimensi Lintasan.Lintasan].[Semua
Lintasan].[WAINGAPU_KUPANG]}, Union(Crossjoin({[Dimensi
Crossjoin({[Dimensi Kapal.Kapal].[Semua Kapal]}, [Dimensi Waktu.Waktu].[Semua Waktu].Children)))), Crossjoin({[Dimensi Lintasan.Lintasan].[Semua Lintasan].[WAIWERANG_LARANTUKA]}, Union(Crossjoin({[Dimensi Kapal.Kapal].[Semua Kapal]}, {[Dimensi Waktu.Waktu].[Semua Waktu]}), Crossjoin({[Dimensi Kapal.Kapal].[Semua Kapal]}, [Dimensi Waktu.Waktu].[Semua Waktu].Children)))),
Crossjoin({[Dimensi Lintasan.Lintasan].[Semua Lintasan].[WAINGAPU_SABU]}, Union(Crossjoin({[Dimensi Kapal.Kapal].[Semua Kapal]}, {[Dimensi
Waktu.Waktu].[Semua Waktu]}), Crossjoin({[Dimensi Kapal.Kapal].[Semua Kapal]}, [Dimensi Waktu.Waktu].[Semua Waktu].Children))))) ON ROWS from [Laporan_Produksi]
</jp:mondrianQuery>
4.4.4 Halaman Menu Laporan Pendapatan
Halaman ini menyajikan informasi jumlah pendapatan PT. ASDP Ferry Kupang dalam penjualan tiket kapal pada tahun 2010 dan 2011. Halaman menu laporan produksi dapat dilihat pada gambar 4.41
Gambar 4.41 Tampilan halaman Laporan Pendapatan
Halaman menu laporan pendapatan mengakses halaman LaporanPendapatan.jsp. Dalam halaman laporanPendapatan.jsp terdapat
struktur MDX yang digunakan untuk mengakses database asdpferry sehingga data diperoleh dalam bentuk multidimensi. Struktur LaporanPendapatan.jsp terdapat pada tabel 4.17.
Tabel 4.17 Struktur halaman laporan Pendapatan.jsp
<jp:mondrianQuery id="query01" jdbcDriver="com.mysql.jdbc.Driver" jdbcUrl="jdbc:mysql://localhost/asdpferry?user=root&password=12345 6"
catalogUri="/WEB-INF/queries/LaporanPendapatan.xml"> select NON EMPTY Crossjoin({[Measures].[Pendapatan]}, Union({[Dimensi Tiket.Tiket].[Semua Tiket]}, [Dimensi Tiket.Tiket].[Semua Tiket].Children)) ON COLUMNS,
NON EMPTY Hierarchize(Union(Union(Union(Crossjoin({[Dimensi Lintasan.Lintasan].[Semua Lintasan]}, Union(Crossjoin({[Dimensi Kapal.Kapal].[Semua Kapal]}, {[Dimensi Waktu.Waktu].[Semua Waktu]}), Crossjoin({[Dimensi Kapal.Kapal].[Semua Kapal]}, [Dimensi Waktu.Waktu].[Semua Waktu].Children))),
Crossjoin({[Dimensi Lintasan.Lintasan].[Semua Lintasan]}, Union(Crossjoin([Dimensi Kapal.Kapal].[Semua Kapal].Children, {[Dimensi Waktu.Waktu].[Semua Waktu]}), Crossjoin([Dimensi
Kapal.Kapal].[Semua Kapal].Children, [Dimensi Waktu.Waktu].[Semua Waktu].Children)))), Union(Crossjoin([Dimensi
Lintasan.Lintasan].[Semua Lintasan].Children,
Union(Crossjoin({[Dimensi Kapal.Kapal].[Semua Kapal]}, {[Dimensi Waktu.Waktu].[Semua Waktu]}), Crossjoin({[Dimensi
Kapal.Kapal].[Semua Kapal]}, [Dimensi Waktu.Waktu].[Semua
Waktu].Children))), Crossjoin([Dimensi Lintasan.Lintasan].[Semua Lintasan].Children, Union(Crossjoin([Dimensi Kapal.Kapal].[Semua Kapal].Children, {[Dimensi Waktu.Waktu].[Semua Waktu]}),
Crossjoin([Dimensi Kapal.Kapal].[Semua Kapal].Children, [Dimensi Waktu.Waktu].[Semua Waktu].Children))))), Crossjoin({[Dimensi Lintasan.Lintasan].[Semua Lintasan].[AIMERE_KUPANG]},
Union(Crossjoin({[Dimensi Kapal.Kapal].[Semua Kapal]}, [Dimensi Waktu.Waktu].[Semua Waktu].[2010].Children), Crossjoin({[Dimensi Kapal.Kapal].[Semua Kapal]}, [Dimensi Waktu.Waktu].[Semua
Waktu].[2010].[January].Children))))) ON ROWS from [Laporan_Pendapatan]
</jp:mondrianQuery>
<c:set var="title01" scope="session">Laporan Pendapatan</c:set>
4.4.5 Halaman Menu Transformasi Data
Gambar 4.42 Tampilan halaman menu Transformasi Data
Pada halaman transformasi data, pengguna diberi kewenangan untuk melakukan transfer data operasional produksi dan pendapatan dengan memilih tombol “Transfer Data”. Listing program untuk implementasi halaman menu transformasi data terdapat pada tabel 4.18.
Tabel 4.18 Listing Program untuk Halaman Transformasi Data
<BODY leftMargin=0 topMargin=0 marginheight="0" marginwidth="0">
<CENTER>
<table><tr><td height="1"></td></tr></table>
<TABLE align="center" cellSpacing=0 cellPadding=0 width=700 border=0>
<TBODY> <TR>
<TD background="images/logo.JPG" width="645" height="120" class="nav" align="center"></TD>
</TR> </TBODY> </TABLE>
<TABLE cellSpacing=0 cellPadding=0 width=700 height="20" border=0> <TBODY>
<TR><TD align="right" background="images/bg1.gif"><SPAN class="txt">
</B></SPAN></TD></TR></TABLE>
<TABLE cellSpacing=0 cellPadding=0 width="700" bordercolor="#000000" border="0" height="200"> <TBODY>
<TR>
<TD width="150" height="200" vAlign=top background="images/bg_side_b.gif">
<TABLE cellSpacing=5 cellPadding=0 width="180" border=0> <TR>
<TD background="images/cel.gif" height="30"
valign="middle" align="center" class="nav"><font color="#FFFFFF" size="3"><u>MENU</u></font></TD> </TR> <TR> <TD background="images/bg_side_b.gif" height="1"></TD> </TR> <TR> <TD background="images/bottom_bar_b.gif" height="30" align="center" valign="top"><A class=nav
href="update_produk.jsp"><font size="2" face="Arial, Helvetica, sans-serif"><strong>Rekapitulasi Pelayanan
</strong></font></A></TD> </TR> <TR> <TD background="images/bg_side_b.gif" height="1"></TD> </TR> <TR> <TD background="images/bottom_bar_b.gif" height="30" align="center" valign="top"><A class=nav
href="update_support.jsp"><font size="2" face="Arial, Helvetica, sans-serif"><strong>Laporan Produksi</strong></font></A></TD> </TR> <TR> <TD background="images/bg_side_b.gif" height="1"></TD> </TR> <TR> <TD background="images/bottom_bar_b.gif" height="30" align="center" valign="top"><A class=nav
href="update_support.jsp"><font size="2" face="Arial, Helvetica, sans-serif"><strong>Laporan
</TR> <TR> <TD background="images/bg_side_b.gif" height="1"></TD> </TR> <TD background="images/bottom_bar_b.gif" height="30" align="center" valign="top"><A class=nav
href="top10.jsp"><font size="2" face="Arial, Helvetica, sans-serif"><strong>Transformasi Data</strong></font></A></TD> </TR> <TR> <TD background="images/bg_side_b.gif" height="1"></TD> </TR> <TD background="images/bottom_bar_b.gif" height="30" align="center" valign="top"><A class=nav
href="proses_apriori.jsp"><font size="2" face="Arial, Helvetica, sans-serif"><strong>Pola Asosiasi
Kapal</strong></font></A></TD> </TR> <TR> <TD background="images/bg_side_b.gif" height="1"></TD> </TR> <TR> <TD background="images/bottom_bar_b.gif" height="30" align="center" valign="top"><A class=nav href="Control.jsp?logout=true"><font size="2" face="Arial, Helvetica, sans-
serif"><strong>Keluar</strong></font></A></TD> </TR>
<TR>
<TD bgColor=#bbbbbb><IMG height=3 alt="" src="images/spacer.gif" width=1></TD></TR>
</TABLE> </TD>
<td valign="top" background="images/bgc.gif"> <table width="100%" border="0" cellspacing="5"> <tr>
<td height="20" background="images/cel.gif"> <div align="center"><font color="#FFFFFF" size="5"><strong><font face="Arial, Helvetica, sans-serif">
Transformasi
Data</font></strong></font></div></td> </tr>
<table cellpadding="0" cellspacing="20">
<tr>
<td class="bodytext" valign="top"> <p align="justify" class="bodytext"><br> <form
action="Control.jsp?action=1" method="post">
<h4 style="font-size:12pt; color:red "></h4> <br>
<input type="button" value="Transfer Data" onclick="ambil()"/>
</form> </tr></table>
</td></TR></TBODY></TABLE>
<table cellspacing="0" width="700"> <tbody><tr>
<td width="750" height="20" background="images/bg1.gif" align="left" class="txt">©
copyright by Esy All Rights Reserved</td> <td width="50%" height="20"
background="images/bg1.gif" align="right" class="txtw"><a href="#"><u>Kembali
ke Atas</u></a></td> </tr></tbody></table> </CENTER>
</BODY>
Proses transfer data operasional dilakukan dengan memanggil file Control.jsp, kemudian menjalankan method runbat untuk mengesekusi file Automatisasi_data.bat. Listing program untuk Control.jsp dapat dilihat pada tabel 4.19 dan listing program method runBat pada kelas Tools.java dapat dilihat pada tabel 4.20.
Tabel 4.19 Fungsi Transformasi pada Control.jsp
. . .
}else if (request.getParameter("action") != null) {
if (request.getParameter("action").equals("1")) { //method runbat 1 boolean result = Tools.Tools.runBat("Automatisasi_data.bat"); out.print(result); } . . .
Tabel 4.20 Method runBat pada kelas Tools.java
public static boolean runBat(String file){ boolean result = false;
try{
String path = System.getProperty("user.dir"); path = path.replace("bin", "webapps");
path = path + "/ASDP/" + file; System.out.println(path); File f = new File(path);
if (Desktop.isDesktopSupported()){ Desktop.getDesktop().open(f); }
result = true; } catch (Exception ex){
} return result;
4.4.6 Halaman Menu Aturan Asosiasi
Halaman menu perhitungan asosiasi dapat dilihat pada gambar 4.43
Gambar 4.43 Tampilan menu perhitungan asosiasi
Pada perhitungan asosiasi, pengguna diberi kewenangan untuk mengisi minimum support dan minimum confidence yang akan digunakan
dalam proses perhitungan algoritma apriori. Listing program untuk implementasi halaman menu pola asosiasi kapal terdapat pada tabel 4.21.
Tabel 4.21 Listing Program halaman pola asosiasi
---
<table cellSpacing=0 cellPadding=0 width="700" bordercolor="#000000" border="0" height="200">
<tbody> <tr>
<td width="150" height="200" vAlign=top background="images/bg_side_b.gif">
<table cellspacing=5 cellpadding="0" width="180" border="0">
<tr> <TD
background="images/cel.gif" height="30" valign="middle" align="center" class="nav"><font color="#FFFFFF"
size="3"><u>MENU</u></font></TD> </tr> <tr> <TD background="images/bg_side_b.gif" height="1"></TD> </tr> <tr> <TD
background="images/bottom_bar_b.gif" height="30" align="center" valign="top"><A class=nav
href="testpage.jsp?query=LaporanRekapitulasi"><font size="2" face="Arial, Helvetica, sans-serif"><strong>Rekapitulasi Pelayanan </strong></font></A></TD> </tr> <tr> <TD background="images/bg_side_b.gif" height="1"></TD> </tr> <tr> <TD
background="images/bottom_bar_b.gif" height="30" align="center" valign="top"><A class=nav
href="testpage.jsp?query=LaporanProduksi"><font size="2" face="Arial, Helvetica, sans-serif"><strong>Laporan Produksi</strong></font></A></TD> </tr> <tr> <TD background="images/bg_side_b.gif" height="1"></TD> </tr> <tr> <TD
background="images/bottom_bar_b.gif" height="30" align="center" valign="top"><A class=nav
href="testpage.jsp?query=LaporanPendapatan"><font size="2" face="Arial, Helvetica, sans-serif"><strong>Laporan Pendapatan</strong></font></A></TD>