cekStatus cekStatusComp compareData Class ProgramUtama.java

60 arraySum[i][2].equalstabel_utama.model.getValueAtj , 2 { if cekStatusComparraySum[i][0] == false { to = String arraySum[i][0]; hop1 = arraySum[i][1]; next = String arraySum[i][2]; data1[0] = to; data1[1] = hop1; data1[2] = next; tabel_compare.model = DefaultTableModel tabel_compare.jTable1.getModel; tabel_compare.model.addRowdata1; tabel_compare.jTable1.setModeltabel_compare.model; } else { for int k = 0; k tabel_compare.model.getRowCount; k++ { if arraySum[i][0].equalstabel_compare.model.getValueAt k, 0 { tabel_compare.model.setValueAtarraySum[i][1], k, 1; } } } } else { if Integer.valueOfString.valueOftabel_utama.model.get 61 ValueAtj, 1 = Integer.valueOfString.valueOfarraySum[i][1] { if cekStatusCompString tabel_utama.model.getValueAtj, 0 == false { to = String tabel_utama.model.getValueAtj, 0; hop1 = String tabel_utama.model.getValueAtj, 1; next = String tabel_utama.model.getValueAtj, 2; data1[0] = to; data1[1] = hop1; data1[2] = next; tabel_compare.model = DefaultTableModel tabel_compare.jTable1.getModel; tabel_compare.model.addRowdata1; tabel_compare.jTable1.setModeltabel_compare.model; } } else { if cekStatusComparraySum[i][0] == false { to = arraySum[i][0]; hop1 = arraySum[i][1]; next = arraySum[i][2]; data1[0] = to; 62 data1[1] = hop1; data1[2] = next; tabel_compare.model = DefaultTableModel tabel_compare.jTable1.getModel; tabel_compare.model.addRowdata1; tabel_compare.jTable1.setModeltabel_compare.model; } else { for int k = 0; k tabel_compare.model.getRowCount; k++ { if arraySum[i][0].equalstabel_compare.model.getValueAt k, 0 { tabel_compare.model.setValueAtarraySum[i][1], k, 1; tabel_compare.model.setValueAtarraySum[i][2], k,2; } } } } } } } } else { if cekStatusComparraySum[i][0] == false { if arraySum[i][0].equals- { to = String 63 arraySum[i][0]; hop1 = arraySum[i][1]; next = String arraySum[i][2]; data1[0] = to; data1[1] = String.valueOfhop1; data1[2] = next; tabel_compare.model = DefaultTableModel tabel_compare.jTable1.getModel; tabel_compare.model.addRowdata1; tabel_compare.jTable1.setModeltabel_compare.model; } } else { for int j = 0; j tabel_utama.model.getRowCount; j++ { if arraySum[i][0].equalstabel_utama.model.getValueAtj , 0 { if arraySum[i][2].equalstabel_utama.model.getValueAtj , 2 { if cekStatusComparraySum[i][0] == false { to = String arraySum[i][0]; hop1 = arraySum[i][1]; next = String arraySum[i][2]; data1[0] = to; data1[1] = 64 String.valueOfhop1; data1[2] = next; tabel_compare.model = DefaultTableModel tabel_compare.jTable1.getModel; tabel_compare.model.addRowdata1; tabel_compare.jTable1.setModeltabel_compare.model; } else { for int k = 0; k tabel_compare.model.getRowCount; k++ { if arraySum[i][0].equalstabel_compare.model.getValueAt k, 0 { tabel_compare.model.setValueAtarraySum[i][1], k, 1; } } } } else { if Integer.valueOfString.valueOftabel_utama.model.get ValueAtj, 1 = Integer.valueOfString.valueOfarraySum[i][1] { if cekStatusCompString tabel_utama.model.getValueAtj, 0 == false { to = String tabel_utama.model.getValueAtj, 0; hop1 = String tabel_utama.model.getValueAtj, 1; next = 65 String tabel_utama.model.getValueAtj, 2; data1[0] = to; data1[1] = String.valueOfhop1; data1[2] = next; tabel_compare.model = DefaultTableModel tabel_compare.jTable1.getModel; tabel_compare.model.addRowdata1; tabel_compare.jTable1.setModeltabel_compare.model; } } else { if cekStatusComparraySum[i][0] == false { to = String arraySum[i][0]; hop1 = arraySum[i][1]; next = String arraySum[i][2]; data1[0] = to; data1[1] = String.valueOfhop1; data1[2] = next; tabel_compare.model = DefaultTableModel tabel_compare.jTable1.getModel; 66 tabel_compare.model.addRowdata1; tabel_compare.jTable1.setModeltabel_compare.model; } else { for int k = 0; k tabel_compare.model.getRowCount; k++ { if arraySum[i][0].equalstabel_compare.model.getValueAt k, 0 { tabel_compare.model.setValueAtarraySum[i][1], k, 1; tabel_compare.model.setValueAtarraySum[i][2], k,2; } } } } } } } } } } } arrayCompare = new String[tabel_compare.model.getRowCount][3]; for int p = 0; p tabel_compare.model.getRowCount; p++ { String kolom1 = String tabel_compare.model.getValueAtp, 0; String kolom2 = String String.valueOftabel_compare.model.getValueAtp, 1; String kolom3 = String 67 tabel_compare.model.getValueAtp, 2; for int j = 0; j 3; j++ { if j == 0 { arrayCompare[p][0] = kolom1; } else if j == 1 { arrayCompare[p][1] = kolom2; } else if j == 2 { arrayCompare[p][2] = kolom3; } } } Terdapat 3 buah variabel lokal yang harus dibentuk pada saat method ini dijalankan yaitu to, hop1, dan next yang bertipe String dan satu variabel penanda ada dengan nilai awal sama dengan 1. Dilakukan perulangan sebanyak data sum untuk proses membandingan data. Data sum ke i mula-mula di cocokan dalam set tabel untuk mengetahui perambatan data baru. Jika dalam pengecekan pada tabel setting ada maka dilakukan proses pengecekan data sum ke [i][2] sama dengan data dalam tabel utama ke [j][2], jika sama maka mengubah nilai hopnya, hal ini menandakan bahwa menerima perubahan dari sumber informasi yang sama. Jika tidak, maka dilakukan proses perbandingan, jika Data sum ke [i][1] lebih kecil dari data dalam tabel utama maka ditambahkan pada tabel compare, jika dalam tabel compare sudah terdapat data ip yang sama , maka dilakukan perubahan nilai hop. Jika Data sum ke [i][1] lebih besar, maka nilai terkecil tetap dipertahankan pada tabel utama. tetapi jika ternyata data sum ke [i][0] tidak ada pada tabel seting, maka data tersebut merupakan perambatan 68 data baru. Data tersebut dicocokan pada tabel utama, jika data ada maka kembali dilakukan proses perbandingan, jika tidak ada maka dianggap data baru, ditambakan pada tabel compare.

4.3.6 receivedData

Method yang digunakan untuk melakukan penanganan terhadap data, kerena setiap data memiliki spesifikasi tersendiri yaitu penanganan data disesuaikan dengan tipe data tersebut. Data yang diterima berupa data String dipisahkan dengan menggunakan tokenizer untuk medapatkan data versi, tipe, ipaddr, ipdest dan hoopnya. jika menemukan data dengan tipe 2 maka data diolah oleh method Tipe2,menemukan data dengan tipe 3 maka data diolah oleh method Tipe3. public void receiveData throws UnknownHostException { if rs.k.containsdua { StringTokenizer st = new StringTokenizerrs.k; versi = st.nextToken; type = st.nextToken; ipDest = st.nextToken; ipAddr = st.nextToken; hop = st.nextToken; Tipe2; } else if rs.k.containstiga { String Array[] = new String[4]; StringTokenizer st = new StringTokenizerrs.k; for int i = 0; i 4; i++ { Array[i] = st.nextToken; } Tipe3Array[3], Array[2]; 69 } } mula-mula kelas Received Server menerima data string k, kemudian data tersebut diolah oleh method receivedData di kelas ProgramUtama. Mula-mula setiap data yang masuk dilakukan pengecekan apakah data mengandung data tipe 2 atau tipe 3. Setiap data dipisahkan oleh pemisah atau delimiter berupa spasi, sehingga memanfaatkan kelas StringTokenizer untuk memisahkan setiap isi data, yang kemudian data tersebut diolah oleh method Tipe2 untuk penanganan data lebih lanjut, begitu juga yang terjadi pada tipe 3 data yang dikirim berupa String tabel. Setiap data yang dipisahkan oleh token, dimasukkan dalam sebuah array. Data yang digunakan oleh pengolah data tipe 3 adalah data tabel pada array ke 3 dan data ip pengirim pada array ke 2.

4.3.7 setTabelUtama

Merupakan pembentuk tabel utama sebagai tabel awal. Data yang diterima dari tipe 2 di masukan dalam tabel utama sebagai tabel pembentuk awal. public void setTabelUtama { String data[] = new String[3]; ss.olahDataversi, ipAddr, ipDest, hop; data[0] = ipDest; data[1] = String.valueOfhop; data[2] = 0; if tabel_utama.model = null { if cekStatusipDest == false { 70 tabel_utama.model = DefaultTableModel tabel_utama.jTableUtama.getModel; tabel_utama.model.addRowdata; tabel_utama.jTableUtama.setModeltabel_utama.model; } } else { tabel_utama.model = DefaultTableModel tabel_utama.jTableUtama.getModel; tabel_utama.model.addRowdata; tabel_utama.jTableUtama.setModeltabel_utama.model; } String dataTable[][] = new String[tabel_utama.model.getRowCount][3]; for int i = 0; i tabel_utama.model.getRowCount; i++ { String kolom1 = String tabel_utama.model.getValueAti, 0; String kolom2 = String String.valueOftabel_utama.model.getValueAti, 1; String kolom3 = String tabel_utama.model.getValueAti, 2; for int j = 0; j 3; j++ { if j == 0 { dataTable[i][j] = kolom1; } else if j == 1 { dataTable[i][j] = kolom2; } else if j == 2 { dataTable[i][j] = kolom3; } } 71 } ss.sendTipe5RoutingTableConverter.TableToStringdata Table; } mula-mula membentuk array data dengan matrik 3x1 untuk menampung data inputan dari tipe 4. Mula-mula cek apakah tabel utama tidak sama dengan null, jika iya maka cek kembali apakah ip destinasi nya sudah ada dalam tabel, jika sudah ada maka data tidak dimasukkan, jika tidak ada maka data dimasukkan. Jika tabel utama masih berisi null , maka data dimasukan ke dalam tabel. Kemudian data dalam tabel diubah dalam bentuk matrik dua dimensi untuk keperluan pengiriman isi tabel yang ditampung dalam array dataTabel[][].

4.4 Class SendServer.java

Merupakan server pengirim yang mempunyai fungsi sebagai client side dari sistem pencarian jalur evakuasi ini. Server ini bertugas untuk mengirimkan data sesuai dengan permintaan. Struktur kelas pada SendServer.java:

4.4.1 olahDataversi,ipaddr,ipdest,hop

Merupakan method dengan parameter String versi, String ipAddr, String ipDest dan String hop yang berguna untuk pengumpul data, yang kemudian akan dikirim dalam satu string. public void olahDataString versi, String ipaddr, String ipdes, String hop { this.versi = versi;