[Visual Basic 2005] Simpan Konfigurasi Aplikasi dengan XML dan DataTable

Suatu aplikasi pasti punya sesuatu yang bisa dikonfigurasi untuk menyesuaikan dengan setting yang dibutuhkan. Contohnya, browser yang kita pakai buat browsing ini punya konfigurasi untuk mengatur proxy server, tampilan, bahasa, dan lain-lain. Biasanya, konfigurasi yang telah kita tentukan akan tersimpan, sehingga di lain waktu kita buka aplikasi tersebut, tidak perlu mensetting ulang parameter konfigurasi yang ada. Tentu saja, kita butuh suatu media untuk menyimpan parameter-parameter tersebut.

Ada banyak media untuk menyimpan parameter konfigurasi, salah satunya lewat file .INI (standard windows), plain text (dengan separator), XML, registry (windows) atau bisa juga database. Pilihan terakhir biasanya adalah cara paling buruk, karena akan membuat koneksi ke database terlalu banyak dan tidak efisien. Kecuali kalau tidak ada cara lain, misalnya pada aplikasi web-based.

Salah satu alternatif, sekaligus mengikuti trend yang lagi rame sekarang, yaitu dengan memakai XML. Sangat luas penggunaan XML ini, namun saya tidak akan membahasnya karena terlalu panjang dan keluar dari jalur yang ditentukan oleh judul dari tulisan ini ^^

Lalu apa yang akan kita bahas kali ini? Sesuai judul, kita akan membuat suatu file XML untuk menghandle konfigurasi aplikasi kita. Dengan memanfaatkan class DataTable yang ada dalam .NET, maka gampang sekali memanipulasi suatu schema XML untuk kebutuhan sederhana ini. Simak terus.

Inti dari suatu paramter konfigurasi adalah KEY dan VALUE, maksudnya, KEY adalah sebagai penanda, dipakai untuk apa parameter itu. Dan VALUE adalah nilai dari parameter tersebut. Contohnya, parameter setting untuk ukuran kertas saat akan mencetak dokumen. Panjang : 30 cm dan lebar : 20 cm. Berarti ada 2 parameter :

  • Parameter 1 :

KEY = “Panjang”

VALUE = “30”

  • Parameter 2 :

KEY : “Lebar”

VALUE : “20”

Oleh karena kita menggunakan DataTable sebagai pembantu memanipulasi XML, kita bisa mengibaratkan konfigurasi ini disimpan dalam suatu tabel mirip seperti tabel dalam database, hanya saja kita tidak akan menggunakan database beneran. Jadi ibaratnya kita punya suatu tabel dengan 2 kolom yaitu : KEY dan VALUE, dengan KEY sebagai primary key yang tidak boleh sama.

Yak langsung saja code class nya :

Public Class ConfigHelper

    Private dt As New DataTable("CONFIG")
    Private xmlSchemaFile, xmlFile As String

    Public Sub New(ByVal pXmlFile As String)
        Me.xmlSchemaFile = pXmlFile & ".sch.xml"
        Me.xmlFile = pXmlFile

        SetDataTable()
    End Sub

    Private Sub SetDataTable()
        Try
            dt.ReadXmlSchema(xmlSchemaFile)
            dt.ReadXml(xmlFile)
        Catch ex As Exception
            dt.Columns.Add("KEY", Type.GetType("System.String"))
            dt.Columns.Add("VALUE", Type.GetType("System.String"))

            dt.WriteXmlSchema(xmlSchemaFile)

            AddSetting("DefaultRoot", "")
            dt.WriteXml(xmlFile)
        End Try
    End Sub

    Public Sub AddSetting(ByVal pKey As String, ByVal pValue As String)
        Dim row As DataRow
        row = dt.NewRow
        row.Item("KEY") = pKey
        row.Item("VALUE") = pValue
        dt.Rows.Add(row)

        dt.WriteXml(xmlFile)
    End Sub

    Public Function GetSetting(ByVal pKey As String) As Object
        Try
            Return dt.Select("KEY = '" & pKey & "'")(0)(1)
        Catch ex As Exception
            Return DBNull.Value
        End Try
    End Function

    Public Sub DeleteSetting(ByVal pKey As String)
        Dim row As DataRow = dt.Select("KEY = '" & pKey & "'")(0)
        dt.Rows.Remove(row)

        dt.WriteXml(xmlFile)
    End Sub

    Public Sub ChangeSetting(ByVal pKey As String, ByVal pValue As String)
        DeleteSetting(pKey)
        AddSetting(pKey, pValue)
    End Sub
End Class

Sekarang, amati kode berikut :

 Private Sub SetDataTable()
        Try
            dt.ReadXmlSchema(xmlSchemaFile)
            dt.ReadXml(xmlFile)
        Catch ex As Exception
            dt.Columns.Add("KEY", Type.GetType("System.String"))
            dt.Columns.Add("VALUE", Type.GetType("System.String"))

            dt.WriteXmlSchema(xmlSchemaFile)

            AddSetting("DefaultRoot", "")
            dt.WriteXml(xmlFile)
        End Try
    End Sub

Inti dari class ini adalah 3 method bawaan DataTable yaitu ReadXmlSchema, ReadXml dan WriteXml. Dari namanya saja sudah kelihatan kegunaan dari method2 ini bukan? ^^

Untuk memanggil class ini, buat satu form misalnya, buat satu textbox, beri nama txtMySetting, dan satu tombol, beri nama btnOk, kemudian tulis kode ini :

Public Class Form1

    Private config As New ConfigHelper(Application.StartupPath & "\Conf.xml")

    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        If config.GetSetting("MySetting") Is DBNull.Value Then
            config.AddSetting("MySetting", "TEST")
        End If

        txtMySetting.Text = config.GetSetting("MySetting")
    End Sub

    Private Sub btnOk_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnOk.Click
        config.ChangeSetting("MySetting", txtMySetting.Text)
        MsgBox("Setting tersimpan")
    End Sub
End Class

Ketika pertama kali dijalankan, textbox akan langsung terisi string “TEST” karena memang di awal pemanggilan form secara default akan menambahkan satu key : “MySetting” dan valuenya : “TEST”

Saat anda mengetikkan sesuatu dalam textbox dan menekan tombol OK, maka setting dengan key MySetting tadi akan diubah valuenya sesuai dengan string yang ada dalam textbox. Tutup program, jalankan lagi, maka textbox akan langsung terisi sesuai dengan isian terakhir tadi. Begitulah cara code ini dijalankan. Dan, class ConfigHelper ini akan membuat 2 file, yaitu XML Schema dan XML yang lokasinya dapat anda atur sendiri pada constructornya.

Sekian saja. Gampang banget kan? ^^

I'm a wanderer of the seven kingdoms.

Tagged with: , , ,
Posted in Pemrograman

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

Welcome!
Hi! My name is Ridwan. This is my blog, I hope you enjoy it. You can also find me there:



Use Google Chrome
Community




Tugupahlawan - Komunitas Blogger Surabaya

Persatuan Pelajar Indonesia di Jepang
Archives
Follow Xrismantos on WordPress.com
%d bloggers like this: