BAB 3 ANALISIS DAN PERANCANGAN MIGRASI DATABASEthesis.binus.ac.id/doc/Bab3/2006-2-01257-IF-Bab...
Transcript of BAB 3 ANALISIS DAN PERANCANGAN MIGRASI DATABASEthesis.binus.ac.id/doc/Bab3/2006-2-01257-IF-Bab...
27
BAB 3
ANALISIS DAN PERANCANGAN
MIGRASI DATABASE
3.1 Gambaran Umum Permasalahan
Migrasi database adalah proses pemindahan suatu database dari satu DBMS ke
DBMS yang lain. Tidak hanya data yang dipindahkan, tetapi juga objek-objek dalam
database tersebut. Pemindahan atau migrasi ini dapat disebabkan oleh berbagai alasan,
misalnya dikarenakan organisasi ingin mengganti DBMS yang sedang dipakai. Ataupun
karena DBMS yang lama sudah tidak mampu menangani kebutuhan baru dari organisasi
tersebut akan pengolahan data yang lebih baik.
3.1.1 Gambaran Migrasi Database pada Umumnya
Berdasarkan “SQLWays Documentation” (anonymous, p43), jika suatu
organisasi ingin melakukan migrasi database, ada 2 hal utama yang perlu dilakukan. Hal
pertama yaitu menyiapkan mekanisme untuk membuat replika objek–objek database di
DBMS tujuan dengan melakukan exporting dan converting. Hal kedua yaitu menyiapkan
mekanisme untuk memindahkan data ke DBMS yang dituju. Dua hal ini memerlukan
waktu dan tenaga yang cukup lama, terutama jika database yang akan di migrasi
memiliki banyak objek dan objek–objek tersebut memerlukan banyak penyesuaian
sebelum dapat di migrasi.
28
3.1.2 Gambaran Migrasi Database pada Sistem Komputer
Migrasi database berbasis komputer dilakukan dengan menggunakan tools
tertentu yang memiliki fitur-fitur yang memudahkan migrasi. Misalnya pembacaan
struktur data dan perpindahan data. Tools yang tersedia ini secara otomatis akan
membaca database yang akan kita migrasi dan kemudian membentuk replikanya pada
DBMS yang dituju. Kemudian data akan dipindahkan ke DBMS yang dituju dengan
terlebih dahulu melakukan penyesuaian yang diperlukan secara otomatis, misalnya
penyesuaian pada tipe data ataupun tingkat ketelitian dari data tersebut.
Ada banyak tools migrasi yang tersedia saat ini. Tool migrasi ini banyak yang
terikat pada DBMS tertentu. Misalnya : MySQL Migration Toolkit, yang hanya bisa
digunakan untuk memindahkan database dari berbagai DBMS lain ke MySQL. Tool lain
yang tersedia, misalnya : Access2MySQL, yang digunakan untuk memindahkan
database dari Microsoft Access ke MySQL. Perbandingan tool migrasi ini dapat dilihat
pada Tabel 3.1 Tabel Perbandingan Tool Migrasi di bawah.
Untuk itulah, diperlukan tool yang mampu melakukan migrasi dari berbagai
DBMS asal ke berbagai DBMS tujuan, dengan menggunakan plugin–plugin yang
tersedia.
Tabel 3.1 Tabel Perbandingan Tool Migrasi
No Kemampuan MySQL Migration Toolkit Access2MySQL
1 Multi source database √ -
2 Multi destination database - -
3 Platform Independent √ -
4 Pemilihan objek √ √
29
5 Log √ -
6 Objek yang dimigrasi
Table
View
Trigger
Stored procedure
User defined function
Security
√
√
√
√
√
-
√
√
-
-
-
-
7 Migrasi data √ √
8 Mapping tipe data √ √
3.1.3 Permasalahan Migrasi Database yang Dihadapi
Permasalahan migrasi database yang ada saat ini dikarenakan tidak banyak tool
migrasi yang dapat dipakai untuk pemindahan database secara umum, dari berbagai
DBMS ke berbagai DBMS lain tergantung kebutuhan migrasi. Pengembangan tool pun
tergantung pada vendor sehingga penyesuaian unutk kasus migrasi tertentu sulit
dilakukan.
Permasalahan pada pengembangan migrasi database berbasis komputer
disebabkan oleh berbagai macam hal, yaitu:
1. Pembacaan meta-data
Cara pembacaan meta-data setiap DBMS berbeda. Ada DBMS yang
menyediakan fungsi untuk mendapatkan meta-data dan ada yang tidak sehingga
tingkat kemudahan pembacaan meta-data - nya berbeda.
30
2. Tipe data yang berbeda
Perbedaan tipe data menjadi suatu masalah pada migrasi database, antara
lain karena: perbedaan range untuk tipe data numerik, perbedaan presisi pada tipe
data floating point, perbedaan format pada tipe data datetime. Perbedaan range tipe
data numerik dan perbedaan presisi pada tipe data numerik dapat menyebabkan
hilangnya informasi, sedangkan perbedaan format tipe data datetime bisa
menyebabkan kesalahan dalam penyimpanan informasi. Perbedaan tipe data ini juga
dapat menyebabkan data tidak dapat dipindahkan atau berubah nilainya saat
dimigrasikan.
3. Sintaks SQL yang berbeda terutama pada view, stored procedure, user-defined
function, trigger
Sintaks SQL mengikuti suatu standar internasional. Salah satu standar
internasional yang sering dijadikan acuan yaitu standar ANSI baik SQL-92 maupun
SQL3. Banyak DBMS yang mengacu pada standar ANSI, namun tidak seluruh
standar ANSI diadopsi. Masing-masing DBMS melakukan pengembangan tersendiri
sehingga sintaks yang dimiliki berbeda.
3.1.4 Pemecahan Masalah
Migrasi database dari berbagai DBMS asal ke berbagai DBMS tujuan dapat
dimungkinkan oleh pengembangan yang dilakukan dengan plugin. Satu plugin khusus
menangani satu DBMS dengan versi tertentu. Misalkan jika ingin melakukan migrasi
database dari DBMS A ke DBMS B diperlukan dua buah plugin. Plugin pertama akan
membaca database dari DBMS A dan mengubahnya ke suatu standar. Plugin kedua
akan membaca dari standar tersebut dan membentuk replikanya di DBMS B. Dengan
31
demikian, pengembangan untuk migrasi database dari DBMS A ke DBMS C lebih
mudah dilakukan karena hanya perlu menambahkan suatu plugin baru yang menangani
DBMS C.
Untuk mengatasi pembacaan meta-data yang berbeda pada tiap DBMS, juga
digunakan plugin. Setiap plugin memiliki cara tersendiri untuk membaca meta-data dari
DBMS yang sesuai. Dengan demikian tool ini dapat menangani pembacaan meta-data
dari DBMS yang berbeda.
Untuk mengatasi masalah perbedaan tipe data diperlukan proses mapping tipe
data antar DBMS agar penyesuaian dapat diotomatisasi. Dalam proses mapping ini, tipe
data yang sesuai untuk database tujuan ditentukan oleh plugin yang digunakan. Dengan
adanya mapping tipe data ini, plugin juga bertanggung jawab dalam melakukan konversi
data.
Untuk mengatasi sintaks yang berbeda pada tiap-tiap DBMS diperlukan proses
yang dapat mengubah sintaks yang berbeda ke format yang sesuai untuk DBMS tertentu.
Sintaks tersebut diubah terlebih dahulu ke suatu standar, yaitu standar ANSI SQL3, baru
kemudian diubah ke format DBMS tujuan. Proses ini dilakukan oleh masing-masing
plugin dengan menggunakan metode parsing. Walaupun proses ini gagal, sintaks
tersebut tetap dapat disimpan apa adanya sehingga dapat dilakukan penyesuaian yang
diperlukan.
3.2 Analisis Migrasi Database
3.2.1 Tahapan Migrasi Database
Migrasi database dimulai dari pembacaan meta-data dari database asal dan
berakhir pada pembentukan database di database tujuan. Migrasi database mampu
32
memproses migrasi table, view, user defined function, trigger, stored procedure, dan
user beserta hak aksesnya. Migrasi ini, secara garis besar dibagi menjadi dua tahap,
yaitu proses baca dan proses tulis. (Lihat Gambar 3.1 Tahapan Migrasi Database).
Proses baca akan dimulai dari pembacaan meta-data database asal. Urutan
pembacaan meta-data dimulai dari pembacaan: table, view, user defined function, stored
procedure, trigger dan terakhir security (user dan hak akses). Meta-data yang diperoleh,
selanjutnya akan diubah agar sesuai dengan standar yang digunakan. Jika meta-data
yang dibaca berupa tabel / user, maka meta-data tersebut akan ditulis ke dalam database
migrasi. Meta-data berupa sintaks SQL akan di-parse dengan parser SQL3. Jika sintaks
SQL tidak sesuai SQL3 maka akan dikonversi menggunakan parser yang sesuai
(database asal). Meta-data yang proses perubahannya gagal akan dibiarkan apa adanya.
Semua sintaks akan disimpan di dalam log.
Proses diatas akan diulang sampai semua objek pada database asal telah selesai
dibaca. Selanjutnya dilakukan pembacaan data dan pembentukan script dari data di
database asal dan script dari data yang telah dikonversi dengan mapping yang sesuai.
Script dibentuk hanya untuk kolom data yang tipe datanya dapat di-mapping. Setelah
selesai, log dari proses baca akan ditampilkan. (Lihat Gambar 3.2 Flow Proses Baca).
Proses tulis dimulai dengan pembacaan meta-data yang telah diperoleh dari
proses baca. Urutan pembacaan meta-data juga sama dengan proses baca, yaitu dimulai
dari pembacaan: table, view, user defined function, stored procedure, trigger dan
terakhir security (user dan hak akses). Meta-data ini juga akan diubah, agar sesuai
dengan standar pada database tujuan. Jika meta-data yang dibaca berupa tabel / user,
maka pada database tujuan akan dibentuk tabel/user sesuai dengan meta-data yang
dibaca namun foreign key constraint untuk tabel tersebut belum dieksekusi. Meta-data
33
berupa sintaks SQL akan di-parse dengan parser yang sesuai (database asal). Jika sintaks
SQL tidak sesuai dengan database tujuan maka akan dikonversi menggunakan parser
SQL3. Meta-data yang proses perubahannya gagal akan dibiarkan apa adanya. Semua
sintaks akan disimpan di dalam log.
Proses diatas akan diulang sampai semua objek selesai dibaca. Selanjutnya akan
dilakukan mapping tipe data dan koversi, serta pembentukan script yang sesuai. Script
dibentuk hanya untuk kolom data yang tipe datanya dapat di-mapping. Selanjutnya
script data akan dieksekusi dan dilanjutkan dengan eksekusi foreign key constraint untuk
semua tabel. Langkah ini dilakukan karena jika foreign key sudah terbentuk sebelum
data dimasukkan maka harus ada mekanisme urutan pemasukkan data. Setelah selesai,
log dari proses tulis akan ditampilkan. (Lihat Gambar 3.3 Flow Proses Tulis).
34
SQL Server 2000
Pembacaan Meta Data
Konversi Meta Data / Proses
Parsing
Penulisan Meta Data
Pembacaan Data
Penulisan Data
Pembacaan Meta Data
Konversi Meta Data / Proses
Parsing
Penulisan Meta Data
Pembacaan Data
Penulisan Data
MySQL 5.0.13
Database Migrasi (Cloudscape)
Proses Baca
Proses Tulis
Database asal Proses Migrasi Database tujuan
1
6
5
4
3
2
6
5
4
3
2
1
Ururtan Pembacaan Meta Data
(Proses Baca dan Proses Tulis)
TableView
User Defined FunctionStored Procedure
TriggerSecurity(User dan Hak Akses)
Gambar 3.1 Tahapan Migrasi Database
35
Membaca meta data melalui plugin
Menulis ke dalam database migration
Membaca data dan membentuk
script
Semua meta data sudah terbaca?
Semua data sudah terbaca?
Ya
Tidak
Tidak
Finish
Start
Ya
Simpan error object ?Tidak
Tipe metadata tabel / user
akses?
Ya
Tidak
Ya
Proses ParsingSesuai standard
ANSI SQL3
Parsing Berhasil ?Ya
Tidak
Gambar 3.2 Flow Proses Baca
36
Membuat objek di database tujuan
Semua meta data sudah terbaca?
Ya
Menulis data ke database tujuan
Semua data sudah terbaca?
Ya
Finish
Tidak
Membaca meta data
Ya
Start
Tidak Tipe metadata tabel / user
akses?
Error object ?
Tidak
Tidak
Ya
Proses ParsingSesuai standard Database Tujuan
Parsing Berhasil ?Ya
Tidak
Gambar 3.3 Flow Proses Tulis
37
3.2.2 Algoritma Konversi
Ketika melakukan pembacaan sintaks SQl, baik dalam proses baca maupun
proses tulis, plugin akan menggunakan parser untuk menentukan apakah sintaks SQL
tersebut perlu dikonversi atau tidak. Parser yang digunakan oleh plugin diperoleh dari
parser generator ANTLR. Proses parsing akan menghasilkan AST (Abstract Syntax
Tree) dengan struktur sebagai berikut :
Gambar 3.4 Abstract Syntax Tree
AST di atas akan dirubah ke dalam bentuk Grammar Tree dengan struktur
sebagai berikut:
Gambar 3.5 Grammar Tree
38
Perubahan tree AST ke bentuk Grammer Tree dilakukan dengan algoritma
sebagai berikut :
Gambar 3.6 Flow Algoritma Tree Converter
39
Dari Grammer Tree tersebut, proses akan dimulai dari node root secara rekursif
hingga semua node selesai dilalui. Contoh alur proses dalam tree :
Gambar 3.7 Urutan Traversal Tree
Berikut ini adalah flow proses konversi yang dilakukan pada tiap node Grammar
Tree:
40
Node berupa nama objek yang harus
dirubah
Mapping nama objek menjadi
nama baruYa
Tidak
Node berupa tipe data yang harus
dirubah
Mapping tipe data menjadi tipe baru
Tidak
Node berupa function yang harus dirubah
Rubah menjadi sintaks function
yang baruYa
Sintaks berupa View, User Defined Function, Stored
Procedure, Trigger
Tidak
Ya Loop ke node node sibling
Sintaks sudah sesuai
Baca seting untuk option
Option dibuang atau dirubah
Tidak
Ya
Tidak
Rubah sintaks
Node berupa parameter dari function atau stored procedure
yang harus dirubah
Mapping nama parameter menjadi
nama baruYa
Tidak
Loop ke node anak pertama
hngga seterusnya
Ya
Start
Memiliki node anak
Ya
Tidak
Finish
Gambar 3.8 Flow Algoritma Proses Konversi
41
3.2.3 Kemampuan Migrasi Database
Ada beberapa hal yang dapat dilakukan dalam migrasi database, antara lain:
• Memindahkan metadata tabel yang berupa : primary key, foreign key, unique
constraint, required data, dan default value.
• Mapping tipe data yang sesuai.
• Menghilangkan karakter white space untuk nama objek.
• Mengubah fungsi getDate menjadi NOW
• Mengubah fungsi ‘CONVERT’ menjadi fungsi ‘CAST’.
• Mengubah operator ‘+’ yang berfungsi sebagai string concatenation menjadi fungsi
‘CONCAT’.
• Mengubah fungsi ‘DATENAME’ dengan parameter ‘month’ menjadi
‘MONTHNAME’..
• Mengubah sintaks SQL untuk stored procedure, antara lain: menghilangkan option
‘WITH’, ‘VARYING’, ‘FOR’, ‘AS’, nilai default parameter; merubah tipe
parameter ‘OUTPUT’ menjadi ‘INOUT’ dan menambahkan karakter ‘(‘ dan ‘)’
untuk pengelompokan parameter.
• Mengubah sintaks SQL untuk user defined function, antara lain: menghilangkan
option ‘WITH’, default parameter, ‘AS’ dan karakter ‘@’ pada nama parameter;
menambah karakter ‘;’ di setiap akhir statement.
• Mengubah sintaks SQL untuk trigger, antara lain: menghilangkan option ‘WITH’,
‘NOT FOR REPLICATION’; mengubah table ‘Inserted’ dan ‘Deleted’;
42
menambahkan “FOR EACH ROW”, ”BEGIN”, dan ”END”; Menambahkan titik
koma pada setiap akhir statement.
3.3 Perancangan Migrasi Database
3.3.1 Perancangan Arsitektur Plugin
Fungsi – fungsi umum
Nama Fungsi : openCon Function Header public void openCon() Input Tipe data : - Deskripsi : - Output Tipe data : - Deskripsi : - Keterangan Membuka koneksi dengan DBMS plugin Nama Fungsi : SetParam Function Header public void setParam(java.util.Vector job) Input Tipe data : java.util.Vector Deskripsi
: Keterangan mengenai job seperti ip, port, nama database, user, password
Output Tipe data : - Deskripsi : - Keterangan : Meyimpan data-data mengenai job ip, port, nama database, user,
password Nama Fungsi : InitLog Function Header public void initLog() Input Tipe data : - Deskripsi : - Output Tipe data : - Deskripsi : - Keterangan Menginisialisai log untuk mencatat semua proses pada plugin Nama Fungsi : setMapping Function Header : public void setMapping(java.util.HashMap h) Input Tipe data : java.util.HashMap Deskripsi : Keterangan untuk mapping tipe data Output Tipe data : - Deskripsi : - Keterangan : Meyimpan data untuk mapping tipe data
43
Nama Fungsi : setMappingName Function Header : public void setMappingName(java.util.HashMap h) Input Tipe data : java.util.HashMap Deskripsi : Keterangan untuk mapping nama objek Output Tipe data : - Deskripsi : - Keterangan : Menyimpan data untuk mapping nama objek Nama Fungsi : closeCon Function Header : public void closeCon() Input Tipe data : - Deskripsi : - Output Tipe data : - Deskripsi : - Keterangan : Menutup koneksi dengan DBMS plugin Nama Fungsi : replaceAllObjectName Function Header : public java.lang.String replaceObjectName(java.lang.String nm) Input Tipe data : java.lang.String Deskripsi : Keterangan nama objek Output Tipe data : - Deskripsi : - Keterangan :
Menganti semua nama objek sesuai dengan mapping nama objek dengan memanggil fungsi replaceObjectName
Nama Fungsi : replaceObjectName Function Header : public java.lang.String replaceObjectName(java.lang.String nm) Input Tipe data : java.lang.String Deskripsi : Keterangan nama objek Output Tipe data : - Deskripsi : - Keterangan : Menganti satu nama objek sesuai dengan mapping nama objek Nama Fungsi : recursive Function Header : public java.lang.String recursive(GrammarTree gt) Input Tipe data : GrammarTree Deskripsi : Tree dari Sintaks SQL untuk objek View, Stored
Procedure, UDF, Trigger Output Tipe data : java.lang.String Deskripsi : String dari Sintaks SQL untuk objek View, Stored
Procedure, UDF, Trigger Keterangan :
Melakukan travelsal untuk membentuk String dari Tree Sintaks SQL untuk objek View, Stored Procedure, UDF, Trigger
44
Nama Fungsi : convert Function Header : public java.lang.String convert(java.lang.String schema) Input Tipe data : java.lang.String Deskripsi : Definisi objek yang akan dikonversi Output Tipe data : java.lang.String Deskripsi : Definisi objek setelah dikonversi ke ANSI SQL3 Keterangan :
Melakukan konversi pada definisi objek yang diinput agar sesuai dengan ANSI SQL3 dengan menggunakan fungsi sqlServerConverter dan recursive
Nama Fungsi : pluginConverter Function Header : public GrammarTree pluginConverter(GrammarTree gt) Input Tipe data : GrammarTree Deskripsi : Tree dari Sintaks SQL untuk objek View, Stored
Procedure, UDF, Trigger Output Tipe data : GrammarTree Deskripsi : Tree dari Sintaks SQL untuk objek View, Stored
Procedure, UDF, Trigger Keterangan : Melakukan travelsal dan konversi pada Tree input agar sesuai dengan
ANSI SQL3 Nama Fungsi : getDbName Function Header : public java.lang.String getDbName() Input Tipe data : - Deskripsi : - Output Tipe data : java.lang.String Deskripsi : Nama database Keterangan : Mengembalikan nama database Nama Fungsi : getDbIpAddr Function Header : public java.lang.String getDbIpAddr() Input Tipe data : - Deskripsi : - Output Tipe data : java.lang.String Deskripsi : IP Address dari Database Server Keterangan : Mengembalikan IP Address dari Database Server Nama Fungsi : getDbPort Function Header : public java.lang.String getDbPort() Input Tipe data : - Deskripsi : - Output Tipe data : java.lang.String Deskripsi : port untuk berhubungan dengan Database Server
45
Keterangan : Mengembalikan nomor port untuk berhubungan dengan Database Server
Nama Fungsi : getDbUserName Function Header : public java.lang.String getDbUserName() Input Tipe data : - Deskripsi : - Output Tipe data : java.lang.String Deskripsi : Nama user name Keterangan : Mengembalikan nama user name untuk berhubungan dengan
Database Server Nama Fungsi : getDbPassword Function Header : public java.lang.String getDbPassword() Input Tipe data : - Deskripsi : - Output Tipe data : java.lang.String Deskripsi : Password Keterangan : Mengembalikan password untuk berhubungan dengan Database
Server Fungsi-fungsi pada proses Baca Nama Fungsi : readUserAccess Function Header : public java.util.Vector readUserAccess() Input Tipe data : - Deskripsi : - Output Tipe data : java.util.Vector Deskripsi : Keterangan nama-nama user beserta hak aksesnya Keterangan : Membaca nama-nama user dan hak aksesnya pada database di
DBMS plugin Nama Fungsi : readStoredProcedure Function Header : public java.util.Vector readStoredProcedure() Input Tipe data : - Deskripsi : - Output Tipe data : java.util.Vector Deskripsi : Keterangan nama-nama Stored Procedure dan definisinyaKeterangan :
Membaca nama-nama Stored Procedure dan definisinya pada database di DBMS plugin
Nama Fungsi : readUserDefinedFunction Function Header : public java.util.Vector readUserDefinedFunction() Input Tipe data : -
46
Deskripsi : - Output Tipe data : java.util.Vector Deskripsi : Keterangan nama-nama User Defined Function dan
definisinya Keterangan :
Membaca nama-nama User Defined Function dan definisinya pada database di DBMS plugin
Nama Fungsi : readView Function Header : public java.util.Vector readView() Input Tipe data : - Deskripsi : - Output Tipe data : java.util.Vector Deskripsi : Keterangan nama-nama View beserta definisinya Keterangan : Membaca nama-nama View dan definisinya pada database di DBMS
plugin Nama Fungsi : readTrigger Function Header : public java.util.Vector readTrigger() Input Tipe data : - Deskripsi : - Output Tipe data : java.util.Vector Deskripsi : Keterangan nama-nama Trigger beserta definisinya Keterangan : Membaca nama-nama Trigger dan definisinya pada database di
DBMS plugin Nama Fungsi : readTable Function Header : public java.util.Vector readTable() Input Tipe data : - Deskripsi : - Output Tipe data : java.util.Vector Deskripsi
: Keterangan nama-nama tabel beserta definisinya (termasuk nama kolom beserta tipe datanya, primary key, foreign key, unique constraint, nullable, length, dan default value)
Keterangan : Membaca nama-nama tabel dan definisinya pada database di DBMS plugin
Fungsi-fungsi pada proses Tulis Nama Fungsi : runQuery Function Header : public boolean runQuery(java.lang.String query) Input Tipe data : java.lang.String Deskripsi : Sintaks SQL untuk dieksekusi di Database server Output Tipe data : boolean
47
Deskripsi
: penanda keberhasilan eksekusi sintaks SQL True=berhasil False=gagal
Keterangan : Menjalankan sintaks SQL input di Database server untuk membentuk Objek
Nama Fungsi : createDatabase Function Header : public boolean createDatabase(java.lang.String databaseName) Input Tipe data : java.lang.String Deskripsi : nama database Output Tipe data : boolean Deskripsi
: penanda keberhasilan pembuatan database True=berhasil False=gagal
Keterangan :
Membuat database yang akan dimigrasi pada DBMS, dipanggil pertama kali sebelum membentuk objek-objek yang lain
Nama Fungsi : writeTable Function Header : public boolean writeTable(java.util.Vector vTable,java.util.Vector
columnDesc) Input vTable Tipe data : java.util.Vector Deskripsi : Nama-nama tabel Input columnDesc Tipe data : java.util.Vector Deskripsi
: kolom-kolom untuk tabel (termasuk tipe datanya, primary key, foreign key, unique constraint, nullable, length, dan default value)
Output Tipe data : boolean Deskripsi
: penanda keberhasilan pembuatan tabel True=berhasil False=gagal
Keterangan : Membuat tabel secara fisik di DBMS sesuai dengan input yang diberikan
Nama Fungsi : createConstraints Function Header : public boolean createConstraints() Input Tipe data : - Deskripsi : - Output Tipe data : boolean Deskripsi
: penanda keberhasilan pembuatan constraint Foreign Key True=berhasil False=gagal
Keterangan :
Membuat Foreign Key constraint pada DBMS, dijalankan setelah semua tabel terbentuk dan diisi dengan data
48
Nama Fungsi : writeView Function Header : public boolean writeView(java.lang.String
viewName,java.lang.String viewDesc) Input viewName Tipe data : java.lang.String Deskripsi : Nama-nama View Input viewDesc Tipe data : java.lang.String Deskripsi : Definisi dari View Output Tipe data : boolean Deskripsi
: penanda keberhasilan pembuatan View True=berhasil False=gagal
Keterangan :
Membuat View secara fisik di DBMS sesuai dengan input yang diberikan, dijalankan sesudah objek tabel telah terbentuk
Nama Fungsi : writeTrigger Function Header :
public boolean writeTrigger(java.lang.String triggerName,java.lang.String trigerDesc)
Input triggerName
Tipe data
: java.lang.String
Deskripsi : Nama-nama Trigger Input trigerDesc Tipe data : java.lang.String Deskripsi : Definisi dari Trigger Output Tipe data : boolean Deskripsi
: penanda keberhasilan pembuatan Trigger True=berhasil False=gagal
Keterangan :
Membuat Trigger secara fisik di DBMS sesuai dengan input yang diberikan, dijalankan sesudah objek tabel telah terbentuk
Nama Fungsi : writeStoredProcedure Function Header :
public boolean writeStoredProcedure(java.lang.String storedProcName,java.lang.String storedProcDesc)
Input storedProcName
Tipe data
: java.lang.String
Deskripsi : Nama-nama Strored Procedure Input storedProcDesc
Tipe data
: java.lang.String
Deskripsi : Definisi Stored Procedure Output Tipe data : boolean Deskripsi
: penanda keberhasilan pembuatan Stored Procedure True=berhasil False=gagal
Keterangan :
Membuat Stored Procedure secara fisik di DBMS sesuai dengan input yang diberikan, dijalankan sesudah objek tabel telah terbentuk
49
Nama Fungsi : writeUserDefinedFunction Function Header :
public boolean writeUserDefinedFunction(java.lang.String uDFName,java.lang.String uDFDesc)
Input uDFName Tipe data : java.lang.String Deskripsi : Nama-nama User Defined Function Input uDFDesc Tipe data : java.lang.String Deskripsi : Definisi User Defined Function Output Tipe data : boolean Deskripsi
: penanda keberhasilan pembuatan User Defined Function True=berhasil False=gagal
Keterangan :
Membuat Stored Procedure secara fisik di DBMS sesuai dengan input yang diberikan
Nama Fungsi : createUser Function Header : public boolean createUser(java.util.Vector userDesc) Input Tipe data : java.util.Vector Deskripsi : Keterangan mengenai user (nama user dan password) Output Tipe data : boolean Deskripsi
: penanda keberhasilan pembuatan User True=berhasil False=gagal
Keterangan :
Membuat User secara fisik di DBMS sesuai dengan input yang diberikan
Nama Fungsi : grantUser Function Header : public boolean grantUser(java.util.Vector userAcces) Input Tipe data : java.util.Vector Deskripsi : Hak-hak akses untuk tiap-tiap user Output Tipe data : boolean Deskripsi
: penanda keberhasilan pemberian hak akses pada User True=berhasil False=gagal
Keterangan : Memberikan hak akses pada tiap-tiap user di DBMS untuk database yang bersangkutan
3.3.2 Perancangan Database
Migrasi database memerlukan suatu database dalam menjalankan prosesnya,
yaitu database migrasi. Database migrasi memiliki dua belas tabel, yaitu:
50
1. Tabel MsCategory
Nama Tabel : MsCategory
Primary Key : CategoryCode
Foreign Key : -
Tabel 3.2 Tabel MsCategory
Nama Kolom Tipe Data Length Keterangan
CategoryCode VARCHAR 10 Kode untuk kategori DBMS
Descc VARCHAR 100 Deskripsi dari CategoryCode
Tabel ini berfungsi menyimpan data tentang kategori plugin yang dipakai
dalam migrasi database ini. Misalnya: kategori Microsoft SQL Server, kategori
MySQL, dan sebagainya.
2. Tabel MsPlugin
Nama Tabel : MsPlugin
Primary Key : PluginCode
Foreign Key : CategoryCode
Tabel 3.3 Tabel MsPlugin
Nama Kolom Tipe Data Length Keterangan
PluginCode VARCHAR 10 Kode untuk plugin
CategoryCode VARCHAR 10 Kode kategori dari plugin
Descp VARCHAR 100 Deskripsi dari PluginCode
ClassName VARCHAR 100 Nama class dari plugin
51
Tabel ini berfungsi untuk menyimpan data jenis plugin yang didukung oleh
tool migrasi ini dan juga nama class plugin-nya. Misalnya: plugin Microsoft SQL
Server 2000, plugin MySQL versi 5.0.11.
3. Tabel MsJob
Nama Tabel : MsJob
Primary Key : JobId
Foreign Key : -
Tabel 3.4 Tabel MsJob
Nama Kolom Tipe Data Length Keterangan
JobId SMALLINT - Kode untuk suatu job
JobDesc VARCHAR 100 Deskripsi dari job tersebut
DbName VARCHAR 255 Nama database
Ip VARCHAR 16 IP Address database server
Port INT - Port database server
UserName VARCHAR 255 User database server
Password VARCHAR 50 Password untuk user diatas
Tabel ini menyimpan keterangan dari suatu job dan database yang terkait,
dimana satu JobId mewakili satu database.
52
4. Tabel MsPluginReadMapping
Nama Tabel : MsPluginReadMapping
Primary Key : PluginCode, PluginDataType, DataType
Foreign Key : PluginCode
Tabel 3.5 Tabel MsPluginReadMapping
Nama Kolom Tipe Data Length Keterangan
PluginCode VARCHAR 10 Kode plugin
PluginDataType VARCHAR 25 Tipe data pada plugin
DataType VARCHAR 25 Tipe data pada database migrasi
Num SMALLINT - Penanda tipe data yang
merupakan tipe data numeric
Error SMALLINT - Penanda tipe data yang
merupakan tipe data yang error
waktu mapping
Tabel ini menyimpan mapping tipe data yang bersesuaian untuk setiap plugin
pada proses baca, beserta informasi numeric dan error tipe data tersebut.
5. Tabel MsPluginWriteMapping
Nama Tabel : MsPluginWriteMapping
Primary Key : PluginCode, PluginDataType, DataType
Foreign Key : PluginCode
53
Tabel 3.6 Tabel MsPluginWriteMapping
Nama Kolom Tipe Data Length Keterangan
PluginCode VARCHAR 10 Kode plugin
PluginDataType VARCHAR 25 Tipe data pada plugin
DataType VARCHAR 25 Tipe data pada database migrasi
Num SMALLINT - Penanda tipe data yang
merupakan tipe data numeric
Error SMALLINT - Penanda tipe data yang
merupakan tipe data yang error
waktu mapping
Tabel ini menyimpan mapping tipe data yang bersesuaian untuk setiap plugin
pada proses tulis, beserta informasi numerik dan error tipe data tersebut.
6. Tabel MsPluginObjectName
Nama Tabel : MsPluginObjectName
Primary Key : PluginCode, SourceChar, DestChar
Foreign Key : PluginCode
Tabel 3.7 Tabel MsPluginObjectName
Nama Kolom Tipe Data Length Keterangan
PluginCode VARCHAR 10 Kode plugin
SourceChar VARCHAR 25 Karakter yang akan dikonversi
DestChar VARCHAR 25 Karakter hasil konversi
54
Tabel ini menyimpan jenis karakter untuk konversi nama objek.
7. Tabel TrJob
Nama Tabel : TrJob
Primary Key : JobId, JobSeq
Foreign Key : JobId, PluginCode
Tabel 3.8 Tabel TrJob
Nama Kolom Tipe Data Length Keterangan
JobId SMALLINT - Kode job
JobSeq SMALLINT - Nomor urut
JobDesc VARCHAR 100 Deskripsi dari JobSeq
DateJob Date - Tanggal job dilakukan
LogFileName VARCHAR 50 Nama file untuk log job ini
PluginCode VARCHAR 10 Kode Plugin
IncludeErrorObject SMALLINT - Penanda untuk
penyimpanan Error Object
Tabel ini menyimpan data tentang proses-proses migrasi yang pernah
dilakukan, baik proses baca maupun proses tulis. JobSeq diperlukan jika suatu job
diproses ulang.
55
8. Tabel TrJobDetail
Nama Tabel : TrJobDetail
Primary Key : JobId, JobSeq
Foreign Key : JobId, JobSeq, RefJobId, RefJobSeq
Tabel 3.9 Tabel TrJob Detail
Nama Kolom Tipe Data Length Keterangan
JobId SMALLINT - Kode job
JobSeq SMALLINT - Nomor urut
RefJobId SMALLINT - Kode job dari action read
RefJobSeq SMALLINT - Nomor urut
Tabel ini hanya berisi data job proses tulis. Tabel ini digunakan sebagai
penunjuk untuk mengetahui JobId mana yang akan digunakan sebagai sumber untuk
suatu job proses tulis.
9. Tabel TrObject
Nama Tabel : TrObject
Primary Key : JobId, JobSeq, ObjectName
Foreign Key : JobId, JobSeq
Tabel 3.10 Tabel TrObject
Nama Kolom Tipe Data Length Keterangan
JobId SMALLINT - Kode job
JobSeq SMALLINT - Nomor urut
56
ObjectName VARCHAR 255 Nama objek
ObjectType VARCHAR 20 Tipe Objek
Error SMALLINT - Tipe Error pada objek
Tabel ini menyimpan data tentang objek-objek apa saja yang dibaca pada
satu proses baca beserta tipe error tiap objek jika terdapat error pada waktu proses
migrasi tersebut.
10. Tabel TrUserAccess
Nama Tabel : TrUserAccess
Primary Key : JobId, JobSeq, ObjectName, UserName
Foreign Key : JobId, JobSeq, ObjectName
Tabel 3.11 Tabel TrUserAccess
Nama Kolom Tipe Data Length Keterangan
JobId SMALLINT - Kode job
JobSeq SMALLINT - Nomor urut
ObjectName VARCHAR 255 Nama objek
UserName VARCHAR 255 Nama user
AddAcc SMALLINT - Hak user untuk menambah
record
UpdateAcc SMALLINT - Hak user untuk mengubah
record
DeleteAcc SMALLINT - Hak user untuk menghapus
57
record
SelectAcc SMALLINT - Hak user untuk melihat record
yang ada
Tabel ini menyimpan data tentang hak akses yang dimiliki oleh pengguna
database.
11. Tabel TrObjectDetail
Nama Tabel : TrObjectDetail
Primary Key : JobId, JobSeq, ObjectName, TextSeq
Foreign Key : JobId, JobSeq, ObjectName
Tabel 3.12 Tabel TrObjectDetail
Nama Kolom Tipe Data Length Keterangan
JobId SMALLINT - Kode job
JobSeq SMALLINT - Nomor urut
ObjectName VARCHAR 255 Nama objek
TextSeq SMALLINT - Nomor urut text
Text VARCHAR 250 Text
Tabel ini digunakan untuk menyimpan data dari objek yang berupa sintaks
SQL. Jika panjang sintaks melebihi length dari field text, maka sintaks tersebut akan
dibagi ke dalam beberapa bagian.
58
12. Tabel TrObjectColumn
Nama Tabel : TrObjectColumn
Primary Key : JobId, JobSeq, ObjectName, ColumnName
Foreign Key : JobId, JobSeq, ObjectName
Tabel 3.13 Tabel TrObjectColumn
Nama Kolom Tipe Data Length Keterangan
JobId SMALLINT - Kode job
JobSeq SMALLINT - Nomor urut
ObjectName VARCHAR 255 Nama objek tabel
ColumnName VARCHAR 255 Nama kolom
DataType VARCHAR 25 Tipe data
Length INTEGER - Panjang untuk tipe data
karakter
Nullable SMALLINT - Penanda bisa berisi null atau
tidak
DefaultCol VARCHAR 255 Nilai default untuk kolom
UniqueCol SMALLINT - Penanda bahwa suatu kolom
tidak boleh memiliki nilai
yang sama, tapi boleh null
PrimaryCol SMALLINT - Sama seperti unuk, tetapi
tidak boleh null
RefObjectName VARCHAR 255 Nama objek tabel untuk
definisi foreign key
59
RefObjectColumn VARCHAR 255 Nama kolom pada tabel di
atas untuk definisi foreign
key
RefUpdate SMALLINT - Aksi yang dilakukan untuk
tipe referensial update
RefDelete SMALLINT - Aksi yang dilakukan untuk
tipe referensial delete
Error SMALLINT - Penanda kolom yang tipe data
mapping-nya error.
Tabel ini digunakan untuk menyimpan data objek yang bertipe table. Data
yang tersimpan disini adalah data informasi tabel beserta referensial integrity dari
tabel tersebut dan informasi keberhasilan mapping-nya.
ERD dari database migrasi diatas dapat dilihat di Gambar 3.4 ERD Database
Migrasi.
60
Gambar 3.9 ERD Database Migrasi
61
3.3.3 Perancangan Layar
Gambar 3.10 Struktur Menu
Write Database
Read Database View Log
View Table
Layar Pembuka
Layar Utama
Layar Task Baca
Layar Mapping Tipe data
Layar Konfirmasi Baca
Layar Proses Baca
Layar Log
Layar Task Tulis
Layar Mapping Tipe data
Layar Konfirmasi Tulis
Layar Proses Tulis
Layar Log
Layar View Table Schema
and Script
Layar View Table
Layar View Log
Layar Log Layar Konfigurasi
Layar Konfigurasi
Layar Table Schema and Script
62
3.3.3.1 Layar Pembuka
Judul Layar
Keterangan Layar
Gambar
Kata-kata pembuka
Next Exit
Gambar 3.11 Rancangan Layar Pembuka
3.3.3.2 Layar Utama
Judul Layar
Keterangan Layar
Action Gambar radio Read radio Write radio View task radio View log Help Back Next Cancel
Gambar 3.12 Rancangan Layar Utama
63
3.3.3.3 Layar Task Baca
Judul Layar
Keterangan Layar
Task TextBox/Combo Box Check Box New Task Gambar Database Name TextBox IP TextBox Port TextBox User TextBox Password TextBox Task Detail TextBox Plugins ComboBox Help Back Next Cancel
Gambar 3.13 Rancangan Layar Task Baca
64
3.3.3.4 Layar Task Tulis
Judul Layar
Keterangan Layar
Task TextBox/Combo Box Check Box New Task Database Name TextBox IP TextBox Gambar Port TextBox User TextBox Password TextBox Task Detail TextBox Plugins ComboBox Read From : Ref Task ComboBox Ref Task Detail ComboBox Help Back Next Cancel
Gambar 3.14 Rancangan Layar Task Tulis
65
3.3.3.5 Layar View Table Schema and Script
Judul Layar
Keterangan Layar
Task ComboBox Task Detail ComboBox Gambar Database Name Label Date Label Log File Name Label Plugin Desc Label Help Back Next Cancel
Gambar 3.15 Rancangan Layar View Table Schema and Script
3.3.3.6 Layar View Log
Judul Layar
Keterangan Layar
Task ComboBox Task Detail ComboBox Gambar Help Back Next Cancel
Gambar 3.16 Rancangan Layar View Log
66
3.3.3.7 Layar Konfigurasi Task
Judul Layar
Keterangan Layar
Check Box Include Error Object Gambar Check Box Convert Object Name Source Char Text Box Destination Char Text Box Help Back Next Cancel
Gambar 3.17 Rancangan Layar Konfigurasi Task
3.3.3.8 Layar Mapping Tipe Data
Judul Layar
Keterangan Layar
Sumber Tujuan Gambar
Daftar Mapping Data Type
Help Back Next Cancel
Gambar 3.18 Rancangan Layar Mapping Tipe Data
67
3.3.3.9 Layar Konfirmasi Baca
Judul Layar
Keterangan Layar
Database Name Label IP Label Gambar Port Label User Label Plugin Label Help Back Next Cancel
Gambar 3.19 Rancangan Layar Konfirmasi Baca
3.3.3.10 Layar Konfirmasi Tulis
Judul Layar
Keterangan Layar
Database Name Label IP Label Gambar Port Label User Label Plugin Label Read from : Ref Task Label Ref Task Detail Label Help Back Next Cancel
Gambar 3.20 Rancangan Layar Konfirmasi Tulis
68
3.3.3.11 Layar Proses Baca
Judul Layar
Keterangan Layar
Gambar
Keterangan Proses
Help Next Ext
Gambar 3.21 Rancangan Layar Proses Baca
3.3.3.12 Layar Proses Tulis
Judul Layar
Keterangan Layar
Gambar
Keterangan Proses
Help Next Ext
Gambar 3.22 Rancangan Layar Proses Tulis
69
3.3.3.13 Layar Log
Judul Layar
Keterangan Layar
Log Type Combo Box Gambar
Log
Help Back Next Exit
Gambar 3.23 Rancangan Layar Log
3.3.3.14 Layar View Table
Judul Layar
Keterangan Layar
Gambar
Table Tree View
Help Back Next Exit
Gambar 3.24 Rancangan Layar View Table
70
3.3.3.15 Layar Table Schema and Script
Judul Layar
Keterangan Layar
Shema Source Script Dest Script Help Close
Gambar 3.25 Rancangan Layar Table Schema and Script
3.3.3.16 Layar Help
Judul Layar
Keterangan Layar
Text
Close
Gambar 3.26 Rancangan Layar Help
71
3.4 Spesifikasi Modul
class Main deklarasi attribute deklarasi driver yang akan dipakai constructor panggil method super deklarasi semua class screen set class lanjutan untuk semua screen yang ditentukan dengan indeks tampilkan class WelcomeScreen end constructor method main deklarasi class Main end main method buttonClicked jika button Next diklik panggil method preloadScreen layar berikutnya panggil screen berikutnya end jika jika button Back diklik panggil screen sebelumnya end jika jika button Cancel di klik panggil screen pertama end jika end buttonClicked end Main
Interface Tree method getChild end getChild method addChild end addChild method getTreeParent end getTreeParent method getNoOfChild end getNoOfChild method addTreeParent end addTreeParent method setIndexAtParent end setIndexAtParent method removeChild end removeChild end Tree
Class GrammarTree constructor panggil method setText
72
end constructor method addChild tambah tree anak dengan indeks yang sesuai end method addChild method addTreeParent set treeParent = parameter tree yang dikirim end addTreeParent method getChild return tree anak sesuai indeks yang diminta end getChild method getIndexAtParent return indeks tree ini di parent end getIndexAtParent method getNoOfChild return jumlah tree anak end getNoOfChild method getText return teks dari tree end getText method getTreeParent return objek parent end getTreeParent method removeChild remove tree anak pada indeks yang sesuai end removeChild method setIndexAtParent set nilai indeks pada parent end setIndexAtParent method setText set teks dari tree end setText end GrammarTree
class ScreenTree deklarasi attribute deklarasi variable global constructor panggil method super inisialisasi layout default end constructor method getChild keluar method dengan mengembalikan anak dari screen tree sesuai dengan indeks end getChild method addChild menambahkan screen tree parent pada tree yang dikirim menambahkan indeks pada tree anak yang telah ditambahkan end addChild method getTreeParent keluar method dengan mengembalikan tree parent
73
end getTreeParent method getNoOfChild keluar methode dengan mengembalikan jumlah tree anak end getNoOfChild method addTreeParent set tree Parent dengan tree yang dikirim end addTreeParent method nextScreen sembunyikan screen yang aktif tampilkan screen selanjutnya end nextScreen method prevScreen sembunyikan screen yang aktif tampilkan screen parent end prevScreen method preloadScreen keluar method dengan mengemmbalikan nilai true end preloadScreen end ScreenTree
class MainMenuScreen deklarasi attribute constructor panggil method super panggil method initScreen panggil method initDb end constructor method initScreen inisialisasi layout end initScreen method initDb buat driver untuk database migrasi buat koneksi database end initDb method setNextScreen set indeks screen berikutnya sesuai dengan parameter yang dikirim end setNextScreen method readAction jika aksi read database yang dipilih set radio button read yang terpilih end jika set radio button write tidak dipilih set radio button lihat schema table dan script tidak dipilih set radio button lihat log tidak dipilih set indeks screen selanjutnya set kode aksi end readAction method writeAction jika aksi write database yang dipilih
74
set radio button write yang terpilih end jika set radio button read tidak dipilih set radio button lihat schema table dan script tidak dipilih set radio button lihat log tidak dipilih set indeks screen selanjutnya set kode aksi end writeAction method jobAction jika aksi lihat schema table dan script yang dipilih set radio buttonlihat schema table dan script yang terpilih end jika set radio button write tidak dipilih set radio button read tidak dipilih set radio button lihat log tidak dipilih set indeks screen selanjutnya set kode aksi end jobAction method logAction jika aksi lihat log yang dipilih set radio button lihat log yang terpilih end jika set radio button write tidak dipilih set radio button lihat schema table dan script tidak dipilih set radio button read tidak dipilih set indeks screen selanjutnya set kode aksi end logAction method buttonClicked jika button Next diklik panggil method preloadScreen layar berikutnya panggil screen berikutnya end jika jika button Back diklik panggil screen sebelumnya end jika jika button Cancel di klik panggil screen pertama end jika end buttonClicked end MainMenuScreen
class ProcessReadJobScreen deklarasi attribute constructor panggil method super panggil method initScreen end constructor method initScreen
75
inisialisasi layout end initScreen method perloadScreen jika method loadParam tidak mengembalikan nilai true keluar method dengan mengembalikan nilai false end jika jika method process tidak mengembalikan nilai true keluar method dengan mengembalikan nilai false end jika keluar method dengan mengembalikan nilai true end preloadScreen method loadParam buat koneksi database jika merupakan task baru query data task terbaru set kode task=data task terbaru tambahkan data task baru ke database dengan kode task=kode task+1 selain itu set kode task=variable global task query data task detail terbaru end jika
tambahkan data task detail baru ke database dengan kode task baru dan kode task detail=kode task detail+1
keluar method dengan mengemablikan nilai end loadParam method process deklarasi class Log baru panggil method setText pada class Log
deklarasi class MetaDataEngine baru dengan mengirimkan data task, task detail, kode read dan class log
panggil method setChar pada class MetaDataEngine dengan mengirimkan kode dan karakter convert
mulai menjalankan class MetaDataEngine keluar method dengan mengembalikan nilai true end process method setBut set button Next sesuai dengan parameter yang diterima end setBut method buttonClicked jika button Next diklik panggil method preloadScreen layar berikutnya panggil screen berikutnya end jika jika button Exit di klik keluar dari program end jika end buttonClicked end ProcessReadJobScreen
class ProcessWriteJobScreen
76
deklarasi attribute constructor panggil method super panggil method initScreen end constructor method initScreen inisialisasi layout end initScreen method perloadScreen jika method loadParam tidak mengembalikan nilai true keluar method dengan mengembalikan nilai false end jika jika method process tidak mengembalikan nilai true keluar method dengan mengembalikan nilai false end jika keluar method dengan mengembalikan nilai true end preloadScreen method loadParam buat koneksi database jika merupakan task baru query data task terbaru set kode task=data task terbaru tambahkan data task baru ke database dengan kode task=kode task+1 selain itu set kode task=variable global task query data task detail terbaru end jika
tambahkan data task detail baru ke database dengan kode task baru dan kode task detail=kode task detail+1
tambahkan data task reference ke database keluar method dengan mengemablikan nilai end loadParam method process deklarasi class Log baru panggil method setText pada class Log
deklarasi class MetaDataEngine baru dengan mengirimkan data task, task detail, kode write dan class log
panggil method setChar pada class MetaDataEngine dengan mengirimkan kode dan karakter convert
mulai menjalankan class MetaDataEngine keluar method dengan mengembalikan nilai true end process method setBut set button Next sesuai dengan parameter yang diterima end setBut method buttonClicked jika button Next diklik panggil method preloadScreen layar berikutnya panggil screen berikutnya end jika jika button Exit di klik
77
keluar dari program end jika end buttonClicked end ProcessWriteJobScreen
class ReadMappingScreen deklarasi attribute constructor panggil method super panggil method initScreen end constructor method initScreen inisialisasi layout end initScreen method perloadScreen bersihkan panel mapping buat koneksi database query data raed mapping sesuai plugin loop selama masih ada data masukkan dalam variable vector end loop set layout panel sesuai variable vector loop sebanyak ukuran variable vector tambahkan label sesuai value variabel vector pada panel end loop masukkan panel ke dalam scrollPane tutup koneksi database keluar method dengan mengembalikan nilai true end preloadScreen method createLabel buat label baru set text label sesuai parameter yang dikirim keluar method dengan mengembalikan label end createLabel method buttonClicked jika button Next diklik panggil method preloadScreen layar berikutnya panggil screen berikutnya end jika jika button Back diklik panggil screen sebelumnya end jika jika button Cancel di klik panggil screen pertama end jika end buttonClicked end ReadMappingScreen
78
class ViewLogScreen deklarasi attribute constructor panggil method super panggil method initScreen end constructor method initScreen inisialisasi layout end initScreen method loadData buat koneksi database query data task loop selama masih ada data tampilkan data ke combobox end loop panggil method loadTaskDesc panggil method loadTaskDetail tutup koneksi database end loadData method perloadScreen panggil method loadData keluar method dengan mengembalikan nilai true end preloadScreen method loadTaskDesc jika jumlah task !=0 buat koneksi database query data task loop selama masih ada data tampilkan data task end loop tutup koneksi database end jika end loadTaskDesc method loadTaskDetail jika jumlah task !=0 buat koneksi database query data task detail loop selama masih ada data tampilkan data ke combobox end loop tutup koneksi database end jika end loadTaskDetail method buttonClicked jika button Next diklik panggil method saveParam panggil method preloadScreen layar berikutnya panggil screen berikutnya end jika jika button Back diklik panggil screen sebelumnya
79
end jika jika button Cancel di klik panggil screen pertama end jika end buttonClicked method jobIdChange panggil method loadTaskDetail panggil method loadTaskDesc end jobIdChange method saveParam set variable global=nilai textfield end saveParam end ViewLogScreen
class ViewResultScreen deklarasi attribute constructor panggil method super panggil method initScreen end constructor method initScreen inisialisasi layout end initScreen method loadData buat koneksi database query data task loop selama masih ada data tampilkan data ke combobox end loop panggil method loadTaskDesc panggil method loadTaskDetail tutup koneksi database end loadData method perloadScreen panggil method loadData keluar method dengan mengembalikan nilai true end preloadScreen method loadTaskDesc jika jumlah task !=0 buat koneksi database query data task loop selama masih ada data tampilkan data task end loop tutup koneksi database end jika end loadTaskDesc method loadTaskDetail jika jumlah task !=0
80
buat koneksi database query data task detail loop selama masih ada data tampilkan data ke combobox end loop tutup koneksi database end jika end loadTaskDetail method buttonClicked jika button Next diklik panggil method saveParam panggil method preloadScreen layar berikutnya panggil screen berikutnya end jika jika button Back diklik panggil screen sebelumnya end jika jika button Cancel di klik panggil screen pertama end jika end buttonClicked method jobIdChange panggil method loadTaskDetail panggil method loadTaskDesc end jobIdChange method saveParam set variable global=nilai textfield end saveParam end ViewResultScreen
class WelcomeScreen deklarasi attribute constructor panggil method super panggil method initScreen end constructor method initScreen inisialisasi layout end initScreen method buttonClicked jika button Next diklik panggil method preloadScreen layar berikutnya panggil screen berikutnya end jika jika button Exit di klik keluar dari program end jika end buttonClicked end WelcomeScreen
81
class WriteMappingScreen deklarasi attribute constructor panggil method super panggil method initScreen end constructor method initScreen inisialisasi layout end initScreen method perloadScreen bersihkan panel mapping buat koneksi database query data write mapping sesuai plugin loop selama masih ada data masukkan dalam variable vector end loop set layout panel sesuai variable vector loop sebanyak ukuran variable vector tambahkan label sesuai value variabel vector pada panel end loop masukkan panel ke dalam scrollPane tutup koneksi database keluar method dengan mengembalikan nilai true end preloadScreen method createLabel buat label baru set text label sesuai parameter yang dikirim keluar method dengan mengembalikan label end createLabel method buttonClicked jika button Next diklik panggil method preloadScreen layar berikutnya panggil screen berikutnya end jika jika button Back diklik panggil screen sebelumnya end jika jika button Cancel di klik panggil screen pertama end jika end buttonClicked end WriteMappingScreen
class WriteJobScreen deklarasi attribute constructor panggil method super
82
panggil method initScreen end constructor method initScreen inisialisasi layout end initScreen method loadData panggil method clearTextField buat koneksi database query data task loop selama masih ada data tampilkan data ke combobox end query data task detail loop selama masih ada data tampilkan data ke combobox end loop panggil method loadJobIdWrite query data plugin loop selama masih ada data tampilkan data ke comboBox end loop tutup koneksi database end loadData method perloadScreen panggil method loadData panggil method loadJobIdDet panggil method setTextField dengan parameter false keluar method dengan mengembalikan nilai true end preloadScreen method loadJobIdDet jika jumlah task !=0 tampilkan data task end jika end loadJobIdDet method loadJobIdWrite jika jumlah task reference !=0 buat koneksi database query data task reference detail loop selama masih ada data tampilkan data ke combobox end loop tutup koneksi database end jika end loadJobIdWrite method setTextField set properties textfield sesuai dengan parameter yang dikirim end setTextField method clearTextField bersihkan textfield end clearTextField method buttonClicked
83
jika button Next diklik jika method saveParam mengembalikan nilai true panggil method preloadScreen layar berikutnya panggil screen berikutnya selain itu tampilkan pesan "Data not complete" end jika end jika jika button Back diklik panggil screen sebelumnya end jika jika button Cancel di klik panggil screen pertama end jika end buttonClicked method newJobId jika task baru dipilih panggil method clearTextField panggil method setTextField dengan parameter true selain itu panggil method loadJobIdDet panggil method setTextField dengan parameter false end jika end newJobId method jobIdChange panggil method loadJobIdDet end jobIdChange method jobIdWriteChange panggil method loadJobIdWrite end jobIdWriteChange method saveParam jika jumlah task !=0 set variable global=kode task end jika set variable global=nilai textfield jika tidak ada variable global yang kosong keluar method dengan mengembalikan nilai true selain itu keluar method dengan mengembalikan nilai false end jika end saveParam end WriteJobScreen
Class ReadJobScreen deklarasi attribute constructor panggil method super panggil method initScreen end constructor
84
method initScreen inisialisasi layout end initScreen method loadData panggil method clearTextField buat koneksi database query data job loop selama masih ada data tampilkan data hasil query ke combobox end loop query data plugin loop selama masih ada data tampilkan data hasil query ke combobox end loop tutup koneksi database end loadData method preloadScreen panggil method loadData panggil method loadJobIdDet panggil method setTextField dengan paramater false keluar method dengan mengembalikan nilai true end preloadScreen method loadJobIdDet jika jumlah task != 0 tampilkan data task end jika end loadJobIdDet method setTextField set properties textfield sesuai parameter yg diterima end setTextField method clearTextField bersihkan textfield end clearTextField method buttonClicked jika button Next diklik jika method saveParam mengembalikan nilai true panggil method preloadScreen layar berikutnya panggil screen berikutnya selain itu tampilkan pesan "Data not complete" end jika end jika jika button Back diklik panggil screen sebelumnya end jika jika button Cancel di klik panggil screen pertama end jika end buttonClicked method newJobId jika task baru dipilih
85
panggil method clearTextField panggil method setTextField dengan parameter true selain itu panggil method loadJobIdDet panggil method setTextField dengan parameter false end jika end newJobId method jobIdChange panggil method loadJobIdDet end jobIdChange method saveParam jika jumlah task!=0 set variable global=kode task end jika set variable global=nilai textfield jika tidak ada variable global yang kosong keluar method dengan mengembalikan nilai true selain itu keluar method dengan mengembalikan nilai false end jika end saveParam end ReadJobScreen
class ConfigurationScreen deklarasi attribute constructor panggil method super panggil method initScreen end constructor method initScreen inisialisasi layout end initScreen method perloadScreen panggil method setCombo dengan parameter false keluar methode dengan mengembalikan nilai true end preloadScreen method setCombo set properties combobox sesuai dengan parameter yang diterima end setCombo method buttonClicked jika button Next diklik panggil method preloadScreen layar berikutnya panggil screen berikutnya end jika jika button Back diklik panggil screen sebelumnya end jika jika button Cancel di klik panggil screen pertama
86
end jika end buttonClicked method setConvert jika convert karakter dipilih panggil method setCombo dengan parameter true panggil method loadComboSource panggil method loadComboDest selain itu panggil method setCombo dengan parameter false bersihkan combobox end jika end method setConvert method loadComboSource buat koneksi database query data karakter asal sesuai plugin yang dipakai loop selama masih ada data tambahkan data ke combobox end loop tutup koneksi database end loadComboSource method loadComboDest buat koneksi database query data karakter tujuan sesuai plugin yang dipakai loop selama masih ada data tambahkan data ke combobox end loop tutup koneksi database end loadComboDest method saveParam jika include error object dipilih set variabel includeerrorobject=1 selain itu set variabel includeerrorobject=1 end jika jika convert karakter diplih set variable convert=1 jika jumlah karakter asal !=0
set variable karakter asal sesuai dengan nilai combobox karakter asal
end jika jika jumlah karakter tujuan !=0
set variable karakter tujuan sesuai dengan nilai combobox karakter tujuan
end jika selain itu set variable convert=0 set karakter convert dengan string kosong end jika end saveParam end ConfigurationScreen
87
class ConfirmReadJobScreen deklarasi attribute constructor panggil method super panggil method initScreen end constructor method initScreen inisialisasi layout end initScreen method perloadScreen set text textfield sesuai dengan data task write yang akan diproses keluar method dengan mengembalikan nilai true end preloadScreen method buttonClicked jika button Next diklik panggil method preloadScreen layar berikutnya panggil screen berikutnya end jika jika button Back diklik panggil screen sebelumnya end jika jika button Cancel di klik panggil screen pertama end jika end buttonClicked end ConfirmReadJobScreen
class ConfirmWriteJobScreen deklarasi attribute constructor panggil method super panggil method initScreen end constructor method initScreen inisialisasi layout end initScreen method perloadScreen set text textfield sesuai dengan data task write yang akan diproses keluar method dengan mengembalikan nilai true end preloadScreen method buttonClicked jika button Next diklik panggil method preloadScreen layar berikutnya panggil screen berikutnya end jika jika button Back diklik panggil screen sebelumnya end jika jika button Cancel di klik
88
panggil screen pertama end jika end buttonClicked end ConfirmWriteJobScreen
class DatabaseSchemaScreenScreen deklarasi attribute constructor panggil method super set data task dan table sesuai dengan parameter yang diterima panggil method initScreen end constructor method initScreen inisialisasi layout end initScreen method loadTable buat koneksi database query data table sesuai dengan table yang dikirim set data jtable dengan memanggil class TableModel dan mengirimkan data hasil query tutup koneksi database keluar method dengan mengembalikan jtable yang dimasukkan ke dalam jscrollpane end loadTable method loadSource buka file source script data sesuai dengan task yang dipilih set text script data pada text area tutup file script data end loadSource method loadDest buka file destination script data sesuai dengan task yang dipilih set text script data pada text area tutup file script data end loadDest method buttonClicked sembunyikan layar ini end buttonClicked class TableModel deklarasi attribute constructor ambil metadata dari resultset yang diterima set jumlah kolom data tersebut loop sebanyak jumlah kolom tambahkan nama header kolom ke varable vector end loop loop selama masih ada data deklarasi vector rowdata loop sebanyak jumlah kolom tambahkan data ke vector rowdata end loop tambahkan rowdata ke variable vector table
89
end loop end constructor method getColumnCount keluar method dengan mengembalikan jumlah kolom data end getColumnCount method getRowCount keluar method dengan mengembalikan jumlah baris data end getRowColumn method getValueAt
set variable data dengan data pada vector table pada indeks kolom dan baris yang diinginkan
keluar method dengan mengembalikan variable data end getValueAt method isCellEditable keluar method dengan mengembalikan nilai false end isCellEditable method getColumnName keluar method dengan mengembalikan nama header kolom end getColumnName end TableModle end DatabaseSchemaScreenScreen
class HelpScreen deklarasi attribute constructor panggil method super panggil method initScreen panggil method loadParam end constructor method initScreen inisialisasi layout end initScreen method preloadScreen jika method loadParam tidak mengembalikan nilai true keluar method dengan mengembalikan nilai false end jika keluar method dengan mengembalikan nilai true end preloadScreen method loadParam buka file readme set text file ke text area tutup file keluar method dengan mengembalikan nilai true end loadParam method buttonClicked sembunyikan layar ini end buttonClicked end HelpScreen
90
class ShowLogScreen deklarasi attribute constructor panggil method super panggil method initScreen end constructor method initScreen inisialisasi layout end initScreen method perloadScreen jika method loadParam mengembalikan nilai false keluar method dengan mengembalikan nilai false selain itu keluar methid engan mengembalikan nilai true end jika end preloadScreen method buttonClicked jika button Next diklik panggil method preloadScreen layar berikutnya panggil screen berikutnya end jika jika button Back diklik panggil screen sebelumnya end jika jika button Exit di klik keluar dari program end jika end buttonClicked method loadParam buat koneksi database set variable task sesuai nilai variable global panggil method loadLog tutup koneksi database keluar method dengan mengembalikan nilai true end loadParam method loadLog set variable log file name sesuai dengan nilai combo log type yang dipilih buka file sesuai log file name masukkan text ke dalam text area tutup file end loadLog end ShowLogScreen
class ShowResultScreen deklarasi attribute constructor panggil method super panggil method initScreen end constructor
91
method initScreen inisialisasi layout end initScreen method perloadScreen jika method loadParam tidak mengembalikan nilai true keluar method dengan nilai false selain itu keluar method dengan nilai true end jika end preloadScreen method buttonClicked jika button Next diklik panggil method preloadScreen layar berikutnya panggil screen berikutnya end jika jika button Back diklik panggil screen sebelumnya end jika jika button Exit di klik keluar dari program end jika end buttonClicked method addNode buat koneksi database query nama database sesuai task buat root tree dengan nilai nama datbase query nama table yang ada pada pada database sesuai task tambahkan ke tree tutup koneksi database keluar method dengan mengembalikan tree end addNode method loadParam buat jtree dengan memanggil method addNode set image pada jtree keluar method dengan mengembalikan nilai true end loadParam end ShowResultScreen
Class Logger deklarasi attribute constructor buat referensi ke file log secara fisik end constructor method setText set logToScreen = parameter text area yang dikirim end setText method write tulis parameter message ke log file dan log screen end write
92
method writeToFile tulis parameter message ke log file end writeToFile method writeToScreen tulis parameter message ke log screen end writeToScreen method closeLog tutup referensi ke file log secara fisik end closeLog end Logger
class MetaDataEngine deklarasi attribute constructor buat koneksi ke database migrasi set variable kode readwrite, task dan log sesuai parameter yang diterima end constructor method run jika mode read panggil method readDb dengan parameter data task end jika jika mode write panggil method writeDb dengan parameter data task end jika stop end run method readDb dapatkan nama classname untuk plugin yang digunakan tulis log panggil method recordDb dengan mengirimkan data task dan classname plugin deklarasi class DataEngine tulis log panggil method readTable dari class DataEngine dengan parameter false tulis log panggil method readTable dari class DataEngine dengan parameter false tulis log tutup koneksi database panggil method setBut dari class ProcessReadJobScreen keluar method dengan mengembalikan nilai true end readDb method recordDB deklarasi class sesuai dengan plugin classname yang dikirim query data task sesuai dengan kode task panggil method setParam dari class plugin dengan parameter data task query data mapping data type sesuai dengan plugin yang digunakan panggil method setMapping dari class plugin dengan parameter data mapping data type jika convert kan dilakukan
panggil method setMappingName dari class plugin dengan parameter data karakter convert
end jika
93
tulis log set vector dengan memanggil method readTable dari class plugin loop sebanyak jumlah kolom keseluruhan jika table berbeda dari table sebelumnya atau table pertama tambahkan data table ke trobject end jika tambahkan data kolom table ke table trobjectcolumn jika table merupakan table error update trobject dengan mengubah error=1 end jika end loop tulis log tulis log set vector dengan memanggil method readView dari class plugin loop sebanyak jumlah view tambahkan data view ke trobject potong deskripsi view sebanyak 250 karakter simpan setiap potongan ke table trobjectdetail sesuai urutannya jika view merupakan view error update trobject dengan mengubah error=1 end jika end loop tulis log tulis log set vector dengan memanggil method readStoredProcedure dari class plugin loop sebanyak jumlah stored procedure tambahkan data stored procedure ke trobject potong deskripsi stored procedure sebanyak 250 karakter simpan setiap potongan ke table trobjectdetail sesuai urutannya jika stored procedure merupakan stored procedure error update trobject dengan mengubah error=1 end jika end loop tulis log tulis log set vector dengan memanggil method readUserDefinedFunction dari class plugin loop sebanyak jumlah user defined funtion tambahkan data user defined function ke trobject potong deskripsi user defined function sebanyak 250 karakter simpan setiap potongan ke table trobjectdetail sesuai urutannya jika user defined function merupakan user defined function error update trobject dengan mengubah error=1 end jika end loop tulis log tulis log set vector dengan memanggil method readTrigger dari class plugin loop sebanyak jumlah trigger tambahkan data trigger ke trobject potong deskripsi trigger sebanyak 250 karakter simpan setiap potongan ke table trobjectdetail sesuai urutannya
94
jika trigger merupakan trigger error update trobject dengan mengubah error=1 end jika end loop tulis log tulis log set vector dengan memanggil method readUserAccess dari class plugin loop sebanyak jumlah user jika user berbeda dari user sebelumnya atau user pertama tambahkan data user ke trobject end jika tambahkan data hak akses user ke table trobjectcolumn end loop tulis log end recordDB method writeDB dapatkan nama classname untuk plugin yang digunakan dan task reference nya tulis log panggil method sendDb dengan mengirimkan data task dan classname plugin deklarasi class DataEngine tulis log panggil method writeTable dari class DataEngine dengan parameter false tulis log panggil method writeTable dari class DataEngine dengan parameter false tulis log tutup koneksi database panggil method setBut dari class ProcessReadJobScreen keluar method dengan mengembalikan nilai true end writeDB method sendDB deklarasi class sesuai dengan plugin classname yang dikirim query data task sesuai dengan kode task panggil method setParam dari class plugin dengan parameter data task query data mapping data type sesuai dengan plugin yang digunakan panggil method setMapping dari class plugin dengan parameter data mapping data type jika convert kan dilakukan
panggil method setMappingName dari class plugin dengan parameter data karakter convert
end jika tulis log query data table dari trobjectcolumn dengan kode task dan task detail reference masukkan data table ke dalam attribute table loop sebanyak jumlah kolom keseluruhan jika table pertama tambahkan data table ke trobject set nama table sesuai data table deklarasi data per table end jika jika nama table berbeda dari table sebelumnya
panggil method writeTable dari class plugin dengan parameter nama table dan data per table
95
bersihkan data per table tambahkan data table ke trobject end jika tambahkan data kolom table ke data per table tambahkan data kolom table ke trobjectcolumn end loop
panggil method writeTable dari class plugin dengan parameter nama table dan data table terakhir
panggil method createConstraint dari class plugin tulis log tulis log query data deskripsi view dari trobjectdetail masukkan data view ke dalam attribute view loop sebanyak jumlah view jika view pertama set string deskripsi="" set nama view sesuai dengan data view tambahkan data view ke trobject end jika jika view sama dengan nama view sebelumnya set string deskripsi dengan menambahkan text view tambahkan data deskripsi view ke trobjectdetail selain itu
panggil method writeView dari class plugin dengan parameter nama view dan string deskripsi
bersihkan string deskripsi tambahkan data view ke trobject set string deskripsi dengan menambahkan text view end jika end loop tulis log tulis log query data deskripsi stored procedure dari trobjectdetail masukkan data stored procedure ke dalam attribute stored procedure loop sebanyak jumlah stored procedure jika stored procedure pertama set string deskripsi="" set nama stored procedure sesuai dengan data stored procedure tambahkan data stored procedure ke trobject end jika jika stored procedure sama dengan nama stored procedure sebelumnya set string deskripsi dengan menambahkan text stored procedure tambahkan data deskripsi stored procedure ke trobjectdetail selain itu
panggil method writeStoredProcedure dari class plugin dengan parameter nama stored procedure dan string deskripsi
bersihkan string deskripsi tambahkan data stored procedure ke trobject set string deskripsi dengan menambahkan text stored procedure end jika end loop
96
tulis log tulis log query data deskripsi user defined function dari trobjectdetail masukkan data user defined function ke dalam attribute user defined function loop sebanyak jumlah user defined function jika user defined function pertama set string deskripsi="" set nama user defined function sesuai dengan data user defined function tambahkan data user defined function ke trobject end jika jika user defined function sama dengan nama user defined function sebelumnya set string deskripsi dengan menambahkan text user defined function tambahkan data deskripsi user defined function ke trobjectdetail selain itu
panggil method writeUserDefinedFunction dari class plugin dengan parameter nama user defined function dan string deskripsi
bersihkan string deskripsi tambahkan data user defined function ke trobject set string deskripsi dengan menambahkan text user defined function end jika end loop tulis log tulis log query data deskripsi trigger dari trobjectdetail masukkan data trigger ke dalam attribute trigger loop sebanyak jumlah trigger jika trigger pertama set string deskripsi="" set nama trigger sesuai dengan data trigger tambahkan data trigger ke trobject end jika jika trigger sama dengan nama trigger sebelumnya set string deskripsi dengan menambahkan text trigger tambahkan data deskripsi trigger ke trobjectdetail selain itu
panggil method writeTrigger dari class plugin dengan parameter nama trigger dan string deskripsi
bersihkan string deskripsi tambahkan data trigger ke trobject set string deskripsi dengan menambahkan text trigger end jika end loop tulis log tulis log query data user dari truseraccess masukkan data hak user ke attribute hak user dan data user ke attribute user panggil method createUser dari class plugin dengan parameter attribute user panggil method granUser dari class plugin dengan parameter attributte hak akses tulis log end sendDB method setChar
97
jika akan dikonvert set attribute isConvert=true end jika set karakter konvert end setChar end MetaDataEngine
Class SqlserverPlugin deklarasi attribute method closeCon tutup koneksi ke database end closeCon method openCon buka koneksi ke database end openCon method convert isError = false deklarasi parser sqlserver dan sql 99 parse meta data dengan parser sql 99 jika error parse dengan parser sqlserver jika error isError = true kembalikan meta data selain itu proses convert jika error isError = true kembalikan meta data selain itu kembalikan meta data hasil konversi end jika end jika selain itu kembalikan meta data end jika end convert method readStoredProcedure query nama stored procedure loop sebanyak nama stored procedure tulis ke log query deskripsi stored procedure panggil method convert dengan parameter deskripsi stored procedure simpan hasil query ke attribute result end loop kembalikan attribute result end readStoredProcedure method readTable query nama table
98
loop sebanyak nama table tulis ke log query nama column yang merupakan primary key simpan hasil query ke attribute primaryHash query nama column yang merupakan foreign key simpan hasil query ke attribute foreignHash query nama column loop sebanyak nama column set isNum = false jika tipe data column ada di attribute mapping mapping tipe data ke tipe data yang sesuai jika tipe data numerik set isNum = true end jika jika mapping tidak valid set errorColumn = true end jika end jika jika default column ada format nilai default end jika jika column ada di attribute primaryHash set primary = true end jika jika column ada di attribute foreignHash set foreign = true end jika simpan semu keterangan column ke attribute result end loop end loop kembalikan attribute result end readTable method readTrigger query nama table loop sebanyak nama table query nama trigger loop sebanyak nama trigger tulis ke log query deskripsi trigger panggil method convert dengan parameter deskripsi trigger simpan hasil query ke attribute result end loop end loop kembalikan attribute result end readTrigger method readUserAccess query nama table yang valid simpan hasil query ke validTable query hak akses loop sebanyak hak akses jika table tidak ada di dalam validTable
99
lanjut ke loop berikutnya end jika jika hak akses = 'insert' atau 'update' atau 'delete' atau 'select' tulis ke log simpan hasil ke attribute result end jika end loop kembalikan attribute result end readUserAccess method readUserDefinedFunction query nama user defined function loop sebanyak nama user defined function tulis ke log query deskripsi user defined function panggil method convert dengan parameter deskripsi user defined function simpan hasil query ke attribute result end loop kembalikan attribute result end readUserDefinedFunction method readView query nama view loop sebanyak nama view tulis ke log query deskripsi view panggil method convert dengan parameter deskripsi view simpan hasil query ke attribute result end loop kembalikan attribute result end view method replaceObjectName ubah karakter sesuai attribute mappingName kembalikan nama objek yang sudah di mapping end replaceObjectName method setMapping set mapping = parameter yang dikirim end setMapping method setMappingName set mappingName = parameter yang dikirim end setMappingName method setParam set semua parameter yang diperlukan end setParam end SqlserverPlugin
Class MysqlPlugin deklarasi attribute constructor inisialisasi attribute end constructor
100
method setParam set dbName = parameter job ke-0 set dbIpAddr = parameter job ke-1 set dbPort = parameter job ke-2 set dbUserName = parameter job ke-3 set dbPassword = parameter job ke-4 set log = parameter job ke-5 inisalisasi attribute panggil method loadDriver panggil method openCon membuat database baru menggunakan database baru end setParam method openCon membuat koneksi ke database end openCon method closeCon menutup koneksi ke database end closeCon method getDbName kembalikan nilai dbName end getDbName method getDbIpAddr kembalikan nilai dbIpAddr end getDbIpAddr method getDbPort kembalikan nilai dbPort end getDbPort method getDbUserName kembalikan nilai dbUserName end getDbUserName method getDbPassword kembalikan nilai dbPassword end getDbPassword method loadDriver meload driver MySQL end loadDriver method runQuery execute perintah sql dari parameter query tulis hasil ke log panggil method freeResource end runQuery method freeResource tutup resultset tutup statement end freeResource method printSQLError tampilkan pesan kesalahan
101
end printSQLError method createDatabase set sqlCommand = "CREATE DATABASE " + databaseName jalankan perintah sqlCommand end createDatabase method writeTable set jml = ukuran dari parameter columnDesc set tableName = parameter nama tabel set createSql = "CREATE TABLE " + tableName + "(" inisialisasi variabel primary key for i = 0 dan i < jml set isi= deskripsi kolom ke-i set createSql =createSql + isi ke-0 set createSql =createSql + " " + isi ke-1 jika isi ke-2 = 0 set createSql =createSql + "(" + isi ke-2 + ")" end jika jika isi ke-3 = 1 set createSql =createSql + " NOT NULL " end jika jika isi ke-4 != "" set createSql =createSql + " DEFAULT " + isi ke-4 end jika jika isi ke-5 = 1 set createSql =createSql + " UNIQUE " end jika jika isi ke-6 = 1 tambahkan isi ke-0 ke primary key end jika set fk = "" jika isi ke-7 != null dan isi ke-8 != null
set fk = "ALTER TABLE " + tableName + " ADD FOREIGN KEY (" + isi ke-0 + ") REFERENCES " + isi ke-7 + "(" + isi ke-8 + ")"
end jika jika isi ke-9 !=null set action = "NO ACTION" jika isi ke-9 =1 set action = "RESTRICT" end jika jika isi ke-9 =2 set action = "CASCADE" end jika jika isi ke-9 =3 set action = "SET NULL" end jika set fk =fk + " ON UPDATE " + action end jika jika isi ke-10 !=null
102
set action = "NO ACTION" jika isi ke-10 =1 set action = "RESTRICT" end jika jika isi ke-10 =2 set action = "CASCADE" end jika jika isi ke-10 =3 set action = "SET NULL" end jika set fk =fk + " ON DELETE " + action end jika jika fk != "" tambakan fk ke foreign key end jika set createSql =createSql + ","
end for
jika primary key > 0 set createSql =createSql + " PRIMARY KEY(" for i = 0 dan i < jumlah primary key set createSql =createSql + primary Key ke-i + ","
end for
set createSql = createSql +")" end jika set createSql += createSql +")" panggil method runQuery dengan parameter createSql end writeTable method createConstraints jika jumlah foreign key >0 for i = 0 dan i < jumlah foreign key panggil method runQuery dengan parameter foreignKey ke-i
end for
end jika end createConstraints method writeView panggil method runQuery dengan parameter viewDesc end writeView method writeTrigger panggil method runQuery dengan parameter trigerDesc end writeTrigger method writeStoredProcedure panggil method runQuery dengan parameter storedProcedureDesc end writeStoredProcedure method writeUserDefinedFunction panggil method runQuery dengan parameter userDefinedFunctionDesc end method
103
method createUser set jml = ukuran deskripsi user for i=0 dan i<jml ambil deskripsi user ke-i bentuk perintah sql create user panggil methos runQuery dengan parameter createUser end for end createUser method grantUser set jml = ukuran user akses for i = 0 dan i < jml ambil user akses ke-i set privType = "" jika isi ke-2 =1 privType = privType +"INSERT," end jika jika isi ke-3 =1 privType = privType "UPDATE," end jika jika isi ke-4 =1 privType = privType "DELETE," end jika jika isi ke-5 =1 privType = privType "SELECT," end jika bentuk perintah sql grantuser panggil method runQuery dengan parameter grantUser end for end grantUser end MysqlPlugin
Class DataEngine deklarasi attribute constructor inisialisasi attribute panggil method loadDriver dengan parameter driver cloudscape buka koneksi ke database migrasi query keterangan task ke tabel msjob databaase migrasi loop selama masih ada data simpan di deskripsi database end loop tutup konesksi ke database migrasi end constructor method loadDriver load driver sesuai parameter end loadDriver
104
method getJobId kembalikan nilai attribute jobid end getJobId method getJobSeq kembalikan nilai attribut job sequence end getJobSeq method getRefJobId kembalikan nilai attribute reference job id end getRefJobId method getRefJobSeq kembalikan nilai attribut reference job sequence end getRefJobSeq method openConDbMig buka koneksi ke database migrasi end openConDbMig method closeDbMig tutup koneksi ke database migrasi end closeDbMig method readTable panggil method openConDbMig jika error query nama objek, nama kolom dari tabel trobjectColumn yang error loop selama masih ada data simpan nama tabel dan kolom ke end loop panggil method readData dengan parameter error selain itu query nama objek, nama kolom dari tabel trobjectColumn yang tidak error loop selama masih ada data simpan nama tabel dan kolom ke end loop panggil method readData dengan parameter tidak error end jika panggil method closeDbMig end readTable method readData jika error panggil method createQuery di class DataReader untuk data error panggil method getData di class DataReader untuk data error selain itu panggil method createQuery di class DataReader untuk data tidak error panggil method getData di class DataReader untuk data tidak error end jika end readData method writeTable panggil method openConDbMig
105
jika error query nama objek, nama kolom dari tabel trobjectColumn yang error loop selama masih ada data simpan nama tabel dan kolom ke end loop panggil method writeData dengan parameter error selain itu query nama objek, nama kolom dari tabel trobjectColumn yang tidak error loop selama masih ada data simpan nama tabel dan kolom ke end loop panggil method writeData dengan parameter tidak error end jika panggil method closeDbMig end writeTable method writeData jika error panggil method getData di class DataWriter untuk data error selain itu panggil method getData di class DataWriter untuk data tidak error end jika end writeData end DataEngine
Class DataReader deklarasi attribute constructor inisialisasi attribute end constructor method createQuery ambil nama-nama tabel loop sebanyak nama-nama tabel bentuk sintaks sql SELECT untuk tiap-tiap nama tabel simpan ke dalam query end loop end createQuery method getData loop sebanyak jumlah query jalankan query select dari query di database SqlServer loop sebanyak jumlah data bentuk sintaks SQL insert into tulis sintaks SQL insert into ke dalam file dengan nama sesuai nama tabel end loop end loop end getData end DataReader
106
Class DataWriter deklarasi attribute constructor inisialisasi attribute end constructor method getData loop sebanyak jumlah tabel ambil nama file insert into untuk tabel buka file asal untuk script insert into tabel buat file tujuan untuk script insert into tabel loop selama isi file asal masih ada baca isi file asal bentuk ulang script agar tidak mengandung kolom-kolom yang error tulis ke file tujuan baca data berikutnya dari file asal end loop tutup file asal untuk script insert into tabel tutup file tujuan untuk script insert into tabel end loop end getData end DataReader