Archive for September, 2009

DBF2MySQL with OpenOffice Base

Monday, September 14th, 2009

Pernah merasa pusing bagaimana memindahkan database dari tabel yang bertipe DBF (biasanya sih ini dari aplikasi yang berbasis Foxpro 2.6 dan Clipper yang jalan di DOS) ke MySQL ? Kalau pernah, berarti sama dengan saya ketika dulu melakukan proses porting aplikasi dari Foxpro 2.6 + Clipper + DBF + Windows ke Java Swing + MySQL + GNU/Linux :)

Mungkin banyak aplikasi lain yang mampu melakukan proses porting dari DBF ke MySQL selain menggunakan OpenOffice, tapi setahu saya hanya OpenOffice-lah aplikasi yang dapat melakukan proses porting dari DBF ke MySQL yang sifatnya OpenSource dan jalan di Sistem Operasi GNU/Linux (Maklum dirumah saya ga punya Sistem Operasi Windows, jadi memilih aplikasi yang jalan di GNU/Linux adalah pilihan nomor satu saya).

Sebelum mulai melakukan proses migrasi dari DBF ke MySQL menggunakan OpenOffice, tambahkanlah dahulu MySQL JDBC Driver pada classpath OpenOffice yang akan digunakan. Sedangkan langkah-langkah untuk menambahkan MySQL JDBC Driver ke dalam OpenOffice bisa dibaca pada tulisan saya di sini. Fungsi dari penambahan MySQL JDBC Driver ini adalah agar kita dapat mengakses database yang terdapat pada MySQL dari OpenOffice, nah jika kita sudah menambahkan MySQL JDBC Driver pada OpenOffice sekarang mari kita mulai proses migrasi data dari DBF ke MySQL.

Langkah pertama yang harus kita lakukan yaitu copy lah seluruh file yang ber-ekstensi DBF ke sebuah direktori khusus seperti pada gambar dibawah ini :
DBF2MYSQL_1

Sekarang jalankan-lah OpenOffice Base kemudian pada jendela Database Wizard pilihlah opsi Connect to an existing database dan pilihlah dBase seperti gambar dibawah ini kemudian tekanlah tombol Next :
DBF2MYSQL_2
(more…)

Adding License in NetBeans IDE

Saturday, September 5th, 2009

Mau bikin project opensource ? Kalau iya, kita harus pikirkan juga donk lisensi untuk source code yang ingin kita opensource-kan :) Buat teman-teman pengguna NetBeans IDE, pasti pernah donk melihat potongan souce code seperti dibawah ini :

1
2
3
4
/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

Yups.. tampilan kode diatas adalah tampilan standart dari NetBeans IDE setiap kita membuat sebuah file Java baru, nah bagaimana jika kita ingin menambahkan lisensi untuk source code kita menjadi seperti dibawah ini :

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
/*
 * Copyright (c) 2009, Martinus Ady H <mrt .itnewbies@gmail.com>
 * All rights reserved.
 *
 * Redistribution and use in source and binary forms, with or without
 * modification, are permitted provided that the following conditions
 * are met:
 *
 * o Redistributions of source code must retain the above copyright notice,
 *   this list of conditions and the following disclaimer.
 * o Redistributions in binary form must reproduce the above copyright
 *   notice, this list of conditions and the following disclaimer in the
 *   documentation and/or other materials provided with the distribution.
 * o Neither the name of the <organization> nor the names of its contributors
 *   may be used to endorse or promote products derived from this software
 *   without specific prior written permission.
 *
 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
 * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
 * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
 * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
 * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
 * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
 * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
 * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
 * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
 * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
 * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 */
</organization></mrt>

Mau pastein lisensi-nya satu persatu diseluruh source code ? Tentunya pekerjaan yang sangat melelahkan donk :D Nah biar cepat, simpan dan modifikasi-lah Template lisensi BSD dibawah ini ke dalam komputer anda :

< #if licenseFirst??>
${licenseFirst}
 
${licensePrefix} Copyright (c) ${date?date?string("yyyy")} Martinus Ady H <mrt .itnewbies@gmail.com>.
${licensePrefix} All rights reserved.
${licensePrefix}
${licensePrefix} Redistribution and use in source and binary forms, with or without
${licensePrefix} modification, are permitted provided that the following conditions
${licensePrefix} are met:
${licensePrefix}
${licensePrefix} o Redistributions of source code must retain the above copyright notice,
${licensePrefix}   this list of conditions and the following disclaimer.
${licensePrefix} o Redistributions in binary form must reproduce the above copyright
${licensePrefix}   notice, this list of conditions and the following disclaimer in the
${licensePrefix}   documentation and/or other materials provided with the distribution.
${licensePrefix} o Neither the name of the <organization> nor the names of its contributors
${licensePrefix}   may be used to endorse or promote products derived from this software
${licensePrefix}   without specific prior written permission.
${licensePrefix}
${licensePrefix} THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
${licensePrefix} "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
${licensePrefix} TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
${licensePrefix} PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
${licensePrefix} CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
${licensePrefix} EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
${licensePrefix} PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
${licensePrefix} OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
${licensePrefix} WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
${licensePrefix} OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
${licensePrefix} ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
${licensePrefix}
${licensePrefix} ${name}.java
${licensePrefix}
${licensePrefix} Created on ${date}, ${time}
< #if licenseLast??>
${licenseLast}
 
</organization></mrt>

(more…)

Playing with JTable and JCheckBox

Friday, September 4th, 2009

Sudah pernah mencoba menampilkan JCheckBox didalam JTable ? Bagi sebagian teman-teman mungkin langsung berkata “Itu kan gampang, tinggal tambahkan 1 kolom dengan tipe data Boolean kita sudah dapat menampilkan JCheckBox didalam JTable, yups memang benar dan jawaban teman-teman sudah terdapat pada tutorial Java Swing :) Ok, sekarang mari kita bahas satu persatu bagaimana cara menampilkan JCheckBox didalam JTable. Untuk menampilkan JCheckBox didalam JTable, biasanya saya akan membuat sebuah Domain Class yang mempunyai tipe data boolean sesuai kata teman-teman seperti dibawah ini :

1
2
3
4
5
6
7
8
9
public class Domain {
 
    private boolean data1;
    private boolean data2;
    private boolean data3;
    private boolean data4;
 
    // Automatic Generate Getter and Setter
}

Nah setelah selesai membuat Domain seperti diatas, sekarang mari kita bikinkan tabel modelnya seperti dibawah ini :

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
public class TableModelStandart extends AbstractTableModel {
 
    private final String[] HEADER = new String[]{"KOLOM1", "KOLOM2", "KOLOM3", "KOLOM4"};
    private List<domain> listDomain;
 
    public TableModelStandart(List</domain><domain> listDomain) {
        this.listDomain = listDomain;
    }
 
    public int getRowCount() {
        return listDomain.size();
    }
 
    public int getColumnCount() {
        return HEADER.length;
    }
 
    @Override
    public String getColumnName(int column) {
        return HEADER[column];
    }
 
    @Override
    public Class< ?> getColumnClass(int columnIndex) {
        Class tipe = super.getColumnClass(columnIndex);
        if (columnIndex == 0) {
            tipe = Boolean.class;
        } else if (columnIndex == 1) {
            tipe = Boolean.class;
        } else if (columnIndex == 2) {
            tipe = Boolean.class;
        } else if (columnIndex == 3) {
            tipe = Boolean.class;
        }
 
        return tipe;
    }
 
    @Override
    public boolean isCellEditable(int rowIndex, int columnIndex) {
        if (columnIndex == 0) {
            return true;
        } else if (columnIndex == 1) {
            return true;
        } else if (columnIndex == 2) {
            return true;
        } else if (columnIndex == 3) {
            return true;
        } else {
            return false;
        }
    }
 
    public Object getValueAt(int rowIndex, int columnIndex) {
        Domain domain = listDomain.get(rowIndex);
        switch (columnIndex) {
            case 0:
                return domain.isData1();
            case 1:
                return domain.isData2();
            case 2:
                return domain.isData3();
            case 3:
                return domain.isData4();
            default:
                return "";
        }
    }
 
    @Override
    public void setValueAt(Object aValue, int rowIndex, int columnIndex) {
        Domain model = listDomain.get(rowIndex);
        if (columnIndex == 0 && aValue instanceof Boolean) {
            model.setData1((Boolean) aValue);
        } else if (columnIndex == 1 && aValue instanceof Boolean) {
            model.setData2((Boolean) aValue);
        } else if (columnIndex == 2 && aValue instanceof Boolean) {
            model.setData3((Boolean) aValue);
        } else if (columnIndex == 3 && aValue instanceof Boolean) {
            model.setData4((Boolean) aValue);
        }
    }
}
</domain>

(more…)

Find CPU Architecture on GNU/Linux

Friday, September 4th, 2009

Gara-gara kemarin ada yang tanya tentang CPU Architecture di milis id-slackware@googlegroups.com akhirnya iseng-iseng deh coba-coba lihat spesifikasi laptop yang saya pakai masih 32 bit atau sudah 64 bit :) Ada beberapa cara yang saya tahu untuk mengetahui informasi tentang CPU di GNU/Linux, tapi jangan tanya apa artinya loh malu karena saya cuma tahu gimana cara lihatnya aja malu
(more…)