Friday, February 19, 2010

What icefaces??

where open source Ajax developers can learn, share, and contribute information and ideas to a growing community of enterprise Ajax JSF developers. ICEfaces.org provides a wide range of development and support resources to benefit all Java developers looking to build rich J2EE Ajax applications. Source code and pre-bundled IDE tool integrations are available for download. Numerous tutorials, on-line support, user forums and sample code are all easily accessible to help get you up and developing open source Ajax applications that much quicker.

To get more explain about this new technology. refer to icefaces website :

We need to use some tools :
1. Eclipse IDE for Java EE Developers v3.5 (Galileo)
This bundle includes required Eclipse WTP v3.1 (Web Tool Platform). It can be downloaded from
http://www.eclipse.org/downloads/packages/eclipse-ide-java-ee-developers/galileor
2. ICEfaces- 1.8–Eclipse- 3.5.0-plugins- v3.6.1.zip
This is core package of ICEfaces Eclipse Integration. It can be downloaded from
http://www.icefaces.org/main/downloads/os-downloads.iface.


JSF is using for building server-side user interfaces that will make web application development even easier.


I will explain how to start the JSF..
  1. You must locate the latest stable version of Tomcat from website. To minimize installation complexities, choose the "zip" file.
  2. You need to save the zip file (named something like gina-tomcat-5.5.7.zip) to your computer.
  3. Then unzip the file into a directory of your choice (such as /usr/local or c:\). The program is contained in a subdirectory named something like jakarta-tomcat-5.5.7.
  4. Then download the latest version of the JSF Reference Implementation from http://java.sun.com/j2ee/javaserverfaces/download.html
  5. Save the zip file (named something like jsf-1_1_01.zip) to your computer.
  6. Unzip the file into a directory of your choice (such as /usr/local or c:\). The program is contained in a subdirectory named something like jsf-1_1_01.
    NOTE: For your own sanity,
    do not unzip into a directory containing spaces (such as Program Files or My Documents).
  7. Copy all JAR files files from the lib subdirectory of your JSF installation (such as c:\jsf-1_1_01\lib) to the common/lib subdirectory of Tomcat
  8. Copy the following two JAR files from the webapps/jsp-examples/WEB-INF/lib subdirectory of your Tomcat installation.
    • jstl.jar
    • standard.jar
  9. to get a detail and more explaination, refer this website http://www.horstmann.com/

the facade

The Facade design pattern simplifies complex APIs by providing a simplified interface to a complex subsystem.


Below is example of using the facade in application :

package MyProjectAPI;

import java.util.Vector;

public class MyFacade
{
ProjectAPI api;
public MyFacade()
{
api = new ProjectAPI();
}
public void addUserLogin(Project_Bean bean)
{
api.addUserLogin(bean);
}
public Vector getUserLogin()
{
return api.getUserLogin();
}
}

File name : MyProjectAPI.java

package MyProjectAPI;

public class CreateTable
{
//table tbl_login
static final String _tbl_login = "create table tbl_login (username varchar(12), password varchar(6), access_level(1), status varchar(5), logTime varchar(20))";
/**
* return tbl_login
*/
static String tbl_login()
{
return _tbl_login;
}
//table tbl_staff
static final String _tbl_staff = "create table tbl_staff(_staffName varchar(30),_staffIc varchar (12),_staffPhone varchar (10),_staffId varchar(15), _staffPassword varchar(6),_accessLevel varchar(5),_status(5))";
/*
* return tbl_staff
*/
static String tbl_staff()
{
return _tbl_staff;
}
//tbl_pakej
static final String _tbl_pakej = "create table tbl_pakej(_pakejId varchar (10),_jenisPakej varchar(1), _namaPakej varchar(30),_tempoh varchar(20)," +
"_tarikhBertolak varchar (30),_tarikhTiba varchar (30),_harga varchar(10), _gambarHotel varchar(60),_jenisBilik varchar(15),_status varchar(15)," +
"_jenisPenerbangan varchar (25))";

/*
* return tbl_pakej
*/
static String tbl_pakej()
{
return _tbl_pakej;
}
//tbl_user
static final String _tbl_user = "create table tbl_user(_namaPertama varchar(30),_namaKedua varchar(30),_ic varchar(12)," +
",_umur varchar(3),_jantina varchar(1),_email varchar(30),_handphone varchar(10),_gambarPassport varchar(50),"+
"_telRumah varchar(9),_warganegara varchar(1),_alamat varchar(50),_accessLevel(5),_status(5),_noPassport varchar (20)," +
"_jenisPassport varchar(20),_tarikhMula varchar (15),tarikhTamat varchar(15), _pilihanPenerbangan varchar (20)," +
"_noAkaun varchar int (20),_jenisBank varchar(30),_jumlahBayaran varchar (10),_jenisPenyakit varchar(40), _ubat varchar(35),_orangKecemasan1 varchar(100)," +
"_orangKecemasan2 varchar(100),_orangKecemasan3 varchar(100))";

static String tbl_user()
{
return _tbl_user;
}
static final String _tbl_registration = "create table tbl_registration(_idRegister int (10),_tarikh varchar(20),"+
"_statusBayaran varchar(15),_keluargaTerlibat1 varchar(100),_keluargaTerlibat2 varchar(100),_keluargaTerlibat3 varchar(100)," +
"_keluargaTerlibat4 varchar(100),_keluargaTerlibat5 varchar(100))";
static String _tbl_report = "create table tbl_report(_idReport int(6),_status varchar(30),_tarikh date," +
"_idPakej varchar(30),_jenisKeterangan varchar(100))";
}





A code can be divided into a few package/ folder called bean, api, database Connection, function,report, search..


  1. bean - for set the attribute get and set
  2. api - for engine code and application that will we called to apply in project
  3. database connection - so create a database connection and set the location of database
  4. function - to do a code for function or module
  5. report - i develop all the code into this folder
Example code: staff.java

package MyProjectAPI.bean;

public class staff
{
private String _staffId;
private String _staffPassword;
private String _accessLevel;
private String _status;
private String _staffName;
private String _staffIc;
private String _staffPhone;
private String _staffEmail;
public String get_staffId() {
return _staffId;
}
public void set_staffId(String id) {
_staffId = id;
}
public String get_staffPassword() {
return _staffPassword;
}
public void set_staffPassword(String password) {
_staffPassword = password;
}
public String get_accessLevel() {
return _accessLevel;
}
public void set_accessLevel(String level) {
_accessLevel = level;
}
public String get_status() {
return _status;
}
public void set_status(String _status) {
this._status = _status;
}
public String get_staffName() {
return _staffName;
}
public void set_staffName(String name) {
_staffName = name;
}
public String get_staffIc() {
return _staffIc;
}
public void set_staffIc(String ic) {
_staffIc = ic;
}
public String get_staffPhone() {
return _staffPhone;
}
public void set_staffPhone(String phone) {
_staffPhone = phone;
}
public String get_staffEmail() {
return _staffEmail;
}
public void set_staffEmail(String email) {
_staffEmail = email;
}
}

This is example to connect the database with application by using Microsoft Access, javaDB,MySQL.
Example : ConnectDB.java

package MyProjectAPI.datasource;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;

public class ConnectDB
{

//driver for JavaDB
private static String _driver ="org.apache.derby.jdbc.EmbeddedDriver";
private static String dbName="MyDB";
private static String connectionURL = "jdbc:derby:" + ConnectDB.dbName + ";create = true";
//function for connect to JavaDB
public static Connection connectDbase() throws ClassNotFoundException, SQLException
{
Class.forName(ConnectDB._driver);
return DriverManager.getConnection(ConnectDB.connectionURL);
}
//function for connect to Ms. Access
/*public static Connection connectDbase() throws ClassNotFoundException, SQLException
{
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
String dbPath = "C:\\Program Files\\Apache Software Foundation\\Tomcat 6.0\\webapps\\FTMKIS\\DB\\FTMKIS.mdb";

//String dbPath = "C:\\DB\\FTMKIS.mdb";
String myDB = "jdbc:odbc:Driver={Microsoft Access Driver (*.mdb)};DBQ="+dbPath;
return DriverManager.getConnection(myDB,"","");
}*/
//driver for MySQL
/*private static final String JDBC_DRIVER = "com.mysql.jdbc.Driver";
private static String mysql_host = "localhost";
private static String mysql_user = "root";
private static String mysql_password = "1234";
private static String mysql_db = "ftmkis";
private static final String DATABASE_URL = "jdbc:mysql://localhost/ftmkis";

function for connect to MySQL
public static Connection connectDbase() throws ClassNotFoundException, SQLException
{
Class.forName(ConnectDB.JDBC_DRIVER);
return DriverManager.getConnection(ConnectDB.DATABASE_URL,ConnectDB.mysql_user,ConnectDB.mysql_password);
}*/
}


This is example the engine of code use to create, update, view,delete, list,checkpassword, checkId.
Example : StaffDB.java

package MyProjectAPI.function;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.Vector;

import MyProjectAPI.bean.staff;
import MyProjectAPI.datasource.ConnectDB;

public class staffDB
{
public int checkId(String condition) throws ClassNotFoundException, SQLException
{
Connection conn = ConnectDB.connectDbase();

int updateStatus = 0;
PreparedStatement prep = conn.prepareStatement("SELECT COUNT(_staffId)FROM tbl_staff WHERE _staffId= ?");
prep.setString(1, condition);
ResultSet resultset = prep.executeQuery();
while(resultset.next())
{
updateStatus = resultset.getInt(1);
}
if(conn != null)
conn.close();
return updateStatus;
}
public int checkPassword(String _userId, String _password) throws ClassNotFoundException, SQLException
{
int updateStatus = 0;
String pass = String.valueOf(_password.hashCode());
Connection conn = ConnectDB.connectDbase();
PreparedStatement prep = conn.prepareStatement("SELECT COUNT(_staffId) FROM tbl_staff WHERE _staffId=? AND _staffPassword = ?");
prep.setString(1, _userId);
prep.setString(2, pass);
ResultSet resultset = prep.executeQuery();
while(resultset.next())
{
updateStatus = resultset.getInt(1);
}
if(conn != null)
conn.close();
return updateStatus;
}
public int addStaff(staff Staff)throws SQLException, ClassNotFoundException
{
int updateStatus;
Connection conn = ConnectDB.connectDbase();
PreparedStatement prep = conn.prepareStatement("INSERT INTO tbl_staff(_staffId,_staffPassword,_accessLevel," +
"_status,_staffName,_staffIc,_staffPhone,_staffEmail) VALUES(?,?,?,?,?,?,?,?)");
prep.setString(1, Staff.get_staffId());
prep.setString(2, Staff.get_staffPassword());
prep.setString(3, Staff.get_accessLevel());
prep.setString(4, Staff.get_status());
prep.setString(5, Staff.get_staffName());
prep.setString(6, Staff.get_staffIc());
prep.setString(7, Staff.get_staffPhone());
prep.setString(8, Staff.get_staffEmail());
updateStatus = prep.executeUpdate();
if(conn != null)
conn.close();
return updateStatus;
}
public int updateStaff(staff Staff) throws SQLException, ClassNotFoundException
{
int updateStatus;
Connection conn = ConnectDB.connectDbase();
String state = "UPDATE tbl_staff SET";
state += " _staffPassword = ?,_accessLevel=?,_status=?,_staffName=?,_staffIc=?,_staffPhone=?," +
"_staffEmail=? WHERE _staffId = ?";
PreparedStatement prep = conn.prepareStatement(state);
prep.setString(1, Staff.get_staffId());
prep.setString(2, Staff.get_staffPassword());
prep.setString(3, Staff.get_accessLevel());
prep.setString(4, Staff.get_status());
prep.setString(5, Staff.get_staffName());
prep.setString(6, Staff.get_staffIc());
prep.setString(7, Staff.get_staffPhone());
prep.setString(8, Staff.get_staffEmail());
updateStatus = prep.executeUpdate();
if(conn!=null)
conn.close();
return updateStatus;
}
public int updateAdminStatus(String status, String statusvalue, String Staff) throws SQLException, ClassNotFoundException
{
int updateStatus;
Connection conn = ConnectDB.connectDbase();
String state = "UPDATE tbl_staff SET "+status+" = ? WHERE _staffId = ?";
PreparedStatement prep = conn.prepareStatement(state);
prep.setString(1, statusvalue);
prep.setString(2, Staff);
updateStatus = prep.executeUpdate();
if(conn!=null)
conn.close();
return updateStatus;
}
public int deleteStaff(String Staff) throws ClassNotFoundException, SQLException
{
int updateStatus;
Connection conn = ConnectDB.connectDbase();
PreparedStatement prep = conn.prepareStatement("DELETE FROM tbl_staff WHERE _staffId = ?");
prep.setString(1, Staff);
updateStatus = prep.executeUpdate();
if(conn!=null)
conn.close();
return updateStatus;
}
public int resetPassword(String staffId) throws ClassNotFoundException, SQLException
{
int updateStatus;
String pass = String.valueOf("PaS$w0rd1357".hashCode());
Connection conn = ConnectDB.connectDbase();
PreparedStatement prep = conn.prepareStatement("UPDATE tbl_staff SET _staffPassword = ? WHERE _staffId = ?");
prep.setString(1, pass);
prep.setString(2, staffId);
updateStatus = prep.executeUpdate();
if(conn!=null)
conn.close();
return updateStatus;
}
public int changePassword(String staffId, String password) throws ClassNotFoundException, SQLException
{
int updateStatus;
String pass = String.valueOf(password.hashCode());
Connection conn = ConnectDB.connectDbase();
PreparedStatement prep = conn.prepareStatement("UPDATE tbl_staff SET _staffPassword = ? WHERE _staffId = ?");
prep.setString(1, pass);
prep.setString(2, staffId);
updateStatus = prep.executeUpdate();
if(conn!=null)
conn.close();
return updateStatus;
}
public Vector getStaffList(String condition) throws ClassNotFoundException, SQLException
{
Vector vecStaff = new Vector ();
Connection conn = ConnectDB.connectDbase();
Statement prep = conn.createStatement();
String state = "SELECT * FROM tbl_staff";
if(!condition.equals(null))
state = "SELECT * FROM tbl_staff "+condition;
ResultSet rs = prep.executeQuery(state);
while(rs.next())
{
staff Staff = new staff();
Staff.set_staffId(rs.getString("_staffId"));
Staff.set_staffPassword(rs.getString("_staffPassword"));
Staff.set_accessLevel(rs.getString("_accessLevel"));
Staff.set_status(rs.getString("_status"));
Staff.set_staffName(rs.getString("_staffName"));
Staff.set_staffPhone(rs.getString("_staffPhone"));
Staff.set_staffPhone(rs.getString("_staffPhone"));
Staff.set_staffEmail(rs.getString("_staffEmail"));
vecStaff.add(Staff);
}
if(conn!=null)
conn.close();
return vecStaff;
}
}




Requirement when starting this programming :

Berikut ialah apa yg I guna, it's depend on individual what to use..

a) Perisian pelayan web Apache Tomcat 6.0

Apache Tomcat 6.0 digunakan sebagai pelayan web untuk menghubungkan antara fail-fail JSP (antaramuka kepada user) dan juga dengan engine( yang bertindak untuk membuat sebarang tindakan dan berinteraksi dengan pangkalan data). Pelayan ini juga mampu menyokong Operating Systems yang digunakan dalam komputer peribadi iaitu Windows.

b) Perisian bahasa pengaturcaraan Java

Perisian Java ini digunakan untuk membuat antara muka (Front –End ) bagi pengguna. Selain itu, perisian ini juga digunakan untuk membenarkan pelayan web untuk memproses data dan maklumat menggunakan pengaturcaraan Java. Bahasa pengaturcaraan ini lebih mudah digunakan dan ia lebih popular daripada PHP dan juga ASP.

c) Perisian aplikasi pangkalan data Java DB

Perisian ini akan bertindak sebagai perantaraan untuk menghubungkan perantaraan dengan pangkalan data bagi sistem yang akan dibangunkan ini. Segala data dan maklumat yang diproses oleh JSP akan disimpan didalam pangkalan data ini. Perisian ini dipilih kerana ia amat serasi dengan bahasa pengaturcaraan JSP. Ini kerana pengaturcaraan web JSP tidak boleh terus berhubung dengan pangkalan data tanpa melalui back-end.

d) Perkakasan pembangunan laman web Macromedia Dreamweaver 8

Macromedia Dreamweaver 8 merupakan sebuah perisian pembangunan laman web yang mesra pengguna di samping mudah digunakan. Ia dapat membantu kedua-dua pengaturcara mahupun perekabentuk sistem untuk membuat antaramuka yang akan dipaparkan dalam sistem dengan cara yang mudah tetapi amat berkesan. Pengguna perisian juga bebas untuk merekabentuk halaman antaramuka sistem mengikut kesesuaian di samping turut menyediakan beberapa kemudahan kepada pengguna sepertilibrary dan template yang dapat mengurangkan beban pereka sistem. Perisian ini dipilih kerana ia dapat memudahkan penghasilan fail JSP menggunakan komponen yang terdapat didalam perisian tersebut.

e) Perisian Adobe Photoshop CS3

Selain itu, Adobe Photoshop CS3 pula digunakan untuk membuat rekabentuk antaramuka bagi sesebuah sistem. Ini kerana, rekabentuk antaramuka adalah suatu elemen yang penting bagi penghasilan yang boleh menarik perhatian pengguna. Selain itu, bleh guna kan perisian lain utk design interface.

;;