Rabu, 16 Mei 2012

SQLite Pada Android

Pada tutorial kali ini kita akan membahas tentang management database menggunakan SQLite pada Android, SQLite bukanlah sebuah sistem yang mandiri yang berkomunikasi dengan sebuah program, melainkan sebagai bagian integral dari sebuah program secara keseluruhan. Sehingga protokol komunikasi utama yang digunakan adalah melalui pemanggilan API secara langsung melalui bahasa pemrograman. Referansi SQLite http://id.wikipedia.org/wiki/SQLite

Beruntung android sudah meyertakan API SQLite jadi kita tidak perlu mendownload API nya lagi, lets we begin.

Project Struktur

Pertama kita buat databasenya beri nama DatabaseHelper.java
package com.samz.sqlite;

import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;

public class DatabaseHelper extends SQLiteOpenHelper {

 public static final String DATABASE_NAME = "employee_directory";
 private final static String TABLES[] = { "id","name" };

 public DatabaseHelper(Context context) {
  super(context, DATABASE_NAME, null, 1);
 }

 @Override
 public void onCreate(SQLiteDatabase db) {

 }

 public void createEmployeeTable(SQLiteDatabase db) {
  db.execSQL("CREATE TABLE if not exists employee (id INTEGER PRIMARY KEY AUTOINCREMENT, name TEXT);");
 }

 public void insertData(SQLiteDatabase db, String name) {
  ContentValues contentValues = new ContentValues();
  contentValues.put("Name", name);
  db.insert("employee", null, contentValues);
 }

 public void editData(SQLiteDatabase db, String name) {
  ContentValues contentValues = new ContentValues();
  contentValues.put("name", name);
  db.update("employee", contentValues, "name =" + name, null);
 }

 public void deleteData(SQLiteDatabase db, String name) {
  db.delete("employee", "name =" + name, null);
 }

 public Cursor getAll(SQLiteDatabase db) {
  return db.query("employee", TABLES, null, null, null, null, null);
 }

 @Override
 public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
  //db.execSQL("DROP TABLE IF EXISTS employee");
  //onCreate(db);
 }

}

Lalu kita buat UI-nya, disini kita masukan TextBox, Button simpan dan ListView (untuk menampilkan data)
modifikasi main.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical" >

    <LinearLayout
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal" >
  <TextView 
      android:id="@+id/idText"
      android:layout_width="wrap_content"
         android:layout_height="wrap_content"
         android:text="test"
         android:visibility="gone"/>
        <EditText
            android:id="@+id/nameText"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:hint="@string/name" >
        </EditText>
    </LinearLayout>
 
    <LinearLayout
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal" >
    <Button
        android:id="@+id/btnSave"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/save" >
    </Button>
    <Button
        android:id="@+id/btnUpdate"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/update" >
    </Button>
    </LinearLayout>

    <ListView
        android:id="@android:id/list"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent" >
    </ListView>

</LinearLayout>
Pada code diatas terlihat android:text="@string/save ini mangacu pada file strings.xml untuk mencegah hardcode, file srings.xml


    Nama
    Simpan
    SQLite Test


Lalu disinilah logic nya
ListViewActivity.java
package com.samz.sqlite;

import java.util.ArrayList;
import java.util.Collections;
import java.util.List;

import android.app.ListActivity;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ListAdapter;
import android.widget.Toast;

public class ListViewActivity extends ListActivity {

 protected EditText nameText;
 protected Button btnSave;
 protected SQLiteDatabase db;
 protected DatabaseHelper dbHelper;
 protected ListAdapter adapter;

 /** Called when the activity is first created. */
 @Override
 public void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  setContentView(R.layout.main);

  dbHelper = new DatabaseHelper(this);
  db = dbHelper.getWritableDatabase();
  dbHelper.createEmployeeTable(db);

  nameText = (EditText) findViewById(R.id.nameText);
  btnSave = (Button) findViewById(R.id.btnSave);

  getAll();
  buttonEvenListener();

 }

 private void buttonEvenListener() {
  btnSave.setOnClickListener(new OnClickListener() {

   @Override
   public void onClick(View v) {
    // TODO Auto-generated method stub
    String names = nameText.getText().toString().trim();
    dbHelper.insertData(db, names);
    Toast.makeText(ListViewActivity.this, "Success",
      Toast.LENGTH_SHORT).show();
    nameText.setText("");
    getAll();
   }
  });
 }

 private void getAll() {
  ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,
    android.R.layout.simple_list_item_1, getAllDatas());
  setListAdapter(adapter);
 }

 public List<String> getAllDatas() {
  List<String> names = new ArrayList<String>();
  Cursor cursor = dbHelper.getAll(db);

  cursor.moveToFirst();
  while (!cursor.isAfterLast()) {
   String name = cursor.getString(1);
   names.add(name);
   cursor.moveToNext();
  }
  // close cursor
  cursor.close();
  Collections.sort(names);
  return names;
 }

}

Run, Run As "Android Application", lalu akan muncul sebagai berikut

Untuk dapat melihat data yang sudah tersimpan, kita dapat melihatnya di SQLite Manager ini digunakan pada browser firefox. Link untuk adds on SQLite Manager mozilla disini atau dapat dibrowse langsung dari mozilla. Setelah selesai di install untuk membuka aplikasinya pilih di mozilla menu Tools > SQLite Manager, akan tampil sbb

Bagaimana cara mengunakannya? pertama Pull database terlebih dahulu Open perspective di eclipse lalu Window > Show View > Other > Android lalu pilih File Explorer, database tersimpan di folder /data/data/your.app.package/databases/your-db-name lalu klik dipojok kanan atas Pull a file from a device lalu Save.
Selesai disave pada SQLite Manager pilih Database > Connect Database pilih file yang di Pull
Selamat Mencoba semoga bermanfaat
Download Source Code disini
Kunjungi situs kami di PT Samz Solution

Kamis, 10 Mei 2012

Form Pada Android

Pada tutorial kali ini akan membuat form atau UI(User Interface) di android, mulai dari TextView, EditText, Button, Spinner(DropDown List), dll


Pada tutorial ini menggunakan Eclipse 3.7 dan Android 2.2
Buat project android beri nama UIAndroid, untuk mengetahui bagaimana membuat project android ada pada tutorial sebelumnya (Memulai Project Android).

Buka main.xml dan modifikasi menjadi sebagai berikut
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical" >

    <TextView
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:text="@string/textView" >
    </TextView>

    <Button
        android:id="@+id/button"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:onClick="onButtonClicked"
        android:padding="10dp"
        android:text="@string/button" >
    </Button>

    <EditText
        android:id="@+id/editText"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:hint="@string/editText" >
    </EditText>

    <EditText
        android:id="@+id/passwordText"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:inputType="textPassword" 
        android:hint="@string/password">
    </EditText>
    
    <Spinner
        android:id="@+id/spinner"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content">
    </Spinner>

    <CheckBox
        android:id="@+id/checkBox"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:onClick="onCheckboxClicked"
        android:text="@string/checkItOut" >
    </CheckBox>

    <RadioGroup
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:orientation="vertical" >

        <RadioButton
            android:id="@+id/radioRed"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:onClick="onRadioButtonClicked"
            android:text="@string/red" >
        </RadioButton>

        <RadioButton
            android:id="@+id/radioBlue"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:onClick="onRadioButtonClicked"
            android:text="@string/red" >
        </RadioButton>
    </RadioGroup>

    <ToggleButton
        android:id="@+id/toggleButton"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:onClick="onToggleClicked"
        android:textOff="@string/vibrateOff"
        android:textOn="@string/vibrateOn" >
    </ToggleButton>

</LinearLayout>

Pada code diatas terdapat fill_parent dan wrap_content pada component attribute layout_width atau layout_height.
fill_parent - menjelaskan bahwa component ini akan mengikuti panjang dari parentnya atau mengisi ruang yang tersisa dari si parent
wrap_content - menjelaskan bahwa component yang akan ditampilkan berdasarkan besaran dari dirinya sendiri misalkan dari isi text
android:hint="@string/editText" Text hint pada Edit text, isinya mengacu pada file strings.xml pada folder res/values

Secara umum, menentukan lebar dan tinggi tata letak menggunakan unit seperti piksel tidak dianjurkan. Sebaliknya, menggunakan pengukuran relatif seperti density-independent pixel units (dp), wrap_content, atau fill_parent, adalah yang lebih baik, karena membantu memastikan bahwa aplikasi akan ditampilkan dengan benar di berbagai ukuran layar perangkat

Text View
UIAndroid
Button
Edit Text
Password
Check it out
Merah
Biru
Vibrate off
Vibrate on    

Dan sekarang pada bagian javanya, buka file UIAndroidActivity.java modifikasi filenya
package com.samz.uiandroid;

import java.util.ArrayList;
import java.util.List;

import android.app.Activity;
import android.os.Bundle;
import android.view.KeyEvent;
import android.view.View;
import android.view.View.OnKeyListener;
import android.widget.ArrayAdapter;
import android.widget.CheckBox;
import android.widget.EditText;
import android.widget.RadioButton;
import android.widget.Spinner;
import android.widget.Toast;
import android.widget.ToggleButton;

public class UIAndroidActivity extends Activity {

 private Spinner spinner;
 private EditText editText;

 /** Called when the activity is first created. */
 @Override
 public void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  setContentView(R.layout.main);

  editTextAction();
  addItemsOnSpinner();
 }

 // button click
 public void onButtonClicked(View v) {
  Toast.makeText(UIAndroidActivity.this, "Button clicked",
    Toast.LENGTH_SHORT).show();
 }

 // edit text
 public void editTextAction() {
  editText = (EditText) findViewById(R.id.editText);
  editText.setOnKeyListener(new OnKeyListener() {
   public boolean onKey(View v, int keyCode, KeyEvent event) {
    // TODO Auto-generated method stub
    // Aksi jika tekan enter
    if ((event.getAction() == KeyEvent.ACTION_DOWN)
      && ((keyCode == KeyEvent.KEYCODE_ENTER))) {
     Toast.makeText(UIAndroidActivity.this, editText.getText(),
       Toast.LENGTH_SHORT).show();
     return true;
    }
    return false;
   }
  });

 }

 // Tambah item pada spinner
 public void addItemsOnSpinner() {
  spinner = (Spinner) findViewById(R.id.spinner);
  List<String> list = new ArrayList<String>();
  list.add("list 1");
  list.add("list 2");
  list.add("list 3");
  ArrayAdapter<String> dataAdapter = new ArrayAdapter<String>(this,
    android.R.layout.simple_spinner_item, list);
  dataAdapter
    .setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
  spinner.setAdapter(dataAdapter);
 }

 // check box click
 public void onCheckboxClicked(View v) {
  if (((CheckBox) v).isChecked()) {
   Toast.makeText(UIAndroidActivity.this, "Selected",
     Toast.LENGTH_SHORT).show();
  } else {
   Toast.makeText(UIAndroidActivity.this, "Not selected",
     Toast.LENGTH_SHORT).show();
  }
 }

 // radio button click
 public void onRadioButtonClicked(View v) {
  RadioButton rb = (RadioButton) v;
  Toast.makeText(UIAndroidActivity.this, rb.getText(), Toast.LENGTH_SHORT)
    .show();
 }

 // toggle click
 public void onToggleClicked(View v) {
  if (((ToggleButton) v).isChecked()) {
   Toast.makeText(UIAndroidActivity.this, "Toggle on",
     Toast.LENGTH_SHORT).show();
  } else {
   Toast.makeText(UIAndroidActivity.this, "Toggle off",
     Toast.LENGTH_SHORT).show();
  }
 }

}
Selamat mencoba semoga bermanfaat.
Download source code disini

Reference
http://developer.android.com/resources/tutorials/views/hello-formstuff.html

Kunjungi situs kami di PT Samz Solution

Selasa, 08 Mei 2012

Memulai Project Android

Pada tutorial ini akan membahas bagaimana memulai untuk mendevelop aplikasi android, kita tidak memerlukan handphone android untuk mendevelop aplikasi ini. Tutorial ini akan memabahas pertama kali membuat project dengan Android.

Untuk memulai aplikasi ini eclipse harus sudah terinstal Android, jika belum maka ikuti cara untuk menginstal disini

Create Android Virtual Device (AVD)
Konfigurasi AVD di eclipse Klik Window -> AVD Manager


Create Project Android

Setelah next maka akan menampilkan project struktur sbb :

Run Project, Run As Android Application

main.xml


    



Terlihat code android:text="@string/hello" ini me-refer kepada file strings.xml dimana file strings.xml tampaknya berfungsi seperti file .properties dimana semua string didaftarkan disini

strings.xml


    Hallo Androiiiiiiid
    HelloWorld



HelloWorldActivity.java
package com.example.helloandroid;

import android.app.Activity;
import android.os.Bundle;

public class HelloAndroid extends Activity {
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
    }
}
kita dapat memodifikasi file ini, setContentView(R.layout.main) pada file diatas mengacu pada file main.xml, modifikasi file HelloWorldActivity.java menjadi
package com.samz.helloandroid;

import android.app.Activity;
import android.os.Bundle;
import android.widget.TextView;

public class HelloWorldActivity extends Activity {
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        TextView textView = new TextView(this);
        textView.setText("Hallo ini project pertama android");
        setContentView(textView);
    }
}
Jalankan program klik kanan project Run As "Android Application", jika berhasil akan menampilkan sebagai berikut


Kunjungi situs kami di PT Samz Solution

Senin, 07 Mei 2012

Design Pattern

Pada kali ini kita akan membahas tentang design pattern, dimana dalam merancang sebuah aplikasi harus ditentukan dahulu design apa yang akan kita gunakan agar nantinya dapat memudahkan dalam proses perbaikan dan pengembangan,

Ada beberapa design pattern diantaranya MVC Pattern, Singleton Pattern, Prototype Pattern, Abstract Factory Pattern, Builder Pattern.

1. MVC (Model View Controller) Pattern
MVC pertama sekali dipublikasikan oleh peneliti Xeroc Parac yang bekerja dalam pembuatan bahasa pemrograman smalltalk tahun 1970-1980. Design ini adalah salah satu design pattern yang sering kita dengar dan bicarakan dan biasanya design ini banyak diimplementasikan dalam framework berbasis web. MVC adalah design dasar yang memisahkan ketiga bagian program menjadi tiga layer, yaitu :
1. Model, bagian yang memodelkan problem domain
2. View, bagian tampilan(jsp, jsf, zkoss) bagian yang berinteraksi dengan user, mengandung keseluruhan detail dari implementasi user interface
3. Controller, bagian ini menyediakan detail alur program dan transisi layer, dan juga bertanggungjawab akan penampungan events yang dibuat oleh user dari View dan melakukan update terhadap komponen Model menggunakan data yang dimasukkan oleh user.

2. Singleton Pattern
Singleton adalah pattern yang membatasi instance sebuah kelas menjadi satu object. Terkadang suatu sistem akan berjalan lebih efisien jika hanya ada satu atau beberapa object saja. Singleton pattern diimplementasikan dengan membuat class dengan method yang membuat instance class yang baru jika instance belum ada maka akan diarahkan ke object yang telah ada. Untuk mencegah object tidak di instance kan berkali – kali maka constructor dirubah menjadi private atau protected.
Contoh :
public class SingletonPattern {
 private static SingletonPattern singletonPattern;

 private SingletonPattern() {
 }

 public static SingletonPattern getInstance() {
  if (singletonPattern == null) {
   singletonPattern = new SingletonPattern();
  }
  return singletonPattern;
 }
}
Penggunaan
public class Test {
 public static void main(String args[]) {
  SingletonPattern s = SingletonPattern.getInstance();
 }
}

Kunjungi situs kami di PT Samz Solution

Jumat, 04 Mei 2012

Spring Hibernate dan JSF


Pada tutorial kali ini kita akan membuat aplikasi berbasis web dengan Spring-Hibernate dengan menggunakan FrontEnd JSF 2.0 menggunakan Primeface, dan pada tutorial kali ini kita akan menggunakan Maven, sebelum memulai tutorial ada baiknya mempersiapkan tools dan teknologi yang akan digunakan

Tools dan Teknologi yang digunakan :
1. Eclipse 3.7 (Indigo)
2. Apache Tomcat 6 atau 7
3. PostgreSQL 9.0 (boleh diganti dengan database lain sesuai keinginan)
4. Hibernate 3.2.1
5. Spring 3.0.5
6. Apache Maven 2.x


Membuat Table Customer
CREATE TABLE customer
(
  customer_id bigint NOT NULL,
  customer_name character varying(50),
  address character varying(50),
  created_date timestamp without time zone,
  created_by character varying(24),
  last_updated timestamp without time zone,
  last_updated_by character varying(24),
  deleted smallint,
  CONSTRAINT pk_customer PRIMARY KEY (customer_id)
)
WITH (
  OIDS=TRUE
);
Sequence untuk autogenerate code
CREATE SEQUENCE customer_id_seq
  INCREMENT 1
  MINVALUE 1
  MAXVALUE 9223372036854775807
  START 4
  CACHE 1;
Project Struktur


Memulai project maven, pilih File -> New -> Project -> Maven -> Maven Project lalu pilih Next sehingga muncul sbb :





pom.xml
<project xmlns="http://maven.apache.org/POM/4.0.0"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
  http://maven.apache.org/maven-v4_0_0.xsd">
 
    <modelVersion>4.0.0</modelVersion>
    <groupId>application</groupId>
    <artifactId>application</artifactId>
    <packaging>war</packaging>
    <version>1.0</version>
    <name>application</name>
    <url>http://maven.apache.org</url>
    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <org.springframework.version>3.0.5.RELEASE</org.springframework.version>
    </properties> 
 
    <repositories>         
      <repository>  
            <id>prime-repo</id>  
            <name>PrimeFaces Maven Repository</name>  
            <url>http://repository.primefaces.org</url>  
            <layout>default</layout>  
        </repository>
     <repository>
        <id>java.net.m2</id>
        <name>java.net m2 repo</name>
        <url>http://download.java.net/maven/2</url>
     </repository>
    </repositories>
 
    <dependencies>
        <dependency>
            <groupId>javax.servlet.jsp</groupId>
            <artifactId>jsp-api</artifactId>
            <version>2.1</version>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-webmvc</artifactId>
            <version>3.0.5.RELEASE</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-tx</artifactId>
            <version>3.0.5.RELEASE</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-orm</artifactId>
            <version>3.0.5.RELEASE</version>
        </dependency>
      
        <dependency>
            <groupId>aopalliance</groupId>
            <artifactId>aopalliance</artifactId>
            <version>1.0</version>
        </dependency>
        <dependency>
            <groupId>cglib</groupId>
            <artifactId>cglib</artifactId>
            <version>2.2</version>
        </dependency>
        <dependency>
            <groupId>org.aspectj</groupId>
            <artifactId>aspectjweaver</artifactId>
            <version>1.6.10</version>
        </dependency>
        
        <!-- Hibernate core -->
  <dependency>
    <groupId>org.hibernate</groupId>
    <artifactId>hibernate</artifactId>
    <version>3.2.7.ga</version>
  </dependency>
  
  <dependency>
   <groupId>org.hibernate</groupId>
   <artifactId>hibernate-validator</artifactId>
   <version>3.0.0.ga</version>
  </dependency>
  
  <!-- Hibernate core library dependecy start -->
  <dependency>
    <groupId>dom4j</groupId>
    <artifactId>dom4j</artifactId>
    <version>1.6.1</version>
  </dependency>
  
  <dependency>
    <groupId>commons-logging</groupId>
    <artifactId>commons-logging</artifactId>
    <version>1.1.1</version>
  </dependency>
  
  <dependency>
    <groupId>commons-collections</groupId>
    <artifactId>commons-collections</artifactId>
    <version>3.2.1</version>
  </dependency>
  
  <!-- Hibernate core library dependecy end -->
  
  <!-- Hibernate query library dependecy start -->
  <dependency>
    <groupId>antlr</groupId>
    <artifactId>antlr</artifactId>
    <version>2.7.7</version>
  </dependency>
  <!-- Hibernate query library dependecy end -->
        
        <!-- POSTGRESSQL -->
        <dependency>
    <groupId>postgresql</groupId>
    <artifactId>postgresql</artifactId>
    <version>8.4-701.jdbc4</version>
  </dependency>
  
  <!-- MySQL database driver -->
  <dependency>
   <groupId>mysql</groupId>
   <artifactId>mysql-connector-java</artifactId>
   <version>5.1.9</version>
  </dependency>
  
  <!-- JSF -->
  <dependency>
       <groupId>com.sun.faces</groupId>
       <artifactId>jsf-api</artifactId>
       <version>2.0.4-b09</version>
     </dependency>
 
     <dependency>
       <groupId>com.sun.faces</groupId>
       <artifactId>jsf-impl</artifactId>
       <version>2.0.4-b09</version>
     </dependency>
      
      <!--<dependency>
        <groupId>com.sun.faces</groupId>
        <artifactId>jsf-impl</artifactId>
        <version>2.0.0-b13</version>
      </dependency>-->
   
     <dependency>
       <groupId>javax.servlet</groupId>
       <artifactId>jstl</artifactId>
       <version>1.2</version>
     </dependency>
  
     <dependency>
       <groupId>javax.servlet</groupId>
       <artifactId>servlet-api</artifactId>
       <version>2.5</version>
     </dependency>
    
     <!-- PrimeFace -->
  <dependency>  
            <groupId>org.primefaces</groupId>  
            <artifactId>primefaces</artifactId>  
            <!--<version>2.2.1</version>-->  
            <version>3.0.M3</version>
        </dependency>
     <dependency>  
      <groupId>org.primefaces.themes</groupId>  
      <artifactId>aristo</artifactId>  
      <version>1.0.1</version>  
  </dependency> 
  <dependency>  
      <groupId>org.primefaces.themes</groupId>  
      <artifactId>eggplant</artifactId>  
      <version>1.0.1</version>  
  </dependency> 
  <dependency>  
      <groupId>org.primefaces.themes</groupId>  
      <artifactId>humanity</artifactId>  
      <version>1.0.1</version>  
  </dependency> 
  <dependency>  
      <groupId>org.primefaces.themes</groupId>  
      <artifactId>glass-x</artifactId>  
      <version>1.0.1</version>  
  </dependency> 
  <dependency>  
      <groupId>org.primefaces.themes</groupId>  
      <artifactId>overcast</artifactId>  
      <version>1.0.1</version>  
  </dependency> 
  <dependency>  
      <groupId>org.primefaces.themes</groupId>  
      <artifactId>smoothness</artifactId>  
      <version>1.0.1</version>  
  </dependency> 
  <dependency>  
      <groupId>org.primefaces.themes</groupId>  
      <artifactId>pepper-grinder</artifactId>  
      <version>1.0.1</version>  
  </dependency>
  <dependency>  
      <groupId>org.primefaces.themes</groupId>  
      <artifactId>mint-choc</artifactId>  
      <version>1.0.1</version>  
  </dependency>
  <dependency>  
      <groupId>org.primefaces.themes</groupId>  
      <artifactId>sunny</artifactId>  
      <version>1.0.1</version>  
  </dependency>
   
  <!-- el feature of EL 2.2 for tomcat-->
  <dependency>
    <groupId>org.glassfish.web</groupId>
    <artifactId>el-impl</artifactId>
    <version>2.2</version>
      </dependency>
      
  <dependency>
    <groupId>javax</groupId>
    <artifactId>javaee-api</artifactId>
    <version>6.0</version>
    <scope>provided</scope>
  </dependency>
    
  <dependency>
         <groupId>log4j</groupId>
         <artifactId>log4j</artifactId>
         <version>1.2.14</version>
     </dependency>
   </dependencies> 
    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>2.3.2</version> 
                <configuration>
                    <source>1.6</source>
                    <target>1.6</target>
                </configuration>
            </plugin>
           </plugins>
        <finalName>application</finalName>
    </build> 
</project>
Copy pom.xml tersebut diatas agar lib - lib yang dibutuhkan dapat didownload oleh maven, inilah salah satu fungsi maven mendaftarkan lib - lib yang dibutuhkan di pom.xml lalu maven yang akan mendownloadnya otomatis library yang didaftarkan ke komputer kita

Lalu ke step selanjutnya, buat file properties dengan nama db.properties dan DataSource.xml untuk koneksi ke database
jdbc.driverClassName=org.postgresql.Driver
jdbc.url=jdbc:postgresql://localhost:5432/samz
jdbc.username=postgres
jdbc.password=postgres
File : DataSource.xml di src/main/resources/config/spring/beans

 
 
   
     WEB-INF/classes/config/db.properties
   

 
  
 
 
 
 
   

Selesai membuat script koneksi selanjutnya buat model kelas dan hbm
File : Customer.java
package com.application.model;

import java.util.Date;

public class Customer{
 
 public long customerId;
 public String name;
 public String address;
 public Date createdDate;
//generate getter &setter
//klik kanan Source > Generate Getter and Setter, Select All lalu OK
}

File : Customer.hbm.xml

     
        
            
             
              customer_id_seq
        
                   
        
        
    

Daftarkan file hbm diatas tersebut di HibernateSessionFactory.xml (src/main/resources/config/spring/beans)

 


 
    
      
    
 
    
       
         org.hibernate.dialect.PostgreSQLDialect
         true
       
    
 
    
 
          com/application/hibernate/Customer.hbm.xml
 
      
 



Yes it done,
Lalu sekarang kita buat Management Data Access(DAO) dimana file inilah yang akan berperan dalam mengatur data access atau query, segala query hibernate kita taro di DAO layer ini
Lets go!!!!
Pertama - tama kita buat interface dari DAO
File : CustomerDao.java (src/main/java/com/application/dao)
package com.application.dao;
 
import java.util.List;
import com.application.model.Customer;
 
public interface CustomerDao{
 
 void addCustomer(Customer customer);
 
 List<Customer> findAllCustomer();
 
}
Implementasikan interface DAO diatas, di file inilah kita akan membuat query
File : CustomerDaoImpl.java berada di folder src/main/java/com/application/dao
package com.application.dao;
 
import java.util.Date;
import java.util.List;
import org.springframework.orm.hibernate3.support.HibernateDaoSupport;
import com.application.model.Customer;
 
public class CustomerDaoImpl extends 
       HibernateDaoSupport implements CustomerDao{
 
 public void addCustomer(Customer customer){ 
  customer.setCreatedDate(new Date());
  getHibernateTemplate().save(customer);
 
 }
 
 @SuppressWarnings("unchecked")
 public List<customer> findAllCustomer(){ 
  return getHibernateTemplate().find("from Customer"); 
 }
}

CustomerService.java berada di folder src/main/java/com/application/service
package com.application.service;
 
import java.util.List;

import com.application.model.Customer;
 
public interface CustomerService{
 
 void addCustomer(Customer customer);
 
 List<Customer> findAllCustomer();
 
}
CustomerServiceImpl.java berada di folder src/main/java/com/application/service
package com.application.service;
 
import java.util.List;

import com.application.dao.CustomerDao;
import com.application.model.Customer;
 
public class CustomerServiceImpl implements CustomerService{
 
 CustomerDao customerDao;
 
 public void setCustomerDao(CustomerDao customerDao) {
  this.customerDao = customerDao;
 }
 
 public void addCustomer(Customer customer){ 
  customerDao.addCustomer(customer); 
 }
 
 public List<Customer> findAllCustomer(){ 
  return customerDao.findAllCustomer();
 }
}
Kenapa memakai service? salah satu gunanya untuk pengkapsulan DAO

Setelah itu buat Controller disinilah tempat untuk bisnis logic,
CustomerBean.java berada di folder src/main/java/com/application/beans
package com.application.beans;

import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;

import javax.faces.application.NavigationHandler;
import javax.faces.context.FacesContext;

import com.application.model.Customer;
import com.application.service.CustomerService;

public class CustomerBean implements Serializable {

 /**
  * 
  */
 private static final long serialVersionUID = 3051005476848367530L;

 // DI via Spring
 CustomerService customerService;

 public String name;
 public String address;


 public String getName() {
  return name;
 }

 public void setName(String name) {
  this.name = name;
 }

 public String getAddress() {
  return address;
 }

 public void setAddress(String address) {
  this.address = address;
 }

 public void setCustomerService(CustomerService customerService) {
  this.customerService = customerService;
 }

 // get all customer data from database
 public List<Customer> getCustomerList() {
  List<Customer> customers = customerService.findAllCustomer();
  if (customers.isEmpty()) {
   customers = new ArrayList<Customer>();
  }
  return customers;
 }

 // redirect to form
 public void listForm() {
  FacesContext fc = FacesContext.getCurrentInstance();
  NavigationHandler nav = fc.getApplication().getNavigationHandler();
  nav.handleNavigation(fc, null,
    "/pages/customer/customerList?faces-redirect=true");
  fc.renderResponse();
 }

 public void inputForm() {
  FacesContext fc = FacesContext.getCurrentInstance();
  NavigationHandler nav = fc.getApplication().getNavigationHandler();
  nav.handleNavigation(fc, null,
    "/pages/customer/customerInput?faces-redirect=true");
  fc.renderResponse();
 }

 // Tambah customer data ke database
 public void addCustomers() {
  Customer cust = new Customer();
  cust.setName(getName());
  cust.setAddress(getAddress());
  customerService.addCustomer(cust);
  clearForm();
  FacesContext fc = FacesContext.getCurrentInstance();
  NavigationHandler nav = fc.getApplication().getNavigationHandler();
  nav.handleNavigation(fc, null,
    "/pages/customer/customerList?faces-redirect=true");
  fc.renderResponse();
 }

 // clear form values
 private void clearForm() {
  setName("");
  setAddress("");
 }
}

Daftarkan Service dan Dao di CustomerBean.xml berada di folder src/main/resources/com/application/spring

 
    
     
    
     
    
     
    
 

Dan ini adalah viewnya untuk List
customerList.xhtml berada di folder src/main/webapp/pages/customer

 
  
 

 
Lalu kita ke Springnya buat file applicationContext.xml di folder WEB-INF


 
 
 
 
 
 
 


faces-config.xml berada di folder WEB-INF

    
    
        org.springframework.web.jsf.el.SpringBeanFacesELResolver
     
       config.messages
       msg
     
   
 
  customer
  com.application.beans.CustomerBean
  request
  
   customerService
   #{customerService}
  
  


Dan ini web.xml

 
 Web Application
  
  
   
  org.springframework.web.context.ContextLoaderListener
 
 
 
  org.springframework.web.context.request.RequestContextListener
 
 
 
  org.springframework.security.web.session.HttpSessionEventPublisher
 
 
 
     org.springframework.web.util.Log4jConfigListener
 
 
 
 
 
    com.sun.faces.expressionFactorycom.sun.el.ExpressionFactoryImpl
 
 
 
     javax.faces.PROJECT_STAGEDevelopment
  
    
      30
    
   
 
 
 
        faces/pages/customer/customerList.xhtml
        
   
   
  
  
       primefaces.THEMEaristo
 
  
  
    Faces Servlet
    javax.faces.webapp.FacesServlet
    1
  
  
        Resource Servlet
        org.primefaces.resource.ResourceServlet
    
    
        Resource Servlet
        /primefaces_resource/*
    
 
   
  
    Faces Servlet
    /faces/*
  
  
    Faces Servlet
    *.jsf
  
  
    Faces Servlet
    *.faces
  
  
    Faces Servlet
    *.xhtml
  

 
 
  contextConfigLocation/WEB-INF/applicationContext.xml
   


Download source code disini
Kunjungi situs kami di PT Samz Solution

Reference
http://www.mkyong.com

Kamis, 03 Mei 2012

Membuat Project Dengan Maven

Pada Tutorial sebelumnya kita telah mengetahui cara instalasi Maven di eclipse , sekarang bagaimana caranya kita membuat aplikasi web dengan maven.

Pilih menu File > New > Project > lalu pilih Maven dan Next akan tampil

Pilih Next lalu ketik dibagian filter maven-archetype-webapp lalu pilih Next

Isikan groupId : namaPackage(com)
artifacId : namaProject(webapplication) lalu Finish

Selanjutnya mempersiapkan application server, pada tutorial ini menggunakan Apache Tomcat 7 jika belum ada bisa download disini. Pada menu eclipse pilih Window > Show View > Other lalu pilih Server lalu Ok, akan muncul Tab Server di eclipse, klik kanan untuk new Server

Dan akan muncul pilihan server

Pilih Apache Tomcat 7 dan klik Next akan muncul tomcat instalation directory

Step Selanjutnya adalah Add Project pada Server agar project bisa dijalankan

Maka akan muncul sebagai berikut :

Jika project tidak muncul maka klik kanan pada project pilih Properties dan pada Project Facet centang Dinamic Web Module
Klik Further configuration available akan muncul seperti gambar dibawah dan pada content directory ubah menjadi src/main/webapp lalu Ok

Jalankan project, klik kanan webapplication Run As > Run on Server, jika berhasil akan tampil
Atau ketik pada web browser http://localhost:8080/webapplication untuk dapat melihat di web browser

Bagaimana cara membuat .war nya? ini dapat dilakukan pada command console, Run pada window lalu ketik cmd lalu ketik mvn clean package lalu enter
Tunggu sampai maven membuat .war file, lalu cek di project pada folder target maka akan tercipta webapplication.war
Bagaimana cara mendeploynya di application server tomcat?
copy webapplication.war ke C:\Program Files\Apache Software Foundation\Tomcat 7.0\webapps selesai dicopy jalankan Tomcat7.exe atau Tomcat7w.exe pada folder C:\Program Files\Apache Software Foundation\Tomcat 7.0\bin dan ketik pada browser http://localhost:8080/webapplication

Selamat mencoba semoga bermanfaat.
Kunjungi situs kami di PT Samz solution

Rabu, 02 Mei 2012

Maven Tutorial

Maven adalah sebuah software dan tool yang komprehensif untuk project management. Konsep dasar dari Maven adalah Project Object Model (POM), dimana Maven dapat membangun, membuat laporan, dan dokumentasi dari sebuah project, Situs resmi apache maven untuk dapat mendownload apache maven

Pada tutorial ini akan menjelaskan tentang instalasi maven pada windows dan eclipse

Install pada windows
Tambahkan JAVA_HOME di environtment variable, pastikan kita sudah menginstal JDK

Download Maven
Download apache maven zip file di link ini pada tutorial ini menggunakan maven 3.0.4, selesai di download extract di C:\apache-maven-3.0.4 atau di D:\apache-maven-3.0.4 atau dimana saja berada, lalu tambahkan di environtment variable windows agar maven dapat berjalan di command

Jika berhasil jalankan pada command mvn -version maka akan tampil sbb :

Install Pada Eclipse
Pada menu Help pilih Eclipse Marketplace maka akan muncul sbb :
serach key "maven" pilih Maven Integration for Eclipse klik button install lalu ikuti proses selanjutnya jika instalasi succes maka eclipse akan minta restart, cek apakah maven sudah terinstal, pilih menu File > New > Project cari Maven

Kunjungi situs kami di PT Samz Solution