Archive for the ‘Java’ Category

Membaca System Properties dari Spring ApplicationContext

Sunday, January 15th, 2012

Apakah pernah punya pengalaman ingin membaca Java System Properties dari aplikasi yang kita buat menggunakan Spring Framework tetapi kesulitan ? Jika pernah, ternyata Spring Framework sejak versi 3 telah menambahkan fitur baru yaitu Spring Expression Language (SpEL) yang informasi-nya ternyata bisa kita baca pada halaman fitur-fitur pada SpringFramework 3.0. Dengan adanya penambahan fitur ini, kita bisa membuat sebuah konfigurasi yang benar-benar sangat flexible :)

Bagi yang belum tahu apa itu Java System Properties ini adalah merupakan sebuah kumpulan nilai konfigurasi pada sistem kita yang digunakan oleh Java. Nah sedangkan untuk mengetahui properties apa saja yang terdapat pada sistem kita, sekarang buatlah 1 buah class sederhana yang isinya kurang lebih seperti ini :

public class TestSystemProperties {
	public static void main(String[] args) {
		for (String propertyName : System.getProperties().stringPropertyNames()) {
			System.out.println("Nama Properties [" + propertyName + "] Value ["+System.getProperty(propertyName) + "]");
		}
	}
}

Simpan, lakukan proses kompilasi dan coba jalankan. Jika tidak ada pesan kesalahan, maka kita akan melihat daftar sistem properties yang kurang lebih seperti dibawah ini :

Nama Properties [java.runtime.name] Value [Java(TM) SE Runtime Environment]
Nama Properties [sun.boot.library.path] Value [/usr/lib/java/jre/lib/i386]
Nama Properties [java.vm.version] Value [20.1-b02]
Nama Properties [java.vm.vendor] Value [Sun Microsystems Inc.]
Nama Properties [java.vendor.url] Value [http://java.sun.com/]
Nama Properties [path.separator] Value [:]
Nama Properties [java.vm.name] Value [Java HotSpot(TM) Server VM]
Nama Properties [file.encoding.pkg] Value [sun.io]
Nama Properties [user.country] Value [US]
Nama Properties [sun.java.launcher] Value [SUN_STANDARD]
Nama Properties [sun.os.patch.level] Value [unknown]
Nama Properties [java.vm.specification.name] Value [Java Virtual Machine Specification]
Nama Properties [user.dir] Value [/home/martinus/Latihan/Java]
Nama Properties [java.runtime.version] Value [1.6.0_26-b03]
Nama Properties [java.awt.graphicsenv] Value [sun.awt.X11GraphicsEnvironment]
Nama Properties [java.endorsed.dirs] Value [/usr/lib/java/jre/lib/endorsed]
Nama Properties [os.arch] Value [i386]
...
...

(more…)

LiquiBase XML Generator

Wednesday, December 14th, 2011

Beberapa terakhir ini, di project yang sedang saya kerjakan ada beberapa mainan yang baru buat saya. Nah yang pertama yaitu Liquibase. Untuk yang belum tahu, Liquibase ini adalah sebuah database independent library open source (lisensi yang digunakan adalah Apache 2.0) yang dapat digunakan untuk tracking, managing dan applying perubahan terhadap database. Dan semua konfigurasi di Liquibase ini tersimpan pada sebuah file XML yang nantinya dapat disimpan kedalam version control.

Beberapa fitur dari Liquibase ini adalah :

  1. Merging changes from multiple developers
  2. Code branches
  3. Database “diff”
  4. Managing production data as well as various test datasets
  5. Generating database change documentation
  6. Cluster-safe database upgrades
  7. Automated updates or generation of SQL scripts that can be approved and applied by a DBA
  8. Generating starting change logs from existing databases

Pada tulisan ini, saya tidak akan membahas tentang bagaimana menggunakan tag-tag yang dikenali oleh Liquibase. Jika ingin tahu tag apa saja yang di dukung oleh Liquibase bisa langsung menuju ke halaman Liquibase QuickStart. Dibalik fitur-fitur keren yang dibawa oleh Liquibase, sekarang mari kita lihat bagaimana tampilan konfigurasi database yang harus kita tulis supaya bisa dikenali dan digunakan oleh Liquibase. Dibawah ini adalah contoh konfigurasi database yang harus kita tulis agar bisa digunakan oleh Liquibase :

<databasechangelog xmlns="http://www.liquibase.org/xml/ns/dbchangelog/1.0"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog/1.0 http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-1.0.xsd">
    <preconditions>
            <dbms type="mysql"/>
    </preconditions>
 
    <changeset id="1" author="nvoxland">
        <createtable tableName="person">
            <column name="id" type="int" autoIncrement="true">
                <constraints primaryKey="true" nullable="false"/>
            </column>
            <column name="firstname" type="varchar(50)"/>
            <column name="lastname" type="varchar(50)">
                <constraints nullable="false"/>
            </column>
        </createtable>
    </changeset>
    <changeset id="2" author="nvoxland">
        <comment>Add a username column so we can use "person" for authentication</comment>
        <addcolumn tableName="person">
            <column name="usernae" type="varchar(8)"/>
        </addcolumn>
    </changeset>
</databasechangelog>

Source code lengkap bisa dilihat ke http://www.liquibase.org/samples/changelogs/mysql.changelog.xml

Nah bisa dibayangkan bukan, jika misalkan kita punya tabel kurang lebih sekitar 100 buah plus dengan tambahan relasi antar tabel (kalau ini tidak mungkin tidak :D ), komen dan index kolom-nya segala? :D
(more…)

JComboBox with DataBase

Sunday, July 10th, 2011

netbeans-stamp-69-70Minggu kemarin di milis netbeans-indonesia@yahoogroups.com ada pertanyaan tentang bagaimana mengisi JComboBox dari DataBase yang kutipan pertanyaan-nya kurang lebih seperti berikut :

From: baj***@yahoo.com Fakhrurozi M Nur
To: netbeans-indonesia@yahoogroups.com netbeans-indonesia@yahoogroups.com
Date: Tue, 5 Jul 2011 00:18:56 +0700
Subject: [netbeans-indonesia] [TANYA] meload kode pada JComboBox tanpa harus me restart aplikasi

mas-mas saya mau tanya,,,
mas untuk meload noInduk_Siswa di JComboBox dari database trus Di JTextField muncul otomatis nama_Siswa gimana ya? tanpa harus me restart aplikasi,
disini bisa meload noInduk_Siswa dari database dengan JComboBox tapi untuk JTextField tidak mau muncul Di bawah ini source code :

private void comboIndukPendaftaranPopupMenuWillBecomeVisible(javax.swing.event.PopupMenuEvent evt) {
	// TODO add your handling code here:
	comboIndukPendaftaran.removeAllItems();
	Statement statement = null;
	ResultSet result = null;
	try {
		statement = DataBaseSkripsi.getConnection().createStatement();
		result = statement.executeQuery("SELECT NO_INDUKPENDAFTARAN FROM PENDAFTARAN");
		while(result.next()) {
			String kode = result.getString("NO_INDUKPENDAFTARAN");
			comboIndukPendaftaran.addItem(kode);
			txtNama.setText(result.getString("NAMA"));
		}
	} catch (SQLException e) {
	}finally{
		if(result!=null) {
			try {
				result.close();
			} catch (SQLException ex) {
			}
		}
	} 
 
	if(statement!=null) {
		try {
			statement.close();
		} catch (SQLException ex) {
		}
	}
}

Sebenarnya caranya sangat mudah sekali dan gampang, dan tulisan kali ini saya khususkan untuk menjawab pertanyaan Fakhrurozi M Nur sekalian sebagai arsip jika dikemudian hari ada pertanyaan yang serupa :) Ok masih tertarik mengikuti tutorial-nya ? Jika iya, mari kita persiapkan dulu alat-alat yang diperlukan :)

(more…)

Step By Step Building OpenJDK on Slackware

Tuesday, May 24th, 2011

OpenJDK LogoTidak seperti pada distro GNU/Linux yang lain, pada distro Slackware ternyata sangat susah mencari binary package untuk OpenJDK yang tinggal install menggunakan perintah installpkg ataupun tutorial bagaimana membuat sebuah binary packages untuk Slackware. Nah pada posting kali ini, kita akan mencoba untuk melakukan proses kompilasi source code OpenJDK langsung dari repository-nya. Dan sekedar catatan, proses yang akan dijelaskan disini hanya sampai mendapatkan JDK maupun JRE yang siap digunakan dalam bentuk direktori saja bukan dalam bentuk binary Slackware yang ber-ekstensi *.tgz atau *.txz :)

Sebelum mulai, persiapkan dahulu beberapa alat yang dibutuhkan yaitu :

  1. Apache ANT, versi Apache ANT yang dibutuhkan untuk melakukan proses kompilasi pada OpenJDK adalah versi 7, jadi pastikan versi Apache ANT yang terinstall di sistem kita mempunyai versi yang sama atau lebih tinggi. Untuk melakukan installasi Apache ANT di Slackware, downloadlah SlackBuild Script Apache ANT disini dan source Apache ANT-nya bisa didownload disini.
  2. JDK 1.6.0_25, untuk menginstall JDK kita bisa menggunakan package binary JDK bawaan Slackware yang terdapat di direktori /extra/jdk-6/. Installah dengan menggunakan perintah installpkg jdk-6u25-x86_64-1.txz agar segera dapat digunakan :)

Setelah 2 kebutuhan dasar tersebut terinstall, sekarang mari kita persiapkan konfigurasi “environment variable” yang dibutuhkan oleh OpenJDK. Beberapa konfigurasi “environment variable” yang dibutuhkan adalah (lakukan konfigurasi dibawah ini menggunakan akses super user / root) :

  1. JAVA_HOME, lakukan pengecekan apakah variabel JAVA_HOME sudah terkonfigurasi pada sistem anda atau belum dengan mengetikkan echo $JAVA_HOME dan jika benar, maka hasil perintah tersebut akan menampilkan dimana letak direktori jdk berada seperti dibawah ini :
    root@artivisi:~# echo $JAVA_HOME
    /usr/lib64/java
    root@artivisi:~#
    

    Jika perintah echo $JAVA_HOME tidak mengeluarkan apa-apa, sekarang jalankan perintah export JAVA_HOME=/usr/lib64/java dan kemudian lagi cek dengan perintah echo $JAVA_HOME.

  2. LANG, ketikkan export LANG="C" untuk mengkonfigurasi dan cek dengan mengetikkan perintah echo $LANG seperti dibawah ini :
    root@artivisi:~# export LANG="C"
    root@artivisi:~# echo $LANG
    C
    root@artivisi:~#
    
  3. ALT_BOOTDIR, untuk konfigurasi ALT_BOOTDIR ini isinya samakan dengan isi variabel $JAVA_HOME yang terdapat pada komputer / laptop kita masing-masing. Sebagai contoh di laptop yang digunakan pada tulisan kali ini, isi variabel $JAVA_HOME mengarah ke /usr/lib64/java/ maka jalankan perintah export ALT_BOOTDIR="/usr/lib64/java/" dan cek menggunakan perintah echo $ALT_BOOTDIR seperti dibawah ini :
    root@artivisi:~# export ALT_BOOTDIR="/usr/lib64/java/"
    root@artivisi:~# echo $ALT_BOOTDIR
    /usr/lib64/java/
    root@artivisi:~#
    
  4. ANT_HOME, dan langkah terakhir yaitu mengkonfigurasi variabel $ANT_HOME. Jalankan perintah export ANT_HOME=/usr/share/ant dan cek menggunakan perintah echo $ANT_HOME seperti dibawah ini :
    root@artivisi:~# export ANT_HOME=/usr/share/ant
    root@artivisi:~# echo $ANT_HOME
    /usr/share/ant
    root@artivisi:~#
    

(more…)

IM2 Android Contest dan Android Bootcamp

Saturday, February 26th, 2011

Buat “androiders” yang tinggal di sekitar Bandung, awal bulan Maret depan akan mendapat kunjungan dari team IM2 yang akan mengadakan acara Android Bootcamp dan kira-kira quota yang disediakan kurang lebih 50-70 orang loch :) Nah makanya buruan daftar…. :) Pingin tahu caranya ? Info ini bisa dilihat di halaman komunitas IM2 Android Bootcamp (Free) atau dibawah ini :

Tim IM2 akan hadir di Aula Barat ITB, 04 Maret 2011 mulai 09.00 s/d 16.00 dalam acara sosialisasi IM2 Android Contest dan Android Bootcamp. Bagi rekan-rekan yg berminat mengikuti Android Bootcamp, silakan register via email ke android@indosatm2.com. Setiap peserta diwajibkan membawa laptop.

IM2