BAB III ANALISIS DAN PERANCANGAN SISTEM
3.1
Spesifikasi Rumusan Rancangan Perancangan program untuk aplikasi ini adalah berupa layanan aplikasi penyedia
jasa penjualan data-data saham, dimana aplikasi ini terdiri dari: •
Proses Download Data Proses ini bertujuan untuk mendownload data harga saham yang ingin dianalisa dari Yahoo Finance secara online. Data-data yang telah didownload akan dimasukkan ke dalam database. Data-data saham tersebut akan didownload secara otomatis setiap harinya.
•
Proses Registrasi Account Setiap client yang ingin mendapatkan data-data saham, mesti melakukan registrasi terlebih dahulu. Karena keterbatasan waktu, user hanya melakukan registrasi secara gratis tanpa melakukan sistem pembayaran melalui kartu kredit atau yang lainnya. Dalam proses ini, user dapat melakukan update untuk menambah batasan pengaksesan data jika jumlah batasan pengaksesan user itu telah habis. Pada proses ini user akan diberi license number yang akan digunakan untuk proses pengaksesan data melalui web service nantinya. License Number yang digenerate akan menggunakan fungsi enkripsi sederhana berupa MD5.
57
•
Proses Pengupdatean Account Proses ini akan mengupdate jumlah batasan pengaksesan user jika batasan pengaksesan user tersebut telah habis. Setiap proses ini dilakukan maka jumlah batasan pengaksesan client tersebut akan ditambah sebanyak 50 kali. License number yang diberikan akan tetap sama seperti yang terdahulu.
•
Proses Penyajian data Proses ini akan menyajikan data untuk user yang telah melakukan registrasi dimana user tersebut memiliki jumlah batasan pengaksesan. Jika jumlah batasan pengaksesan user habis, maka user mesti melakukan update pada proses registrasi sebelumnya.
3.2 Analisis Masalah Permasalahan-permasalahan yang timbul dalam aplikasi ini adalah sebagai berikut:
3.2.1 Penggunaan SQL dalam Java Java menyediakan Java Database Connectivity (JDBC) API ketika kita ingin melakukan hubungan antara aplikasi Java dengan database SQL untuk penyimpanan data/informasi. SQL itu sendiri mungkin ditulis dengan tangan dan kemudian diembedded ke dalam code Java, atau dapat di-generate pada saat runtime. Kita menggunakan JDBC API untuk melakukan query, melakukan perulangan dari awal sampai akhir terhadap result set dari suatu tabel, mengambil nilai-nilai dari result set tersebut, dan lainnya. Hal ini merupakan tugas pengaksesan data secara low level.
58
Sebagai developer aplikasi, kita lebih tertarik dalam masalah bisnis (logika bisnis) yang membutuhkan pengaksesan data ini. Tidak seharusnya kita terlalu memfokuskan diri pada tugas low level dan yang terlalu mekanis secara detil ini apalagi jika aplikasi tersebut telah berada pada tahap enterprise. Hal ini dapat membuat durasi penyelesaian suatu project aplikasi menjadi lebih lama. Penggunaan SQL secara manual juga mengakibatkan tingkat maintenance yang tinggi apabila terjadi perubahan pada struktur dan schema pada tabel-table dalam database dan perpindahan vendor database yang mengakibatkan perubahan syntak SQL pada code Java yang telah kita buat, jika aplikasi tersebut ingin diperluas.
3.2.2 Pengembangan aplikasi interface dan MVC dalam web Java telah menyediakan servlet API dalam pengembangan aplikasi web. Namun dalam hal ini, developer masih dihadapi dengan permasalahan dalam menggunakan statement println yang digunakan untuk me-render HTML, seperti yang dibawah ini: out.println(“”); out.println(“”); Masalah diatas membuat kompleksitas aplikasi semakin meningkat dan membuat developer java berubah menjadi seorang designer HTML. Penggunaan servlet juga mengakibatkan
campur
aduk
antara
tampilan
dan
business
logic
sehingga
mengakibatkan sulitnya untuk maintenance aplikasi tersebut jika terjadi perubahan. Untuk mengatasi masalah ini, pihak Sun telah memperkenal teknologi JSP yang mengkombinasikan teknologi scripting dan templating menjadi suatu kesatuan. Akan tetapi, teknologi JSP ini hanya mempermudah dalam hal merancang desain suatu halaman HTML, karena pada JSP ini, kita tetap harus menambahkan logika ke dalam 59
halaman JSP. Hal ini juga membuat kesulitan maintenance dalam sebuah aplikasi karena adanya campur aduk antara tampilan dan logika.
3.2.3 Penyajian Data dan Integritas Aplikasi Masalah yang sering terjadi dalam hal penyajian data adalah ketidakkompatibilitasnya format antara satu aplikasi dengan aplikasi yang lain. Penyajian data saham dalam aplikasi ini dapat saja berbeda dengan format aplikasi client yang hendak mengakses data pada aplikasi ini. Akibat format yang tidak sesuai dengan aplikasi client yang telah ada, maka client memerlukan tugas tambahan untuk menerjemahkan data yang disajikan dalam aplikasi server ini agar bisa dipakai dalam aplikasinya. Hal ini mengurangi efesiensi aplikasi client yang hendak memakai data yang akan kita sajikan. Hal lain berikutnya yang akan terjadi adalah jika client menggunakan platform, hardware, dan bahasa pemrograman yang berbeda sehingga mengakibatkan client tidak dapat mengakses data yang telah kita sajikan. Hal ini menyebabkan tidak adanya integritas antara aplikasi server (aplikasi provider data saham) dengan aplikasi client yang hendak mengakses data-data saham tersebut.
3.2.3 Analisis Data Provider Saham Permasalahan yang dihadapi oleh sebuah data provider saham adalah bagaimana suatu perusahaan dapat menjual data saham kepada customer yang memerlukan sebanyak mungkin. Dalam masalah saham, biasanya data saham tersebut dibutuhkan oleh aplikasi lain sebagai informasi atau data yang akan mereka gunakan atau manipulasikan. Selain itu, jika data saham dijual dengan menggunakan laporan tertulis membuat ketidak-efesiensi dalam hal biaya yang akan dikeluarkan dan waktu, serta 60
kerja tambahan untuk penginputan data-data pada sistem yang telah terkomputerisasi. Dengan memanfaatkan teknologi internet sekarang ini, maka suatu data provider saham dapat menyediakan jasa penjualan kepada masyarakat lebih luas tanpa harus memikirkan letak geografis. Akan tetapi, Permasalahan ketidak-kompatibilitas suatu aplikasi dengan aplikasi lain jika penjualan data saham melalui sistem terkomputerisasi menyebabkan suatu data provider saham sulit menyediakan jasa bagi aplikasi-aplikasi yang memerlukan
dikarenakan
masalah-masalah
kompatibilitas,
yang
misalnya:
kompatibilitas hardware, operating system, bahasa pemrograman, dan lainnya.
3.3 Usulan Pemecahan Masalah Pemecahan untuk permasalahan-permasalahan diatas dapat dilakukan dengan:
3.3.1 Object Relational Mapping (ORM) Dengan adanya penerapan ORM, para developer tidak perlu memikirkan lagi tugas-tugas pengaksesan data dan manipulasi dengan menggunakan syntak SQL. Untuk pengaksesan dan manipulasi data dalam database telah ditangani oleh frameworkframework ORM yang ada, sehingga kita bisa hanya memfokuskan diri pada logika bisnis dan tidak perlu menangani tugas low level untuk pengaksesan dan manipulasi data ini. Keuntungan-keuntungan yang diperoleh dalam ORM, yakni: -
Meningkatkan produktivitas, karena pengerjaan low level untuk syntak SQL telah dihilangkan.
-
Memudahkan maintenance, karena operasi-operasi pada database telah mengikuti konsep OOP (di-mapping ke dalam objek) yang sebelumnya
61
diambil dari Relational Database yang hanya berupa suatu kesatuan barisbaris dalam tabel. -
Vendor Independence, dimana ORM ini bebas dari vendor database manapun, sehingga jika terjadi pertukaran vendor database, code yang sama tetap akan dipakai.
Framework yang akan digunakan untuk aplikasi saham ini adalah framework Hibernate.
3.3.2 Java Server Faces Pemakaian framework-framework untuk web aplikasi sekarang ini telah dapat memisahkan logika bisnis dari tampilan HTML sehingga dapat diterapkan konsep MVC. Cara yang digunakan adalah dengan pemakaian tag-tag JSP baik yang telah didefinisikan secara standar, yaitu berupa JSP Standard Tag Library (JSTL) maupun tag-tag JSP yang didefinisikan oleh framework-framework web aplikasi itu sendiri. Framework-framework yang tersedia pada saat penulisan ini untuk web aplikasi ini adalah sebagai berikut: Tapestry, Webwork, Struts, JSF, dan lain-lain. Pada saat penulisan ini dilakukan, pilihan framework yang paling sering digunakan untuk web aplikasi ini masih berada diantara JSF dan Struts. Untuk perbedaan antara JSF dan Struts dapat dilihat pada bagian dibawah ini: a. Maturity Struts sudah ada sejak beberapa tahun yang lalu, dan telah memiliki tingkat kematangan (maturity) diatas JSF. Ada beberapa produk sistem yang berhasil yang di buat menggunakan framework Struts. Salah satu contohnya adalah konsol administratif Application Server berbasiskan web. JSF sudah berkecimpung dalam draft selama 2 62
tahun. Bahkan pada beberapa perusahaan termasuk IBM. Dengan JSF Anda dapat begantung pada sistem support yang berbeda, tergantung pada implementasi yang dipilih. b. Controller Flexibility Salah satu tujuan utama dari Struts adalah mengimplementasikan sebuah framework yang menggunakan framework MVC dan mengurangi hal yang umum dan yang sering digunakan dalam Servlet dan JSP. Inti dari Struts adalah Controller. Struts menggunakan Front Controller Pattern dan Command Pattern. Servlet tunggal mengambil permintaan, menterjemahkan parameter HTTP menjadi Java ActionForm, dan mengirim ActionForm ke class Struts Action, dalam bentuk perintah. URI menentukan class Action mana yang akan dikirim. Framework Struts mempunyai event handler tunggal untuk permintaan HTTP. Setelah permintaan telah ketemu, Action akan mengembalikan hasil ke pengendali yang depan, yang kemudian menggunakannya untuk memilih dimana navigasi yang berikutnya. JSF menggunakan Page Controller Pattern. Walaupun ada servlet single setiap permintaan tampilan yang lewat, tugas dari servlet adalah, menerima tampilan halaman dengan komponen. Ini akan memicu event untuk setiap komponen dan me-render komponen menggunakan alat render. Komponen tersebut dapat juga terikat mejadi data dari model. Dalam hal ini, JSF merupakan pemenangnya, karena memiliki banyak keuntungan pada pengendali depan, tetapi dalam waktu yang sama juga memberikan fleksibilitas dari pengendali halaman. Dalam hal fleksibilitas kontrol, JSF memiliki banyak keuntungan dan juga memberikan fleksibilitas dari Page Controller. JSF dapat
63
memiliki beberapa pengendali event dalam sebuah halaman. JSF juga dapat memberikan para pengembang kemampuan untuk mengaitkan kedalam model tanpa memecah layer. c. Navigation Navigasi merupakan fitur penting dari Struts dan JSF. Kedua framework memiliki navigasi declarative model dan navigasi define menggunakan peraturan dalam konfigurasi file XML–nya. Ada 2 macam navigasi, yaitu navigasi dinamis dan statis. Navigasi statis adalah setiap urutan halamannya telah di tentukan ke halaman berikutnya. Sedangkan navigasi dinamis adalah setiap tindakan atau logika menentukan halam berikutnya yang akan di tampilkan. •
Struts menggunakan notion of forwards untuk menentukan navigasi. Berdasarkan beberapa string, framework Struts memutuskan JSP mana yang akan diforward dan dirender. Struts mendukung dynamic forwarding dengan menjelaskan forward secara spesifik pada definisi action. Struts bisa memproses multiple forward.
•
JSF mendukung navigasi dengan menentukan aturan navigasi di file konfigurasi face. Namun, tidak seperti Struts, navigasi JSF di terapkan pada tahap halaman dan dapat terbebas dari action(tergantung pada actionnya). Action tersebut dilakukan dengan code manual dalam komponen, sehingga memungkingkan finer grain control pada halaman. Anda dapat memperoleh berbagai komponen pada halaman yang berbeda action yang men-share aturan navigasi yang sama. JSF juga mendukung navigasi dinamis dengan komponen yang bisa ke action handler. Developer(pengembang) selanjutnya dapat mmebuat coding action handler dari setiap class apa saja untuk
64
membuat keputusan navigasi yang dinamis. Walaupun aturan navigasi tidak perlu menspesifikasi action dengan tujuan mendukung navigasi dinamis, dengan JSF menjabarkan action pada aturan anvigasi jika Anda memilih. Ini akan membuat Anda memaksakan aturan navigasi yang spesifikmelalui sebuah action. Struts dan JSF cukup fleksibel dilihat dari navigasi-nya, tapi JSF dapat pendekatan lebih fleksibel dan desain lebih baik karena aturan navigasi adalah decoupled dari action. Struts memaksa Anda terkait dengan action dan juga URI tiruan atau class action. Sebagai tambahan, lebih mudah menggunakan JSF dalam memperoleh banyak aturan navigasi dalam satu halaman tanap harus memperoleh banyak coding ifelse. d. Page development JSF dibuat dengan komponen model dalam pikiran untuk memperbolehkan alat pengembang mendukung pengembangan RAD. Struts tidak memilikinya. Walaupun framework Struts menyediakan library yang dapat diubah yang berkaitan dengan Action Forms dan menawarkan fungsi penolong, ditujukan untuk pendekatan JSP dan HTTP. JSF menyediakan kemampuan untuk membangun komponen dari berbagai tampilan teknologi dan melakukannya dengan cara tersebut agar bisa berguna. JSF merupakan pemenang dalam hal ini. e. Integration Struts di desain menjadi model yang netral, maka dari itu tidak ada yang spesial yang berkaitan pada layer model. Ada perlengkapan tampilan reflection-based copy, tapi hanya itu saja. Biasanya, ata halaman harus di pindahkan dari Action Form ke format
65
model input lainnya dan membutuhkan coding secara manual. Class ActionForm, menyediakan layer tambahan untuk coding yang membosankan dan state transition. Di lain pihak, JSF menyembunyikan rincian dari data di dalam component-tree. Komponen yang kaya seperti grid data dapat dihubungkan dengan class Java manapun. Ini menghasilkan pengembangan RAD yang kuat, seperti kombinasi JSF dengan SDO. f. Extensibility JSF dan Struts menyediakan kemungkinan untuk menambah framework bila dibutuhkan. Main hook dari Struts adalah RequestProcessor yang memiliki macammacam method callback yang seluruhnya life-cycle dari permintaan. Developer dapat memperluas class ini untuk mengganti atau mempertinggi framework. JSF menyediakan kesempatan untuk memperlebar framework untuk kebutuhan perluasan. JSF menyediakan tampilan life-cycle yang spesial. Sebagai tambahan, JSF secara total decouples tahap render dari pengendali yang memperbolehkan pengembang utnuk menyediakan alat render sendiri untuk membuat komponen yang khusus. g. Kesimpulan Secara keseluruhan, JSF merupakan framework yang lebih fleksibel. Struts adalah framework yang kaku dan bekerja dengan baik. JSF sebenarnya dapat belajar banyak dari proyek Struts. JSF menjadi framework yang lebih dominan karena kendali fleksibel dan navigasi. Selanjutnya, JSF dibuat dengan integrasi dan dapat diperluas bila diperlukan.
66
3.3.3 Web Service Web Service adalah salah satu teknologi yang sering dipakai untuk penyelesaian masalah dalam hal kompatibilitas pada hardware, platform, bahasa pemrograman, dan format yang berbeda. Dengan adanya web service, maka integritas antara aplikasi yang berbeda bahasa maupun platform dapat berjalan secara baik dan client tidak perlu mengkhawatirkan pada permasalahan format data yang berbeda-beda. Hal ini disebabkan oleh teknologi web service yang sebagian besar memakai XML yang merupakan standardisasi dari representasi data maupun metadata secara internasional. Dalam kasus pada aplikasi ini, sistem dapat menggunakan web service untuk penyajian data-data saham dimana client-client dari berbagai platform, bahasa pemrograman, dan hardware dapat dimungkinkan untuk melakukan pengaksesan data terhadap aplikasi provider data saham ini.
67
3.4 Perancangan Aplikasi Server 3.4.1 Gambaran Umum Client
Web Service
Stock Feeder
Download Data Registrasi / Update Account
Aplikasi Data Provider Saham Yahoo Finance
Gambar 3.4.1.1 Gambaran Umum Rancangan Aplikasi Server
Aplikasi Server yang dirancang adalah suatu aplikasi data provider saham dimana data-data saham tersebut diambil dari Yahoo Finance dan akan disajikan pada aplikasi client yang lain dengan menggunakan Web Service. Pengaksesan data saham ini memerlukan License Number sebagai suatu account untuk mengakses data tersebut. Oleh karena itu, untuk mendapatkan License Number maka client mesti melakukan registrasi terlebih dahulu. Setiap kali pengaksesan pada client yang telah terdaftar, hak akses dari client tersebut akan dikurangi, sehingga client harus melakukan Update Account untuk menambah jumlah hak akses account tersebut kembali.
68
3.4.2 Use Case dari Sistem Aplikasi Saham Berikut ini adalah use case diagram utama dalam aplikasi saham ini:
Gambar 3.4.2.1 Use Case Diagram
69
Tabel 3.4.2.2 Use Case Description Dari Use Case Download data Use Case Name Actors Description
Preconditions
Postconditions Normal Flow
Alternate Flow
Download Data Data Provider Use case ini menggambarkan proses mendownload data dari Yahoo Finance sebagai data provider pada aplikasi ini dengan menggunakan sistem scheduler. Data-data saham setiap simbol akan didownload setiap harinya. Simbol-simbol yang akan didownload telah sebelumnya disimpan di file konfigurasi. • Sistem scheduler di execute pada jam tertentu. • Sistem scheduler terhubung dengan Yahoo Finance buat pengambilan data. • Tiap data saham disimpan dalam database. • Data-data saham yang telah disimpan dapat diakses oleh client. Actor Action System Respon Step 3 : Data Provider akan Step 1 : Sistem akan memberikan data-data saham mengambil simbol-simbol yang yang diminta melalui http. akan didownload dari file konfigurasi. Step 2 : Sistem mengambil data-data saham lewat url yang diambil dari Yahoo Finance. Step 4 : Sistem menyimpan data-data yang telah diambil ke dalam database. Alt-Step 3 : Jika pemberian data saham kosong maupun terjadi error, maka sistem tidak akan menyimpan data tersebut.
Table 3.4.2.3 Use Case Description Dari Use Case Registrasi Use Case Name Actors Description
Preconditions Postconditions
Registrasi Client Use case ini menggambarkan proses pendaftaran untuk mendapatkan hak pengaksesan data. Cara pendaftaran yang dilakukan adalah dengan mengisi field-field yang telah disediakan pada form registrasi dengan benar. Pada proses ini akan divalidasi apakah username tersebut telah ada sebelumnya atau tidak. Setelah berhasil maka client akan diberi license number yang akan dipakai buat pengaksesan data melalui web service nantinya. License number akan digenerate menggunakan enkripsi MD5. • Cient terhubung dengan web aplikasi. • Client telah membuka form registrasi. • Data dari client akan disimpan ke dalam database. 70
Normal Flow
Alternate Flow
• Client akan diberikan license number untuk pengaksesan data. • Client telah dapat mengakses data-data saham lewat license number yang telah diberikan. Actor Action System Respon Step 1 : Client mengisi field- Step 3 : Sistem akan mengecek field yang disediakan pada apakah username tersebut telah form registrasi. ada atau belum. Step 2 : Client melakukan submit setelah pengisian form registrasi selesai. Step 4 : Client akan menerima hasil konfirmasi dari proses registrasi. Jika proses registrasi berhasil, maka client akan diberikan license number. Alt-Step 1 : Client dapat memilih cancel untuk kembali ke halaman utama. Alt-Step 4 : Jika hasil konfirmasi user hasilnya ada data yang tidak valid maka user dapat mengisi ulang data tersebut.
Table 3.4.2.4 Use Case Description Dari Use Case Update Account Use Case Name Actors Description
Update Account Client Use case ini menggambarkan proses pengupdate-an (penambahan) hak pengaksesan data-data saham. Sebelumnya client mesti melakukan login terlebih dahulu. Setelah client telah melakukan update account maka hak akses yang diberikan akan ditambah sebanyak 50 kali. Karena keterbatasan waktu, proses update account ini hanya sebatas pengeklikan link update, tidak melalui proses pembayaran seperti credit card dan lainnya.
Preconditions
• Cient terhubung dengan web aplikasi. • Client melakukan login. • Hak akses dari client akan ditambahkan dan diupdate ke dalam database. • Client dapat mengakses data-data saham lewat license number yang telah diberikan kembali. Actor Action System Respon Step 1 : Client memilih pilihan Step 2 : Sistem akan update pada halaman utama mengupdate hak akses client ke setelah melakukan login. dalam database. Step 3 : Client akan menerima
Postconditions
Normal Flow
71
hasil konfirmasi dari proses update. Alternate Flow
Alt-Step 1 : Client dapat memilih cancel untuk kembali ke halaman utama.
Table 3.4.2.5 Use Case Description Dari Use Case Penyajian data. Use Case Name Actors Description
Preconditions Postconditions Normal Flow
Alternate Flow
Penyajian data Client Use case ini menggambarkan proses pengambilan data-data saham oleh client. Setiap pengambilan data memerlukan license number dan akan mengurangi jumlah hak akses client bila data tersebut diterima oleh client. Proses pemanggilan data ini akan menggunakan Java Remote Procedure Call (RPC) melalui web service. Pemanggilan fungsi ini akan mengembalikan tipe data Stock yang akan didefinisikan dalam Web Service Description Language (WSDL) dalam web service. • Cient terhubung dengan web aplikasi. • Hak akses dari client akan dikurangi dan diupdate ke dalam database jika data telah berhasil diterima client. Actor Action System Respon Step 1 : Client melakukan Step 2 : Sistem akan pemanggilan fungsi melalui menyajikan data-data saham web service. dengan parameter-parameter Step 3 : Client akan menerima fungsi yang diterima. data-data saham yang telah direquest lewat web service. Alt-Step 1 : Pengambilan data dapat dilakukan dengan dua cara, yaitu pengambilan data saham pada hari yang sama atau berdasarkan jangka waktu tertentu berdasarkan simbol yang diberikan.
72
3.4.3 Class Diagram dari Sistem Aplikasi Saham
Stock UserBackingBean
User
HibernateUtil
StockCore
StockDownloader
DownloadSchedulerJob
YahooStockDownloader
DownloadScheduler
Gambar 3.4.3.1 Class Diagram Aplikasi Data Provider Saham
73
a. Class User
Gambar 3.4.3.2 Class User Class User merupakan representasi objek dari client yang telah melakukan registrasi dengan atibut: username, password, access, license, email, dan accessTime. Class ini merupakan Java Bean dimana telah disediakan setter/getter untuk tiap attribut.
74
b. Class Stock
Gambar 3.4.3.3 Class Stock
Class User merupakan representasi objek dari stock yang akan disajikan dan didownload nantinya. Class ini memiliki atribut: symbol, date, open, high, low, close, closeAdj, dan volume. Class ini juga merupakan Java Bean dimana disediakan setter/getter untuk tiap atribut.
75
c. Class StockDownloader
Gambar 3.4.3.4 Class StockDownloader
Class ini merupakan abstract class yang gunanya untuk melakukan download data-data saham dari provider manapun. Class ini berupa abstrak sehingga aplikasi ini dapat diperluas dengan penyediaan class-class baru untuk data provider yang berbedabeda. Operasi pada class ini berupa: downloadStock dan downloadStocks.
d. Class YahooStockDownloader
Gambar 3.4.3.5 Class YahooStockDownloader
76
Class ini merupakan turunan dari class StockDownloader yang menyediakan fungsi-fungsi untuk mendownload data dari provider Yahoo Finance. Class ini mempunyai atribut timePeriod dimana nilai-nilai yang dapat dimasukkan berupa: -
d = untuk data saham secara harian (daily)
-
w = untuk data saham secara mingguan (weekly)
-
m = untuk data saham secara bulanan (monthly)
Operasi-operasi pada class ini merupakan turunan dari class StockDownloader. Berikut ini merupakan penjelasan pseudocode dari fungsi downloadStock: FUNGSI DOWNLOADSTOCK(SYMBOL) buka koneksi ke yahoo; ambil file csv berdasarkan symbol; informasi saham diambil pada tanggal sekarang; buat sebuah penampung stock; loop semua baris dari file csv; parsing text dari baris yang dibaca; buat sebuah class stock baru; isi nilai dari hasil parsing ke attribut class; tampung class stock; akhir loop; balikin stock yang telah ditampung; AKHIR FUNGSI
Berikut ini merupakan penjelasan pseudocode dari fungsi downloadStocks: FUNGSI DOWNLOADSTOCKS(SYMBOL,STARTDAY,ENDDAY) buka koneksi ke yahoo; ambil file csv berdasarkan symbol; informasi saham diambil pada tanggal antara STARTDAY dengan ENDDAY; buat sebuah penampung stock; loop semua baris dari file csv; parsing text dari baris yang dibaca; buat sebuah class stock baru; isi nilai dari hasil parsing ke attribut class; tampung class stock; akhir loop; balikin stock yang telah ditampung; AKHIR FUNGSI 77
e. Class DownloadSchedulerJob
Gambar 3.4.3.6 Class DownloadSchedulerJob Class ini bertujuan untuk melakukan logika proses mendownload data dari provider yang telah ditentukan sebelumnya pada operasi execute(). Data provider pada aplikasi ini adalah Yahoo Finance. Class DownloadSchedulerJob ini merupakan implementasi dari library Quartz, yaitu sebuah framework scheduler open source yang dibuat oleh Apache. Berikut ini merupakan penjelasan pseudocode dari fungsi execute: FUNGSI EXECUTE ambil simbol-simbol dari file property; buat class YahooStockDownloader; ambil informasi stock dari fungsi downloadStock pada YahooStockDownloader; buka koneksi database melalui class HibernateUtil; tulis semua informasi yang diambil ke dalam database; tutup koneksi database melalui class HibernateUtil; AKHIR FUNGSI
f. Class DownloadScheduler
Gambar 3.4.3.7 Class DownloadScheduler 78
Class ini digunakan untuk pengaturan jadwal proses download data. Class ini terdiri dari operasi: startSchedule(), stopScheduler(). Setiap kali server dijalankan pertama kali maka class ini akan langsung mengaktifkan schedule proses download. Class DownloadScheduler ini merupakan implementasi dari library Quartz, yaitu sebuah framework scheduler open source yang dibuat oleh Apache. Berikut ini merupakan penjelasan pseudocode dari fungsi startSchedule: FUNGSI STARTSCHEDULE buat class DownloadSchedulerJob; set waktu 00:00 dimana DownloadSchedulerJob akan dijalankan; jalankan scheduler quartz; AKHIR FUNGSI
Berikut ini merupakan penjelasan pseudocode dari fungsi stopSchedule: FUNGSI STOPSCHEDULER matikan scheduler quartz; AKHIR FUNGSI
g. Class StockCore
Gambar 3.4.3.8 Class StockCore
Class ini merupakan class yang akan menyajikan data-data saham berdasarkan hari yang sama dengan pemanggilannya maupun berdasarkan jangka waktu tertentu. Class ini memiliki operasi: getStock() dan getStocks(). Class ini akan diimplementasikan dalam web service untuk pemanggilannya. Pemanggilan dari web service akan
79
dibungkus oleh framework Axis secara otomatis dan tidak memerlukan koding tambahan. Jadi, pada fungsi-fungsi pada class StockCore ini sama seperti fungsi-fungsi pada class-class biasa. Implementasi web service akan dilakukan oleh framework Axis dengan mengkonfigurasi file WSDD dan WSDL. Berikut ini merupakan penjelasan pseudocode dari fungsi getStock: FUNGSI GETSTOCK(SYMBOL,SDAY,MONTH,YEAR,LICENSENUMBER) buka koneksi database melalui HibernateUtil; validasi licensenumber dari database; jika validasi sesuai; ambil informasi stock dari database dengan symbol,day,month,year_ yang sesuai parameter; konversi informasi yang telah diambil ke class stock; tutup koneksi database melalui HibernateUtil; balikin objek-objek stock yang telah dikonversi; akhir jika; tutup koneksi database melalui HibernateUtil; balikin null; AKHIR FUNGSI
Berikut ini merupakan penjelasan pseudocode dari fungsi getStocks: FUNGSI GETSTOCK(SYMBOL,SD,SM,SY,ED,EM,EY,LN) buka koneksi database melalui HibernateUtil; validasi licensenumber dari database; jika validasi sesuai; ambil informasi saham dari database dengan symbol dari parameter; informasi saham diambil antara tanggal sd/sm/sy dengan ed/em/ey; konversi informasi yang telah diambil ke class stock; tutup koneksi database melalui HibernateUtil; balikin objek-objek stock yang telah dikonversi; akhir jika; tutup koneksi database melalui HibernateUtil; balikin null; AKHIR FUNGSI
80
h. Class UserBackingBean
Gambar 3.4.3.9 Class UserBackingBean Class ini merupakan controller pada web aplikasi server yang akan digunakan untuk proses registrasi. Class controller yang dibuat ini berdasarkan framework JSF dimana halaman yang dibuat pada aplikasi ini juga memakai framework JSF. Operasi pada class ini adalah updateAccount(), saveUser(), validateUser(). Berikut ini merupakan penjelasan pseudocode dari fungsi updateAccount: FUNGSI UPDATEACCOUNT ambil account user yang telah login dari session; buka koneksi ke database melalui HibernateUtil; update informasi account user dengan penambahan hak akses sebanyak 50; update user pada database melalui HibernateUtil; tutup koneksi database melalui HibernateUtil; AKHIR FUNGSI
Berikut ini merupakan penjelasan pseudocode dari fungsi saveUser: FUNGSI SAVEUSER ambil account user yang telah login dari session; buka koneksi ke database melalui HibernateUtil; tambahkan user baru pada database melalui HibernateUtil; tutup koneksi database melalui HibernateUtil; AKHIR FUNGSI
81
Berikut ini merupakan penjelasan pseudocode dari fungsi validateUser: FUNGSI VALIDATEUSER buka koneksi ke database melalui HibernateUtil; ambil nilai username dan password dari form; query ke database dengan memakai username yang diambil; jika tidak ada hasil query; lempar error bahwa username tidak ada; akhir jika; jika ada hasil query; jika password dari database dan yang diambil tidak sama; lempar error bahwa password salah; akhir jika; masukkan informasi user ke dalam session; akhir jika; AKHIR FUNGSI
i. Class HibernateUtil
Gambar 3.4.3.10 Class HibernateUtil
Class ini merupakan class utility yang akan mengatur proses buka-tutup koneksi dari database dengan memakai implementasi ORM. Class HibernateUtil ini merupakan implementasi dari framework ORM Hibernate.
82
Berikut ini merupakan penjelasan pseudocode dari fungsi currentSession: FUNGSI CURRENTSESSION ambil session dari Hibernate; jika tidak ada; buat session baru dari SessionFactory; akhir jika; balikin session dari Hibernate; AKHIR FUNGSI
Berikut ini merupakan penjelasan pseudocode dari fungsi closeSession: FUNGSI CLOSESESSION ambil session dari Hibernate; jika ada; tutup session dari Hibernate; akhir jika; AKHIR FUNGSI
3.4.4 Sequence Diagram Berikut ini adalah beberapa sequence diagram dari proses yang terdapat pada aplikasi yang dibuat:
3.4.4.1 Sequence Register Sequence ini menggambarkan proses pendaftaran untuk mendapatkan hak pengaksesan data. Cara pendaftaran yang dilakukan adalah dengan mengisi field-field yang telah disediakan pada form registrasi dengan benar. Pada proses ini akan divalidasi apakah username tersebut telah ada sebelumnya atau tidak. Setelah berhasil maka client akan diberi license number yang akan dipakai buat pengaksesan data melalui web service nantinya.
83
Gambar 3.4.4.1.1 Sequence Diagram Register 3.4.4.2 Sequence Update Account Use case ini menggambarkan proses pengupdate-an (penambahan) hak pengaksesan data-data saham. Sebelumnya client mesti melakukan login terlebih dahulu. Setelah client telah melakukan update account maka hak akses yang diberikan akan ditambah sebanyak 50 kali. Karena keterbatasan waktu, proses update account ini hanya sebatas pengeklikan link update, tidak melalui proses pembayaran seperti credit card dan lainnya.
84
Gambar 3.4.4.2.1 Sequence Diagram Update Account
3.4.4.3 Sequence Download Data Use case ini menggambarkan proses mendownload data dari Yahoo Finance sebagai provider data pada aplikasi ini dengan menggunakan sistem scheduler. Data-data saham setiap simbol akan didownload setiap harinya. Simbol-simbol yang akan didownload telah sebelumnya disimpan di file konfigurasi.
85
Gambar 3.4.4.3.1 Sequence Diagram Download Data
3.4.4.4 Sequence Penyajian Data Use case ini menggambarkan proses pengambilan data-data saham oleh client. Setiap pengambilan data memerlukan license number dan akan mengurangi jumlah hak akses client bila data tersebut diterima oleh client. Proses pemanggilan data ini akan menggunakan Java Remote Procedure Call (RPC) melalui web service. Pemanggilan fungsi ini akan mengembalikan tipe data Stock yang akan didefinisikan dalam Web Service Description Language (WSDL) dalam web service.
86
Gambar 3.4.4.4.1 Sequence Diagram Penyajian Data
3.5 Spesifikasi Modul Aplikasi Server 3.5.1 Spesifikasi Modul Download Data Modul download data merupakan modul untuk mendownload data-data saham dari Yahoo Finance sebagai provider data pada aplikasi ini. Simbol-simbol yang akan didownload telah dikonfigurasi terlebih dahulu di file property dari web aplikasi ini. Data akan didownload setiap harinya pada jam tertentu. Berikut ini merupakan pseudocode dari modul download data: MODUL DOWNLOAD create scheduler pada saat server dijalankan setting waktu pada jam 00:00 untuk waktu download setiap harinya load semua symbol dari file konfigurasi loop semua symbol download symbol dari yahoo finance simpan symbol ke database akhir loop AKHIR MODUL DOWNLOAD
87
3.5.2 Spesifikasi Modul Registrasi Modul registrasi adalah modul dimana client dapat menjadi member dari aplikasi ini. Setiap member akan diberi hak akses sebanyak 50 kali akses pada pertama kalinya. Hak akses yang diberikan berupa license number dimana akan diberikan setelah client telah melakukan registrasi. Pada registrasi ini username yang diinput akan dicek apakah telah ada atau tidak. Berikut ini merupakan pseudocode dari modul registrasi: MODUL REGISTRASI tampilkan halaman registrasi minta inputan data registrasi dari user jika dipilih submit maka jika field yang diinput benar buka koneksi ke database jika nama user telah ada tampilkan konfirmasi bahwa user telah ada selain itu generate license number simpan data-data user kedalam database masuk ke halaman utama akhir jika tutup koneksi database selain itu tampilkan konfirmasi bahwa data yang diinput tidak benar akhir jika akhir jika AKHIR MODUL REGISTRASI
3.5.3 Spesifikasi Modul Update Account Modul update account merupakan modul dimana client dapat menambah hak pengaksesan data-data saham yang disajikan. Setiap pengupdate-an account, maka hak akses client tersebut akan ditambah sebanyak 50. Untuk dapat masuk ke dalam modul ini, sebelumnya client mesti melakukan login terlebih dahulu. Berikut ini merupakan pseudocode dari modul update account:
88
MODUL UPDATE tampilkan halaman login client melakukan login jika login benar maka tampilkan halaman utama jika dipilih menu update account buka koneksi ke database tambahkan account client update ke database tutup koneksi database akhir jika akhir jika AKHIR MODUL UPDATE
3.5.4 Spesifikasi Modul Penyajian Data Modul penyajian data ini adalah modul dimana client memanggil fungsi Java RPC melalui web service. Pemanggilan fungsi akan mengembalikan tipe data Stock, dimana tipe data tersebut akan didefinisikan dalam Web Service Description Language (WSDL). Fungsi yang disajikan berupa pengambilan data saham pada hari itu juga berdasarkan simbol tertentu dan pengambilan data-data saham dengan jangka waktu tertentu berdasarkan simbol tertentu. Berikut ini merupakan pseudocode dari modul penyajian data: MODUL PENYAJIAN ambil data melalui web service cek apakah license number yang diinput valid jika jumlah hak akses lebih besar dari 0 tampilkan pesan bahwa hak akses client telah kosong selain itu jika data tidak kosong maka buka koneksi ke database kurangi hak akses client simpan ke dalam database tutup koneksi database akhir jika selain itu tampilkan pesan bahwa license number yang diinput tidak valid akhir jika AKHIR MODUL PENYAJIAN 89
3.6 Perancangan Layar Perancangan Layar ini ditujukan untuk proses registrasi client, sedangkan untuk proses yang lain tidak perlu menggunakan tampilan layar. Berikut ini merupakan contoh rancangan sederhana pada proses registrasi client: 1.
Rancangan Halaman Login
Gambar 3.6.1 Halaman Login
2.
Rancangan Halaman Register
Gambar 3.6.2 Halaman Register
90
3.
Rancangan Halaman Utama setelah User melakukan login
Gambar 3.6.3 Halaman Utama
3.7 Perancangan Basis Data Pada aplikasi yang dibuat digunakan database untuk menyimpan data yang ada pada sistem. Adapun detail dari database tersebut adalah sebagai berikut ini.
3.7 .1 Tabel Master User Tabel ini digunakan untuk menampung data dari client-client yang telah mendaftarkan diri beserta license number yang akan digenerate oleh sistem. Karena aplikasi nantinya akan menggunakan ORM, maka ditambahkan suatu surrogate key. Surrogate key adalah primary key yang tidak mengandung manfaat sama sekali untuk user, tetapi digunakan untuk proses penyamaan identitas antara Object dan Relational. Berikut ini adalah struktur dari tabel Master User:
91
Nama Tabel : User Primary Key : USER_ID No. Nama Field 1 USER_ID 2 USERNAME 3 PASSWORD 4 EMAIL 5 LICENSE_NUMBER 6 ACCESS_LEFT 7 ACCESS_TIME Tabel 3.7.1.1 Master User
Jenis bigint varchar varchar varchar varchar int int
Panjang 20 255 255 255 255 11 11
Keterangan Surrogate Key (Auto Increment) Nama User Password User Alamat email License Number buat user Jumlah sisa hak pengaksesan Jumlah pengaksesan
Berikut ini merupakan contoh data dari table User sebagai berikut : USER_ID 1 2 3
USERNAME Anthony Raymond Fabio
PASSWORD abok 123456 haku
LICENSE_NUMBER 591da331cc7981dc98e0f29ef2cac442 2a1fd59294a8ed470cc627500d2ef9e7 591da331cc7981dc98e0f29ef2cac442 Tabel 3.7.1.2 Contoh Tabel User
EMAIL
[email protected] [email protected] [email protected]
ACCESS_LEFT 59 21 69
ACCESS_TIME 27 39 21
3.7 .2 Tabel Master Stock Tabel ini digunakan untuk menyimpan semua data-data saham yang telah didownload. Karena akan diterapkan pada framework ORM, maka pada tabel ini juga dibutuhkan surrogate key.
92
Berikut ini merupakan struktur dari tabel Stock: Nama tabel : Stock Primary Key : STOCK_ID No. Nama Field Jenis 1 STOCK_ID bigint 2 SYMBOL varchar 3 DATE date 4 OPEN float 5 HIGH float 6 LOW float 7 CLOSE float 8 CLOSE_ADJ float 9 VOLUME int Tabel 3.7.2.1 Tabel User Stock
Panjang 20 255 0 0 0 0 0 0 11
Keterangan Surrogate Key(Auto Increment) Simbol saham Tanggal saham Attribut open Attribut high Attribut low Attribut close Attribut close_adj Attribut volume
Berikut ini merupakan contoh data dari table User sebagai berikut : STOCK_ID 1 2 3
SYMBOL AQUA.JK AQUA.JK ARGO.JK
LOW CLOSE CLOSE_ADJ 48000 48000 48000 52500 52500 52500 1300 1300 1300 Tabel 3.7.2.2 Contoh Tabel Stock
DATE 9/27/2005 9/22/2005 1/12/2005
OPEN 48000 52500 1300
HIGH 48000 52500 1300
VOLUME 2500 2500 1500
3.8 Perancangan ORM Perancangan ORM adalah perancangan mapping dari tabel-tabel Relational ke objek-objek yang akan digunakan pada aplikasi saham. Mapping dilakukan dengan menggunakan metadata dalam format xml. Setiap file mapping akan diload oleh 93
framework hibernate jika objek tersebut terhubung dengan database. Berikut ini adalah file-file metadata yang akan digunakan untuk mapping pada aplikasi saham ini: a. Mapping dari tabel Stock ke class Stock
<property name="symbol" type="string" column="SYMBOL" not-null="true"/> <property name="date" type="calendar_date" column="DATE" not-null="true"/> <property name="open" type="float" column="OPEN" not-null="false"/> <property name="high" type="float" column="HIGH" not-null="false"/> <property name="low" type="float" column="LOW" not-null="false"/> <property name="close" type="float" column="CLOSE" not-null="false"/> <property name="closeAdj" type="float" column="CLOSE_ADJ" not-null="false"/> <property name="volume" type="integer" column="VOLUME" not-null="false"/>
94
b. Mapping dari tabel User ke class User
<property name="username" type="string" column="USERNAME" not-null="true"/> <property name="email" type="string" column="EMAIL" not-null="false"/> <property name="password" type="string" column="PASSWORD" notnull="false"/> <property name="license" type="string" column="LICENSE_NUMBER" notnull="false"/> <property name="access" type="integer" column="ACCESS_LEFT" notnull="false"/> <property name="access" type="integer" column="ACCESS_LEFT" notnull="false"/>
Berikut ini adalah keterangan tentang cara penggunaan mapping metadata di Hibernate: 1. Deklarasi DTD untuk setiap penggunaan file mapping di Hibernate. Hal ini dibutuhkan untuk proses validasi struktur dan sintaks dari XML. Berikut ini adalah deklarasi DTD yang diperlukan untuk file mapping: 2. Mapping dideklarasi dalam element root
.
95
3. Untuk konversi dari tabel ke dalam class, digunakan element dimana attribut-attribut yang digunakan adalah sebagai berikut: -
name : nama class yang akan dimapping
-
table : nama tabel yang akan dikonversi ke class
4. Element digunakan untuk persamaan identitas antara objek dengan tabel pada database. Element ini biasanya berupa surrogate key, dimana surrogate key adalah primary key yang tidak mengandung manfaat bagi pengguna, tetapi digunakan oleh Hibernate untuk persamaan identitas. Attribut-attribut dan elemen yang diperlukan adalah sebagai berikut: -
name : nama property (data member) dari sebuah class.
-
type : tipe data untuk Java dan SQL. Untuk tipe data yang dapat digunakan dapat dilihat pada bagian 3.7.1 (Tipe Data Hibernate) nantinya.
-
column : kolom yang akan dimapping ke attribut name.
-
Elemen : digunakan untuk menggenerate id (surrogate key) secara built-in oleh hibernate. Untuk penggunaan element dapat dilihat di bagian 3.7.2 (Generator class pada Hibernate).
5. Element <property> yang digunakan untuk mapping sebuah kolom dari database ke data member sebuah class. Attribut yang digunakan adalah sebagai berikut: -
name : nama data member dari sebuah class.
-
type : tipe data untuk Java dan SQL. Untuk tipe data yang dapat digunakan dapat dilihat pada bagian 3.7.1 (Tipe Data Hibernate) nantinya.
-
column : kolom yang akan dimapping ke attribut name.
-
not-null : indikasi apakah field tersebut dapat dikosongkan (null) atau tidak.
96
6. Untuk penamaan file mapping dapat digunakan format NamaClass.hbm.xml, contoh: User.hbm.xml untuk file mapping yang akan digunakan pada class User. Selain dibutuhkan file metadata, aplikasi yang menerapkan framework hibernate juga memerlukan file konfigurasi untuk menentukan koneksi database dan letak file-file mapping yang ada dalam aplikasi. File konfigurasi ini akan disimpan dalam file dengan nama hibernate.cfg.xml. Berikut ini adalah file konfigurasi pada aplikasi saham ini: <session-factory> <property name="dialect">net.sf.hibernate.dialect.MySQLDialect <property name="connection.driver_class">org.gjt.mm.mysql.Driver <property name="connection.url">jdbc:mysql://localhost:3306/stocks <property name="connection.username">root <property name="connection.password">haku <property name="show_sql">false <mapping resource="/hku/stock/model/Stock.hbm.xml"/> <mapping resource="/hku/stock/model/User.hbm.xml"/>
97
Berikut ini adalah keterangan tentang cara penggunaan file konfigurasi metadata di Hibernate: 1. Deklarasi DTD untuk setiap file konfigurasi di Hibernate. Hal ini dibutuhkan untuk proses validasi struktur dan sintaks dari XML. Berikut ini adalah deklarasi DTD yang diperlukan untuk file mapping: 2. Element <property> yang akan digunakan untuk konfigurasi. Berikut ini adalah property-property
umum
pada
attribut
name
yang
digunakan
untuk
konfigurasinya: -
dialect : spesifikasi vendor database yang akan digunakan.
-
connection.driver_class : class driver JDBC yang akan digunakan.
-
connection.url : alamat URL suatu database.
-
connection.username : username dari database.
-
connection.password : password dari username yang digunakan.
-
show_sql : jika diisi true, maka sql yang digenerate akan ditampilkan dalam log.
3. Element <mapping resource> yang digunakan untuk peletakkan dimana lokasi file-file mapping yang akan digunakan itu berada.
98
3.8.1 Tipe Data Hibernate Berikut ini adalah tipe data built-in yang telah disediakan oleh Hibernate untuk penggunaan tipe data pada bahasa Java dan tipe data pada SQL: a. Java primitive mapping types Mapping type Java type integer int or java.lang.Integer long long or java.lang.Long short short or java.lang.Short float float or java.lang.Float double double or java.lang.Double big_decimal java.math.BigDecimal character java.lang.String string java.lang.String byte byte or java.lang.Byte boolean Boolean or java.lang.Boolean yes_no Boolean or java.lang.Boolean true_false Boolean or java.lang.Boolean Tabel 3.8.1.1 Tabel Java primitive mapping types
Standard SQL built-in type INTEGER BIGINT SMALLINT FLOAT DOUBLE NUMERIC CHAR(1) VARCHAR TINYINT BIT CHAR(1) (‘Y’ OR ‘N’) CHAR(1) (‘T OR ‘F)
b. Date and time mapping types Mapping type
Java type
date java.util.Date or java.SQL.Date time java.util.Date or java.SQL.Time timestamp java.util.Date or java.SQL.Timestamp calendar java.util.Calendar calendar_date java.util.Calendar Tabel 3.8.1.2 Tabel Date and time mapping types
99
Standard SQL builtin type DATE TIME TIMESTAMP TIMESTAMP DATE
c. Large object mapping types Mapping type binary text serializable
Java type byte[] java.lang.String Setiap class Java yang mengimplements java.io.Serializable clob java.sql.Clob blob java.sql.Blob Tabel 3.8.1.3 Tabel Large object mapping types
Standard SQL built-in type VARBINARY (or BLOB) CLOB VARBINARY (or BLOB) CLOB BLOB
d. Various JDK mapping types Mapping type Java type Standard SQL built-in type class java.lang.Class VARCHAR locale java.util.Locale VARCHAR timezone java.util.TimeZone VARCHAR currency java.util.Currency VARCHAR Tabel 3.8.1.4 Tabel Various JDK mapping types
3.8.2 Generator Class pada Hibernate Generator class pada hibernate digunakan untuk cara menyamakan identitas antara objek Java (dengan berdasarkan equals() dan hashcode()) dengan tabel pada database dengan menggunakan primary key. Penerapan generator class pada hibernate dapat dilihat sebagai berikut: Nama generator native
identity
sequence
increment
Description Identitas generator native mengambil fungsi dari identity lain seperti identity, sequence atau hilo tergantung pada kemampuan dari database yang digunakan. Generator ini mendukung kolom identitas dalam DB2, MySQL, MS SQL Server, Sybase, HSQLDB, Informix, an Hypersonic SQL. Pengembalian identity-nya berupa tipe long, short, atau int. Penggunaan Sequence dalam DB2, PostgreSQL, Orancle, SAP DB, McKoi, Firebird, atau generator dalam InterBase. Pengembalian identity-nya berupa tipe long, short, atau int. Pada saat hibernate melakukan startup, generator ini membaca 100
primary key dari table dan nilainya bertambah satu terus menerus setiap ada penambahan baris. identifier ini memiliki tipe long, short, atau int. Generator ini sangat efisien jika single-server aplikasi Hibernate dapat memiliki hak pengaksesan database secara exclusif, tetapi tidak dapat digunakan pada scenario yang lain. hilo Algoritma high/low adalah cara efisien untuk menggenerate identifier dari tipe long, short, atau int, diberikan dari sebuah tabel dan kolom (pada defaultnya hibernate_unique_key dan next_hi, secara berturut-turut) sebagai sumber dari nilai hi. Algoritma high/low hanya dapat menggenerate identifier pada database tertentu saja. uuid.hex Generator ini menggunakan 128-bit UUID (sebuah algoritma yang meng-generates identifier dari tipe string, unique dalam sebuah jaringan). IP address dikombinasikan dengan timestamp unique. UUID diprogram sebagai string dari hexadecimal yang memiliki panjang 32 digits. Strategi yang digunakan ini tidak begitu populer, sejak primary key CHAR menghabiskan banyak tempat dari numeric key yang membuatnya semakin lambat. Tabel 3.8.2.1 Tabel Generator Class
3.9 Perancangan Web Service Penggunaan Web Service dalam aplikasi ini akan dipakai dalam hal penyajian data-data saham untuk standardisasi pengaksesan data. Proses penyajian data-data saham ini akan dihandle oleh class StockCore pada aplikasi ini. Web Service ini dilakukan dalam format Remote Procedure Call (RPC), yaitu pemanggilan fungsi/operasi pada remote object (dalam aplikasi ini adalah class StockCore) dengan berdasarkan protokol XML. Berikut ini adalah dua method/operasi yang akan disediakan dalam web service pada aplikasi provider data ini dengan memakai class StockCore: 1. public Stock getStock(String symbol, int day, int month, int year, String licenseNumber).
101
2. public Stock[] getStocks(String symbol, int startDay, int startMonth, int startYear, int endDay, int endMonth, int endYear, String licenseNumber). Kedua fungsi diatas mengembalikan tipe data baru, yaitu Stock sebagai perwakilan dari informasi data saham. Untuk dapat digunakan oleh aplikasi yang lain, tipe data Stock ini akan didefinisikan dalam file WSDL (Web Service Description Language) dalam format yang standar sehingga aplikasi lain dapat menerjemahkan tipe data baru tersebut secara otomatis dengan memakai salah satu framework web service yang telah ada. Berikut ini adalah deployment descriptor yang akan digunakan untuk menggenerate file WSDL: <deployment xmlns="http://xml.apache.org/axis/wsdd/" xmlns:java="http://xml.apache.org/axis/wsdd/providers/java"> <service name="Stock" provider="java:RPC"> <parameter name="className" value="hku.stock.StockCore"/> <parameter name="allowedMethods" value="getStock, getStocks"/>
Berikut ini adalah keterangan tentang deployment descriptor pada Web Service: 1. Element <service> menentukan method-method yang akan digunakan dalam web service. Keterangan-keterangan mengenai method-method yang akan digunakan didefinisikan dalam elemen <parameter>, yaitu: -
className : nama class yang menyediakan operasi-operasi yang akan disediakan oleh web service.
-
allowedMethods : operasi-operasi yang akan dipakai dalam web service.
2. Element yang mendefinisikan tipe data baru. Dalam aplikasi ini, tipe data tersebut adalah Stock. 102