Wilbert’s WebBlog

Java, Oracle, Serta Aktivitasku

Seminar JUG-Joglosemar

Besok Sabtu dan Minggu adalah hari yang cukup melelahkan buat saya.. Kenapa? Begini ceritanya.. Besok Sabtu saya akan jadi salah satu pembicara di seminar yang diadakan oleh Java User Group Regional Joglosemar dan membawakan presentasi tentang “Why Java”..

Dan hari minggunya, saya juga akan membawakan workshop bagaimana membuat aplikasi desktop yang mudah dengan Java.. Hmm.., pastinya capek banget ya?

Huff, dukung saya yah!! hehehe.. :D

18-July-2008 Posted by wilbertliu | Aktivitas | | 12 Comments

Object Serialization

Kalau mendengar tentang serialisasi objek, banyak orang menganggap ini susah dan lebih parahnya lagi banyak orang juga menganggap ini tidak ada gunanya.. :)

Sebenarnya, dengan Object Serialization, lahirlah banyak teknologi seperti Persistence, Remote Method Invocation, sampai ke Enterprise Java Beans.. Lalu sebenarnya ini makanan apa sih? hehehe… :p

Begini, Object Serialization itu menyimpan objek ke dalam suatu file tertentu, sehingga suatu waktu jika ingin diambil kembali state-state nya, bisa dilakukan dengan mudah.. Ya gampangnya memahami begitu deh, daripada saya kasih pengertian yang “mbulet”, nanti pada ga bisa ngerti semua..

Ok, langsung aja yah, ini code nya..


package org.wilbert;

import java.io.Serializable;

public class Book implements Serializable
{
    private static final long serialVersionUID = -5066330228510894457L;
    private String title;
    private int page;
    private String author;
    private short rating;

    public Book() {}

    public Book(String title, int page, String author, short rating)
    {
        this.title = title;
        this.page = page;
        this.author = author;
        this.rating = rating;
    }

    public String getTitle()
    {
        return title;
    }
    public void setTitle(String title)
    {
        this.title = title;
    }
    public int getPage()
    {
        return page;
    }
    public void setPage(int page)
    {
        this.page = page;
    }
    public String getAuthor()
    {
        return author;
    }
    public void setAuthor(String author)
    {
        this.author = author;
    }
    public short getRating()
    {
        return rating;
    }
    public void setRating(short rating)
    {
        this.rating = rating;
    }
}

Itu tadi source sebuah POJO saja, dan sekarang ini class main nya..


package org.wilbert.main;

import java.io.*;
import org.wilbert.*;

public class Main
{
    public static void main(String[] args)
    {
        Book[] books = new Book[3];
        books[0] = new Book("Pintar Java Vol 1", 807, "Seseorang", (short) 5);
        books[1] = new Book("Java Server Pages", 230, "Orang Indonesia", (short) 5);
        books[2] = new Book("Enterprise Java", 1250, "Belum Ada", (short) 0);

        try
        {
            //object serialization
            ObjectOutputStream objWrite =
                new ObjectOutputStream(new FileOutputStream("objFile.wil"));

            objWrite.writeObject(books);
            objWrite.close();

            //object deserialization
            ObjectInputStream objRead =
                new ObjectInputStream(new FileInputStream("objFile.wil"));

            for(Book b : (Book[]) objRead.readObject())
            {
                System.out.println("Title    : " + b.getTitle());
                System.out.println("Page    : " + b.getPage());
                System.out.println("Author    : " + b.getAuthor());
                System.out.println("Rating    : " + b.getRating());
                System.out.println();
            }
            objRead.close();
        }
        catch(Exception e)
        {
            e.printStackTrace();
        }
    }
}

Di artikel berikutnya saya akan membuat pengembangan dari Object Serialization ini, yaitu dengan ide bahwa objek-objek sebenarnya bisa diletakkan di komputer yang berbeda tetapi terhubung dengan jaringan, dan objek-objek tersebut dapat berkomunikasi..

Tunggu ya artikel berikutnya tentang Remote Method Invocation (RMI)!

Yang terakhir, jika anda ingin mengunduh project nya, saya sediakan link di sini.. Project ini dapat dibuka melalui eclipse.. Selamat mencoba!

1-July-2008 Posted by wilbertliu | Java | | 15 Comments

JSF-Facelets Project Template

Setelah menghilang tidak tahu ke mana.., akhirnya seharian ini saya betul-betul menghabiskan waktu sekitar beberapa jam untuk mengintegrasikan JSF (Mojarra) 1.2, dengan Facelets sebagai renderer view nya..

Hmm.., saya sudah bosan pakai IDE seperti NetBeans dan Eclipse, dimana saya belum menemukan (pada saat itu), plugin yang tepat untuk mengintegrasikan kedua teknologi ini.. Sebenarnya saya juga sudah membuat plugin untuk JSF-Facelets-IceFaces, tapi saya rasa ini dulu saja yang diposting.. Pada post berikutnya saya akan sertakan, sabar ya readers… :)

Ok, kalau ada pertanyaan tentang bagaimana menggunakan project template ini, bisa di bagian komentar.. :D Project template ini bisa dibuka juga di NetBeans untuk membuat sebuah project baru..

Yang paling ditunggu-tunggu, ini filenya… Mojarra and Facelets Template

Selamat mencoba!! :)

1-July-2008 Posted by wilbertliu | Facelets, JSF | | 4 Comments

Wilbert, di Mana Kau?

Halo readers semuanya! Lama sekali saya tidak menulis blog.. Hmm.., ini dikarenakan kesibukan saya yang begitu menumpuk sehingga saya harus berhenti sejenak untuk menulis di blog..

Selama ini saya tetap di Jogja, tidak pergi ke mana-mana… Tetapi 2 minggu ini saya menempuh semester pendek dimana saya harus berjuang keras membagi waktu untuk belajar dan kesibukan-kesibukan saya yang lain..

Oya, hari senin besok tanggal 23 Juni 2008 saya akan menempuh ujian akhir untuk mata kuliah teknik compiler yang saya ambil didalam semester pendek kali ini, doakan saya yah! :)

Kedepan saya berencana untuk menulis tentang apa saja yang sudah saya lakukan selama saya tidak menulis blog ini, salah satunya saya mengikuti ACM ICMP Programming Contest yang diadakan oleh Binus, dan sebentar lagi saya juga akan jadi pembicara (speaker) di JaMU JUG-Joglosemar (Java Meet Up) yang akan diselenggarakan pada bulan Juli..

Wah, sepertinya sibuk sekali yah? Doakan saja semoga saya kembali bisa menulis tentang Java, ada banyak hal yang sudah saya pelajari, hanya belum sempat untuk share kepada readers semuanya..

Sekali lagi terima kasih sudah menjadi pembaca setia blog saya..

20-June-2008 Posted by wilbertliu | Aktivitas | | 4 Comments

Logger Factory Mini Framework

Berawal dari ide gila untuk membuat sebuah framework kecil, akhirnya saya putuskan untuk membuat framework yang sebenarnya sangat kecil sekali.. Tidak tahu juga ini bisa dibilang framework atau bukan.. Kalau misal ada yang mau mengembangkan bersama, bisa kasih komentar di artikel saya ini.. :)

Langsung saja yah, framework ini digunakan untuk mencatat setiap error atau apapun juga yang berhubungan dengan konsep Logging.. Contoh, jika anda membuat aplikasi untuk mencatat dalam sehari siapa saja yang login di dalam web anda, framework ini akan mengerjakannya dengan mudah..

Tentu saja ini masih versi alpha, masih banyak yang perlu dibenahi terutama arsitekturnya..

Anda bisa mengunduh jar nya dari sini.. Lalu masukkan di CLASSPATH anda! Sesudah itu anda bisa membuat program seperti contoh yang saya buat berikut ini :


package test;

import org.wilbert.LoggerFactory;
import org.wilbert.Logger;

public class Main2
{

    public static void main(String[] args)
    {
        LoggerFactory<Integer> l = Logger.buildLogger("D:\\log.txt");
        l.storeIn(123456789);
        l.storeIn(987654321);
        l.storeIn(1);
        l.storeIn(3);
        l.commitIn();

        System.out.println("Isi Log Setelah dicommit :");
        System.out.println("=============================");
        System.out.println(l.commitOut());

        l.storeOut(3);
        l.commitIn();

        System.out.println("\nIsi Log setelah dibuang salah satu isinya :");
        System.out.println("=============================");
        System.out.println(l.commitOut());
    }

}

Hope you like it friend! :) Give me a feedback..

7-May-2008 Posted by wilbertliu | Java, My Framework | | 6 Comments

View Untuk “Latest Article”

Hari ini hanya ngoding untuk article saja.. Kan semestinya yang boleh menulis article hanya user yang sudah terdaftar.., maka itu tidak saya buat terlebih dahulu.. Yang saya buat hanyalah view untuk mengambil article dari database dan khusus article terbaru..

Berikut yang saya buat.. Pertama, saya tambahkan ini di layout.jsp


<li><html:link action="articlelatest.do">Articles</html:link></li>

Setelah itu saya membuat satu page dan menambah baris file konfigurasi tiles menjadi seperti ini :


<%--
    Document   : article_latest
    Created on : May 5, 2008, 5:59:12 PM
    Author     : Wilbert
    Page yang digunakan untuk menampilkan artikel2 terbaru
--%>

<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %>
<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %>
<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %>

<h2>Artikel Terbaru JUG Joglosemar</h2>
<logic:present name="latestArticle" scope="request">
    <logic:iterate id="artc" name="latestArticle" scope="request">
        <table>
            <tr class="rowH">
                <th><bean:write name="artc" property="title" /></th>
            </tr>
            <tr>
                <td><bean:write name="artc" property="detail" /></td>
            </tr>
            <tr>
                <td align="right">Author : <b><bean:write name="artc" property="author.realName" /></b></td>
            </tr>
        </table>
    </logic:iterate>
</logic:present>
<a href="#">Lihat Artikel Lainnya</a>

<definition name="article.latest" extends="base.definition">
        <put name="content" value="/page/article_latest.jsp" />
 </definition>

Dan yang terakhir saya membuat Action serta menambah konfigurasi struts nya


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

package org.jug.joglosemar.web.action;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.apache.struts.action.Action;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionMapping;
import org.apache.struts.action.ActionForward;
import org.jug.joglosemar.dao.hbm.ArticleDAOImpl;

/**
 *
 * @author Wilbert
 * Action untuk artikel terbaru
 */
public class ArticleLatestAction extends org.apache.struts.action.Action {

    /* forward name="success" path="" */
    private final static String SUCCESS = "success";

    /**
     * This is the action called from the Struts framework.
     * @param mapping The ActionMapping used to select this instance.
     * @param form The optional ActionForm bean for this request.
     * @param request The HTTP Request we are processing.
     * @param response The HTTP Response we are processing.
     * @throws java.lang.Exception
     * @return
     */
    public ActionForward execute(ActionMapping mapping, ActionForm  form,
            HttpServletRequest request, HttpServletResponse response)
            throws Exception {

        request.setAttribute("latestArticle", new ArticleDAOImpl().getLastArticles());
        return mapping.findForward(SUCCESS);

    }
}

<action path="/articlelatest" type="org.jug.joglosemar.web.action.ArticleLatestAction">
            <forward name="success" path="article.latest" />
 </action>

Dan sourcecode tersebut dari 2 post sebelumnya juga sudah saya commit ke googlecode.. Bagi yang mau ikutan juga bisa checkout di http://jugjoglosemar.googlecode.com

Hasil dari view ini bisa dilihat di sini

6-May-2008 Posted by wilbertliu | Java, Proyek JUG-Joglosemar, Struts | | 2 Comments

Hibernate Mapping dan Konfigurasi Untuk Entity “Article”

Malam ini saya ingin sekali menyelesaikan sedikit code yang semestinya kita kerjakan bersama.. :D Maklum, sudah tidak sabar untuk membuka netbeans.. :) Saya hanya membuat hibernate mapping nya saja, serta DAO + Implementasinya..

Selebihnya untuk Struts nya saya harus break dulu, takut nanti teman satu team saya malah tidak kebagian pekerjaan.. hehehe…

Langsung saja yah, ini belum saya commit koq, termasuk 1 post sebelumnya tentang perubahan di list jugers yang saya buat..

Pertama, saya buat hibernate mapping dan POJO nya untuk entity “Article”..

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

package org.jug.joglosemar.entity;

/**
 *
 * @author Wilbert
 * Class ini melambangkan tabel Article di database
 * yang nantinya digunakan untuk menampilkan artikel-artikel
 */
public class Article
{
    private long id;
    private String title;
    private String detail;
    private long datePost;
    private Jugers author;

    public Article() {}

    public long getId() {
        return id;
    }

    public void setId(long id) {
        this.id = id;
    }

    public String getTitle() {
        return title;
    }

    public void setTitle(String title) {
        this.title = title;
    }

    public String getDetail() {
        return detail;
    }

    public void setDetail(String detail) {
        this.detail = detail;
    }

    public long getDatePost() {
        return datePost;
    }

    public void setDatePost(long datePost) {
        this.datePost = datePost;
    }

    public Jugers getAuthor() {
        return author;
    }

    public void setAuthor(Jugers author) {
        this.author = author;
    }
}
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping>
    <class table="article" dynamic-insert="false" dynamic-update="false" mutable="true" name="org.jug.joglosemar.entity.Article" optimistic-lock="version" polymorphism="implicit" select-before-update="false">
        <id name="id" column="article_id">
            <generator class="native"/>
        </id>
        <property name="title" column="title" type="string" length="150"/>
        <property name="detail" column="detail" type="string" length="500"/>
        <property name="datePost" column="date_post" type="long"/>
        <many-to-one name="author" column="author" class="org.jug.joglosemar.entity.Jugers"/>
    </class>
</hibernate-mapping>

Lalu setelah itu, saya tambahkan mapping tersebut ke dalam file konfigurasi hibernate.., yaitu di file hibernate.cfg.xml.. Berikut isi filenya :


<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
    <session-factory name="session">
   <!-- <property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>
    <property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
    <property name="hibernate.connection.url">jdbc:mysql://localhost:3306/joglosemar</property>
    <property name="hibernate.connection.username">root</property>
    <property name="hibernate.connection.password"/>-->
   
    <!-- we use datasource -->
        <property name="hibernate.connection.datasource">java:/comp/env/jdbc/joglosemar
        </property>
        <property name="dialect">org.hibernate.dialect.MySQLDialect
        </property>
        <property name="current_session_context_class">thread
        </property>
        <property name="show_sql">true
        </property>
        <property name="hbm2ddl.auto">create
        </property>
        <mapping resource="org/jug/joglosemar/entity/Jugers.hbm.xml"/>
        <mapping resource="org/jug/joglosemar/entity/News.hbm.xml"/>
        <mapping resource="org/jug/joglosemar/entity/Event.hbm.xml"/>
        <mapping resource="org/jug/joglosemar/entity/Article.hbm.xml"/>
    </session-factory>
</hibernate-configuration>

Dan langkah yang terakhir adalah membuat DAO + Implementasinya.. Berikut ini saya akan tampilkan DAO + Implementasi yang sudah saya buat..


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

package org.jug.joglosemar.dao;

import java.util.List;
import org.jug.joglosemar.entity.Article;

/**
 *
 * @author Wilbert
 */
public interface ArticleDAO
{
    public void insert(Article artc) throws Exception;
    public void delete(Article artc) throws Exception;
    public void update(Article artc) throws Exception;
    public Article load(long id) throws Exception;
    public List<Article> getAllArticles() throws Exception;
    public List<Article> getLastArticles() throws Exception;
}

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

package org.jug.joglosemar.dao.hbm;

import java.util.ArrayList;
import java.util.List;
import org.hibernate.Session;
import org.jug.joglosemar.dao.ArticleDAO;
import org.jug.joglosemar.entity.Article;
import org.jug.joglosemar.util.HibernateUtil;

/**
 *
 * @author Wilbert
 * Implementasi DAO untuk query ke database
 */
public class ArticleDAOImpl implements ArticleDAO
{
    public void insert(Article artc) throws Exception {
        HibernateUtil.beginTransaction();
        Session session = HibernateUtil.getSession();
        try{
            session.save(artc);
        }catch(Exception ex){
            throw ex;
        }
    }

    public void delete(Article artc) throws Exception {
        HibernateUtil.beginTransaction();
        Session session = HibernateUtil.getSession();
        try{
            session.delete(artc);
        }catch(Exception ex){
            throw ex;
        }
    }

    public void update(Article artc) throws Exception {
        HibernateUtil.beginTransaction();
        Session session = HibernateUtil.getSession();
        try{
            session.update(artc);
        }catch(Exception ex){
            throw ex;
        }
    }

    public Article load(long id) throws Exception {
        HibernateUtil.beginTransaction();
        Session session = HibernateUtil.getSession();
        Article artc = null;
        try{
            artc = (Article)session.load(Article.class,id);
        }catch(Exception ex){
            throw ex;
        }
        return artc;
    }

    public List<Article> getAllArticles() throws Exception {
        HibernateUtil.beginTransaction();
        Session session = HibernateUtil.getSession();
        List<Article> list = new ArrayList<Article>();
        try{
            list = session.createQuery("from Article").list();
        }catch(Exception ex){
            throw ex;
        }
        return list;
    }

    public List<Article> getLastArticles() throws Exception {
        HibernateUtil.beginTransaction();
        Session session = HibernateUtil.getSession();
        List<Article> list = new ArrayList<Article>();
        try{
            list = session.createQuery("from Article order by date_post desc limit 0,10").list();
        }catch(Exception ex){
            throw ex;
        }
        return list;
    }
}

Selesai sudah untuk pembuatan entitynya.. Perlu diperhatikan juga (bagi yang merasa team saya), kita bermain dengan 2 framework, yaitu Struts dan Hibernate.. Maka harus dipastikan kita bisa membedakan keduanya.. Jangan dicampur adukkan..! Sekarang kita coding dulu Hibernate nya, setelah itu baru kita bermain Struts nya..

Saya rasa kalau satu per satu cara memikirkannya malah lebih bagus, karena ada kerangka berpikir yang terstruktur, yaitu Struts dan Hibernate..

Mari kita membuat Struts nya hari Selasa nanti! :)

5-May-2008 Posted by wilbertliu | Java, Proyek JUG-Joglosemar | | 4 Comments

Penambahan Fitur Kecil di Project Web Joglosemar

Sebelum commit, saya akan mencoba menerangkan sedikit apa yang sudah saya buat.. Ini hanya perubahan kecil saja, jadi singkat saja akan saya jelaskan..

Karena berhubung team untuk pembuatan modul article dan event belum bisa berkumpul, maka saya berinisiatif untuk membuatkan fitur kecil supaya paling tidak sudah ada anggota jug-joglosemar yang mengerjakan proyek ini..

Pertama, saya membuat satu file jugers_list.jsp baru yang isinya adalah sebagai berikut :

<%--
    Document   : jugers_list
    Created on : May 4, 2008, 1:16:09 PM
    Author     : Wilbert
    Page yang digunakan sebagai view untuk menampilkan list jugers
--%>

<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %>
<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %>
<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %>

<h2>Jugers List JUG Joglosemar</h2>
<logic:present name="jugersList" scope="request">
    <logic:iterate name="jugersList" id="juger" scope="request">
        <table>
            <tr class="rowH">
                <th colspan="2"><bean:write name="juger" property="id" />. <bean:write name="juger" property="realName" /></th>
            </tr>
            <tr class="rowA">
                <td rowspan="3" width="100">
                    <img src="<bean:write name='juger' property='imagePath' />" />
                </td>
                <td>
                    Universitas : <bean:write name="juger" property="universitas" />
                </td>
            </tr>
            <tr class="rowA">
                <td>
                    Email : <a href="mailto:<bean:write name='juger' property='email' />"><bean:write name="juger" property="email" /></a>
                </td>
            </tr>
            <tr class="rowA">
                <td>
                    Profile : <bean:write name="juger" property="profile" />
                </td>
            </tr>
        </table>
    </logic:iterate>
</logic:present>

Jelas setelah itu saya tambahkan konfigurasi tiles-defs.xml seperti ini :

<definition name="jugers.list" extends="base.definition">
    <put name="content" value="/page/jugers_list.jsp" />
</definition>

Supaya page yang sudah saya buat bisa diakses, maka saya sedikit mengubah file layout.jsp menjadi seperti ini :

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<%@ taglib uri="/WEB-INF/struts-tiles.tld" prefix="tiles" %>
<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %>
<html xmlns="http://www.w3.org/1999/xhtml">
    <head>
        <meta http-equiv="content-type" content="text/html; charset=utf-8" />
        <title><tiles:getAsString name="title" ignore="true"/> </title>
        <link href="./default.css" rel="stylesheet" type="text/css" />
    </head>

    <body>
        <div id="outer">
            <div id="header">
                <h1><a href="#">JUG JOGLOSEMAR</a></h1>
                <h2>Komunitas Pengguna Java di Jogja, Solo, Semarang dan sekitarnya</h2>
            </div>
            <tiles:insert attribute="header"/>
            <div id="content">
                <div id="tertiaryContent">
                    <tiles:insert attribute="login"/>
                    <h3>Jugers Database</h3>
                    <ul>
                        <li><html:link action="jugersnew.do">Registrasi</html:link></li>
                        <li><html:link action="jugerslist.do">Jugers List</html:link></li>
                    </ul>

                    <div class="xbg"></div>
                </div>
                <div id="primaryContentContainer">
                    <div id="primaryContent">
                        <tiles:insert attribute="content"/>
                    </div>
                </div>
                <div id="secondaryContent">
                    <h3>Tentang Kami</h3>
                    <ul>
                        <li><a href="#">Visi</a></li>
                        <li><a href="#">Misi</a></li>
                    </ul>

                    <h3>Dari Jugers</h3>
                    <ul>
                        <li><a href="#">News</a></li>
                        <li><a href="#">Events</a></li>
                        <li><a href="#">Articles</a></li>
                        <li><a href="#">Gallery</a></li>
                        <li><a href="#">Download</a></li>
                    </ul>

                    <h3>Partner</h3>

                </div>
                <div class="clear"></div>
            </div>
            <div id="footer">
                <p>Copyright &copy; 2008 JUG Joglosemar</p>
            </div>
        </div>
    </body>
</html>

Langkah berikutnya adalah membuat Action untuk JugersList.. Berikut ini code nya :

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

package org.jug.joglosemar.web.action;

import java.util.List;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.apache.struts.action.Action;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionMapping;
import org.apache.struts.action.ActionForward;
import org.jug.joglosemar.dao.hbm.JugersDAOImpl;

/**
 *
 * @author Wilbert
 * Action untuk menampilkan list jugers
 */
public class JugersListAction extends org.apache.struts.action.Action {

    /* forward name="success" path="" */
    private final static String SUCCESS = "success";

    /**
     * This is the action called from the Struts framework.
     * @param mapping The ActionMapping used to select this instance.
     * @param form The optional ActionForm bean for this request.
     * @param request The HTTP Request we are processing.
     * @param response The HTTP Response we are processing.
     * @throws java.lang.Exception
     * @return
     */
    public ActionForward execute(ActionMapping mapping, ActionForm  form,
            HttpServletRequest request, HttpServletResponse response)
            throws Exception {

        request.setAttribute("jugersList", new JugersDAOImpl().getAllJugers());
        return mapping.findForward(SUCCESS);
    }
}

Akhirnya file struts-config.xml tersisipi code baru seperti ini :

<action path="/jugerslist" type="org.jug.joglosemar.web.action.JugersListAction">
    <forward name="success" path="jugers.list" />
</action>

Dan perubahan yang terakhir adalah saya hanya membuat suatu direktori bernama “photos” yang ditujukan untuk menyimpan file foto dari jugers yang nantinya akan ditampilkan juga pada jugers_list..

Hasil dari fitur kecil ini bisa dilihat di gambar berikut..

Bagaimana, bisa masuk googlecode?

4-May-2008 Posted by wilbertliu | Java, Proyek JUG-Joglosemar | | 4 Comments

Menginstall Subversion

Tutorial kali ini saya buat bertepatan dengan dimulainya proyek untuk pembuatan website JUG-Joglosemar, dimana kita sudah membuat team untuk menyelesaikan beberapa modul..

Tentunya dengan bekerja team, kita harus menggunakan Subversion.. Coba baca-baca manual Subversion terlebih dahulu, karena di sini saya akan menjelaskan secara singkat saja bagaimana menginstall Subversion di lingkungan sistem operasi MS.. :)

Mengapa saya memberikan tutorial hanya untuk di lingkungan MS saja? Simpel sekali jawabannya, karena sebagian besar anggota semua menggunakan MS.., jadi saya ikut saja.. :)

Sebenarnya cukup simple, anda cukup mengunduh Subversionnya dari sini.. Simpel, tinggal klak klik saja.. Sesudah anda menginstall, coba cek lewat command prompt dengan cara seperti ini

svn –version

Kalau ada output, berarti SVN anda sudah terinstall dengan benar, sehingga anda siap untuk mengerjakan proyek dengan team anda.. Sudah jelas kan?

Integrasinya dengan netbeans, cukup lakukan langkah sebagai berikut :

  1. Jalankan Netbeans
  2. Pilih Menu Bar “Versioning”
  3. Pilih Subversion, lalu Checkout
  4. Isi semua informasi yang diminta

Sebenarnya sangat mudah untuk menginstall Subversion.., apalagi di lingkungan MS.. Selamat mencoba dan selamat mengerjakan proyek..

Hehe, proyek saya juga sudah dimulai nih bersama teman-teman JUG!! Semangat!!

3-May-2008 Posted by wilbertliu | Proyek JUG-Joglosemar, Subversion | | 14 Comments

Parameter Array Sejak Java SE 5

Menanggapi komentar-komentar dari “Bunga”, saya terkesan dengan kata-katanya.. Ia menyebutkan bahwa saya (dan termasuk kita) jangan bosan dengan hal-hal yang mendasar di dalam pemrograman Java khususnya..

Tentu itu mengundang saya juga untuk menulis sesuatu yang berbau dasar, tapi mungkin belum semua orang tahu tentang hal tersebut.. Hari ini sebelum saya tidur, saya mau menulis terlebih dahulu tentang Array Parameter..

“Maksudnya Apa Sih Mas?? Saya tidak mengerti…”

Begini ceritanya, kalau kita ingin menulis sebuah parameter di dalam method (parameter formal), biasanya kita akan mencantumkan tipe data lalu diikuti dengan nama variabelnya.. Nah, kalau kita ingin mencantumkan array? Pasti tanda yang tidak mungkin ketinggalan adalah kurung siku ([])..

Sejak Java SE 5.0, untuk menuliskan / mencantumkan paramter yang berupa array, kita tidak perlu lagi menulis dengan cara mengikutsertakan kurung siku tersebut..

Lebih detailnya silahkan lihat kode program di bawah ini.. Jangan kaget, mungkin ini style baru bagi anda, tapi saya sudah membiasakan dengan penulisan seperti ini.. :D Atau mungkin tulisan saya ini sudah lama anda ketahui? Ya maklum saja, saya sedang ingin menulis yang dasar-dasar menanggapi komentar “Bunga”..


public class Coba
{
    public static void main(String... args) //bisa dibuat seperti ini karena array
    {
        Coba c = new Coba();
        c.testNilai(10, 11, 2, 3, 54, 3);
        System.out.println("\n");
        for(int a : c.cobaAh())
            System.out.println("Dari coba AH " + a);
    }

    public void testNilai(int ... nilai) //parameter bisa menggunakan int... dan direpresentasikan sebagai array
    {
        int i = 1;
        for(int a : nilai)
            System.out.println("Nilai ke - " + (i++) + " : " + a);
    }

    public int[] cobaAh() //return type tidak bisa menggunakan int...
    {
        int[] a = {1,2,3,4,5};
        return a;
    }
}

Dan perlu diperhatikan bahwa penulisan seperti ini tidak berlaku pada return type yang berupa void atau tidak. Anda tidak bisa mereturn array dengan cara penulisan seperti di atas..

Dalam waktu dekat juga mungkin saya akan menulis tentang konsep boxing dan unboxing, serta autoboxing.., dan macam-macam hal dasar lainnya.. Kalau dirasa banyak permintaan ya saya akan menulis hal tersebut.. :D

3-May-2008 Posted by wilbertliu | Java | | 2 Comments