Monday, December 25, 2006

ตัวอย่าง Hibernate Annotation

ส่วนที่สำคัญคือการ Generate ID ใช้ Concept Table Generate

@GeneratedValue(strategy = GenerationType.TABLE, generator ="IdGen")
@javax.persistence.TableGenerator(
name="IdGen",
table="_ID_GENERATOR",
pkColumnName="GEN_KEY",
valueColumnName="GEN_VALUE",
pkColumnValue="Event_ID",
allocationSize=1
)
Class
package nidec.pcm.mapping;

import java.util.Date;

import javax.persistence.*;

@Entity
@Table (name="Event")
public class Event {

@Id
@Column (name="uid")
@GeneratedValue(strategy = GenerationType.TABLE, generator ="IdGen")
@javax.persistence.TableGenerator(
name="IdGen",
table="_ID_GENERATOR",
pkColumnName="GEN_KEY",
valueColumnName="GEN_VALUE",
pkColumnValue="Event_ID",
allocationSize=1
)
private Long id;
@Column (name="date")
private Date date;
@Column (name="title")
private String title;
public Date getDate() {
return date;
}
public void setDate(Date date) {
this.date = date;
}
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;
}
}

Table
Generate Table
CREATE TABLE _id_generator
(
gen_key varchar(20) NOT NULL,
gen_value int4 NOT NULL
)
-- Data Table
CREATE TABLE event
(
uid int4 NOT NULL,
date date,
title varchar(30),
CONSTRAINT pk_event PRIMARY KEY (uid)

Hibernate Config

เพิ่ม mapping class ใน hibernate.cfg.xml ด้วย

Object/Relational Mapping

เริ่มต้นกับ ORM ควรอ่านบทความนี้ก่อน
http://www.twoguru.com/playground/cs_tutorial/oop/o_r_mapping.htm

Friday, September 29, 2006

Nidex Solution

1. นำ JSF Technology มาใช้ใน Project
JSF (JavaServer Faces) เป็น Java Web Application Framework ที่เป็นที่ยอมรับเป็นมาตรฐานในปัจจุบันโดย Sun เป็นผู้ออก Spec.
ประโยชน์
- เพิ่ม Productivity งานออกได้เร็ว
- ลดความซับซ้อนในการ Coding
- Debug ได้ง่าย
- มี Standard Coding
- ใช้ MVC model ในการ Develop ทำให้แยกส่วนการ Develop ได้เด็ดขาด ทำให้ง่ายในการ Maintenance โดยมีผลกระทบต่อกันน้อยในแต่ละส่วน

2. นำ iReport และ JasperReport มาใช้ใน Project
iReport เป็นเครื่องมือในการสร้าง Report โดยที่มีความสามารถเทียบเท่ากับ Crystal Report แต่เป็น Open Source
JasperReport เป็น Library ในการออก Report ใน Format ต่างๆเช่น ReportViewer, PDF, Excel, Word, CSV
ประโยชน์
- เพิ่ม Productivity โดยสร้าง Report เพียงครั้งเดียวสามารถออกเป็น Format ได้หลายแบบ
- สร้าง Report ออกผ่าน Web โดย Export เป็น PDF ทำให้ Report ออกมาได้สวยงาม
- Formula ต่างๆใน iReport เขียนด้วย Java จึงไม่ต้องเรียนรู้ใหม่

3. ทำ Solution โดยไม่มี Cost ของ License Software
Server
OS : Debian Linux
Database : PostgreSQL
Web Server : Apache Tomcat
Development
OS : All development tool can use in Linux (but real working using Windows)
IDE : Eclipse
Report Designer : iReport
Framework : JSF, J2EE
Source Control : CVS (but using Source Safe by CSI standard )
User Client
Client : Web Browser (any) and PDF viewer

4. Plan to upgrade to Nidex 2.0
1. More user friendly with AJAX technology
2. Using Web Service to commuticate with Customer and Vendor
3. Develop Service Component for using with another Java Application
4. Create Work Flow module, paper less
5. Upgrade Tomcat to another Application Server such as JBoss, WebSphere, Apache Geronimo
6. Using App Wizard for create new Program in Nidex
7. Using Spring and Hibernate Framework for more productivity

Sunday, September 24, 2006

Open Source for Windows

http://osswin.sourceforge.net/

Thursday, September 21, 2006

Writely the Document Editor Killer

http://www.writely.com รวมทุกสิ่งที่ Document Editor ควรจะทำได้ไว้หมด
  • Word Processor (Insert Image, Table, etc)
  • Public Document (Blog, Web)
  • Share Document
  • Version Control
  • AJAX
  • etc.

Open Declaration จาก JSF file

เพิ่งรู้ว่า Eclipse with Exadel 4.00 ทำ Open Declaration จาก JSF file ได้ด้วย
โดยการกด Ctrl ค้างไว้แล้วกด Click

Firefox Extension Tutorial

http://businesslogs.com/technology/firefox_extension_tutorial.php
ไว้ว่างๆจะอ่านแล้ว Review ดู

Database Tool - Execute Query

http://executequery.org/

ใช้ได้นะตัวเนี้ยเล็กๆแต่ความสามารถหลากหลาย
แต่บางที่น่ามีแต่ดันไม่มีเช่นพวก Edit Store procedure

Sunday, September 17, 2006

ASP อีกอันที่คิดได้

ทำ Web Document Template
(post ไปเนี้ยจะมีใครมาอ่านแล้วลอก idea ไปมั้ยเนี้ย ยังไงถ้าจะทำก็ชวนๆกันบ้างนะ)

Tuesday, September 12, 2006

My Office 2.0

http://itredux.com/blog/office-20/my-office-20-setup/

วิธีเข้า msn ถ้า connect ไม่ได้

C:\Windows\System32\Drivers\etc\hosts
แล้วมันจะเรียกเปิดให้ใช้โปรแกรม Notepad เปิดนะแล้วใส่ 2ตัวนี่ลงไปข้างล่าง

65.54.239.80 messenger.hotmail.com
65.54.239.80 dp.msnmessenger.akadns.net

Saturday, September 02, 2006

iReport Tutorial (4/5)

การเรียก Report มาแสดงบนจากหน้า Web จะต้องมี Library ของ JasperReport อยู่ด้วยโดย File ที่ใช้คือ
  1. jasperreports-1.2.5.jar
  2. itext-1.3.1.jar
  3. commons-javaflow-20060411.jar
โดยสามารถไป Copy ได้จาก Folder ที่ Install iReport C:\Program Files\JasperSoft\iReport-1.2.5\lib

นี้เป็นตัวอย่าง File JSP ที่จะใช่แสดง Output ออกมาเป็น PDF file
โดย Parameter ที่ต้องการคือ
  1. ReportName - ชื่อ File ของ Report ไม่ต้องมีนามสกุล
  2. DataSource - ใช้ในกรณีที่เป็นการ Connect โดยใช้ JRDataSourceProvider
ตัวอย่างการเรียก Report ผ่าน JSP
  • http://localhost:8080/iReport1/ExportReport.jsp?ReportName=EmployeeList แบบใช้ JDBC Connection
  • http://localhost:8080/iReport1/ExportReport.jsp?
    ReportName=EmployeeList&DataSource=data.factory.EmployeeReport
    แบบ JRDataSourceProvider

<%@page import="java.util.*"%>
<%@page import="data.connect.DBConnect"%>
<%@page import="java.sql.Connection"%>
<%@page import="net.sf.jasperreports.engine.*"%>
<%@page import="net.sf.jasperreports.engine.data.JRAbstractBeanDataSourceProvider"%>
<%@page import="net.sf.jasperreports.engine.data.JRBeanCollectionDataSource"%>
<%@page import="net.sf.jasperreports.engine.export.*"%>
<%
String dataSource = request.getParameter("DataSource");//DataSource
String sReportPath = getServletContext().getRealPath("/Reports/"
+ request.getParameter("ReportName") + ".jrxml");
//Mapping Query String to Report's Parameter
Map<String, Object> parameters = new HashMap<String, Object>();
Enumeration eParaName = request.getParameterNames();
if (eParaName != null){
while (eParaName.hasMoreElements()) {
Object obj = eParaName.nextElement();
parameters.put(obj.toString(), request.getParameter(obj.toString()));
}
}
//Compile Report jrxml --> jasper
JasperReport jasperReport = JasperCompileManager.compileReport(sReportPath);;
JasperPrint jasperPrint=null;
try {
if (dataSource == null) { //Check Data Source Type
//Get Data from Connection
//Create connection to Database
Connection connection=DBConnect.getMySqlConnection();
jasperPrint =
JasperFillManager.fillReport(jasperReport, parameters, connection);
}
else{
//Get Data from Data Source Class
JRAbstractBeanDataSourceProvider dsf
= (JRAbstractBeanDataSourceProvider)Class.forName(dataSource).newInstance();
JRBeanCollectionDataSource ds = (JRBeanCollectionDataSource)dsf.create(jasperReport);
if (ds != null) {
jasperPrint = JasperFillManager.fillReport(jasperReport, parameters, ds);
}
}
//Stream output to PDF file
ServletOutputStream sosStream = response.getOutputStream();
JRExporter exporter = new JRPdfExporter();//PDF Export
exporter.setParameter( JRExporterParameter.JASPER_PRINT, jasperPrint );
//Set Stream header
response.setHeader (
"Content-Disposition", "attachment;filename=\""
+request.getParameter("ReportName")+".pdf\"");
exporter.setParameter( JRExporterParameter.OUTPUT_STREAM, sosStream);
exporter.exportReport();
sosStream.close();
}
catch (Exception ex1){
response.sendError(HttpServletResponse.SC_INTERNAL_SERVER_ERROR, ex1.getMessage());
ex1.printStackTrace();
return;
}

%>

iReport Tutorial (3/5)

การสร้าง Connection ไปยัง JRDataSourceProvider
ขึ้นตอนจะเป็นดังนี้
1. ที่ Java project Create Entity Bean
2. ที่ Java project Create Class extended from JRAbstractBeanDataSourceProvider
3. ที่ iReport Save Classpath โดยไปที่ menu Option->Classpath แล้ว Add Folder ของ Project แล้ว Save
4. สร้าง Connection โดยเลือกเป็น JRDataSourceProvider และใส่ JRAbstractBeanDataSourceProvider Extends Class
5. สร้าง Report โดยใช้ Report Wizard ตามปกติ โดยจะเห็น Properties ของ Entity Bean เป็น Field ใน Report

ต่อไปมาดูการสร้างอย่างละเอียด
1. สร้าง Entity Bean ที่จะเอาไว้เก็บข้อมูลของ Employee ชื่อว่า Employee
package data.factory;

import java.io.Serializable;
import java.util.Date;

public class Employee implements Serializable {

private static final long serialVersionUID = -2601582524413665788L;
private String empNo;
private String empName;
private String depNo;
private String depName;
private Date startDate;

public Employee(String empNo, String empName,
String depNo, String depName, Date startDate) {
super();
this.empNo = empNo;
this.empName = empName;
this.depNo = depNo;
this.depName = depName;
this.startDate = startDate;
}
public String getDepNo() {return depNo;}
public void setDepNo(String depNo) {this.depNo = depNo;}
public String getEmpName() {return empName;}
public void setEmpName(String empName) {this.empName = empName;}
public String getEmpNo() {return empNo;}
public void setEmpNo(String empNo) {this.empNo = empNo; }
public Date getStartDate() {return startDate;}
public void setStartDate(Date startDate) {this.startDate = startDate;}
public String getDepName() {return depName;}
public void setDepName(String depName) {this.depName = depName;}
}



2. ที่ Java project Create Class extended from
JRAbstractBeanDataSourceProvider เพื่อที่ให้เป็นตัวที่จะ Query Data มาให้ Report


package data.factory;
import java.sql.*;
import java.util.*;
import java.util.Date;
import data.connect.DBConnect;
import net.sf.jasperreports.engine.*;
import net.sf.jasperreports.engine.data.JRAbstractBeanDataSourceProvider;
import net.sf.jasperreports.engine.data.JRBeanCollectionDataSource;
public class EmployeeReport
extends JRAbstractBeanDataSourceProvider {
public EmployeeReport() {
super(Employee.class);
}
public void dispose(JRDataSource arg0) throws JRException {
}
public JRDataSource create(JasperReport arg0) throws JRException {
ArrayList<Employee> list=new ArrayList<Employee>();
String sSQL="SELECT EmpNo , EmpName , "
+"StartDate , employee.DepNo,DepName"
+" FROM employee "
+" INNER JOIN department"
+" ON employee.DepNo = department.depno "
+" where employee.DepNo='S01'"
+" order by EmpNo";
try{
Connection connection=DBConnect.getMySqlConnection();
PreparedStatement prs=connection.prepareStatement(sSQL);
ResultSet rs=prs.executeQuery();
while(rs.next()){
list.add(new Employee(rs.getString("EmpNo")
,rs.getString("EmpName")
,rs.getString("DepNo"),rs.getString("DepName")
,new Date(rs.getDate("StartDate").getTime())));
}
}
catch(Exception ex){
ex.printStackTrace();
}
return new JRBeanCollectionDataSource(list);
}
}

3. ที่ iReport Save Classpath โดยไปที่ menu Option->Classpath แล้ว Add Folder ของ Project แล้ว Save
4. สร้าง Connection เป็น JRDataSourceProvider แล้วใส่ชื่อ Class ที่เราสร้างไว้ ลอง Test ดูว่า Connect สำเร็จมั้ย
5. สร้าง Report โดยใช้ Report Wizard ตามปกติ โดยจะเห็น Properties ของ Entity Bean เป็น Field ใน Report

iReport Tutorial (2/5)

ใน iReport 1.2.5 สามารถสร้าง Connection เพื่อไปดึง Data ได้หลายแบบ ได้แก่
  1. Database JDBC connection
  2. XML file datasource
  3. JavaBeans set Datasource
  4. Custom JRDatasource
  5. File CSV datasource
  6. JRDataSourceProvider
  7. Hibernate connection
  8. Spring loaded Hibernate Connection
  9. EJBQL connection
  10. Mondrian OLAP connection
ในส่วนต่อไปเป็นการสร้าง Connection ไปยัง Database JDBC connection กับ JRDataSourceProvider
1. การสร้าง Database JDBC connection
ไปที่ menu Data->Connections/Datasources กด New จะมี Dialog ขึ้นมาให้เลือก Connection ก็ใส่ Option ตาม Connect ที่ต้องการ ในตอนนี้จะเลือกเป็น MySQL JDBC Connection ตามรูป

2. ใช้ Report Wizard สร้าง Report ขึ้นมาจาก Connection ที่สร้างไว้ (menu File-> Report Wizard)
3. ในช่อง SQL Query ให้ใส่ SQL เพื่อดึงข้อมูลที่จะให้แสดงใน Report และเมื่อกด Next จะแสดง Field ทั้งหมดที่ SQL Select ขึ้นมา ให้เลือก Field ที่จะแสดงและกด Next ต่อไป4. เลือก Group และเลือก Template ที่จะใช้แล้ว ก็จะได้ Report ออกมาแบบนี้ (เลือก Tabular layout, classicT.xml) แก้ Report Title ให้เป็นตามต้องการ
5. ไปที่ menu Build->Execute (with active connection) เพื่อเป็นการ Preview Report กับ Data

Friday, September 01, 2006

Javascript createPopup

Create Popup to show loading data
function showLoading() {
var m = window.createPopup();
var n = m.document.body;
var width=200;
var height=100;
var left = parseInt((screen.availWidth/2) - (width/2));
var top = parseInt((screen.availHeight/2) - height);
n.style.border="solid 2px black";
n.innerHTML = "Loading Data ....";
m.show( left, top, width, height, document.body);
}

Javascript Scroller Table

จาก http://www.litotes.demon.co.uk/ ไปเจอ Function การทำ Scroller Table แบบใช้งานง่ายๆมา
??? จะ post code ยังไงดีหว่า

Wednesday, August 30, 2006

iReport Tutorial (1/5)

iReport 1.2.5
ปกติถ้าพูดถึง Crystal Report คงไม่มีใครในวงการ Software Development ที่ไม่รู้จัก แต่คราวนี้อยากจะแนะนำให้รู้จักโปรแกรมอีกตัวหนึ่งที่มีความสามารถไม่ได้ น้อยไปกว่า Crystal Report เลย แถมยังเป็น Open Source อีกด้วย
iReport Features
  • 100% pure java
  • Visual reporting
  • Retrive data using JDBC, TableModels, JavaBeans, XML, Hibernate, CSV
  • Create charts, images, subreport, barcode, crosstab
  • support output in PDF, RTF, XML, XLS, CSV, HTM
Download and Install
สามารถเข้าไป download ได้ที่ http://jasperforge.org/sf/projects/ireport
Require Java 1.4 or greater
หลังจาก Download มาแล้วก็การติดตั้งบน Windows ซึ่งไม่มีอะไรยุ่งยาก เลือก Option แล้วก็ Next จนเสร็จ


First Look
หลังจากทำการติดตั้งเสร็จ เมื่อเปิดโปรแกรมขึ้นมาก็จะเป็นดังรูป


Basic Concept
iReport เป็น Tool ที่ทำงานร่วมกับ Java Library สำหรับออก Report ชื่อว่า JasperReports โดยการทำงานของ JasperReorts จะเป็นดังนี้
  1. เขียน code ของ Report ให้เป็นตามรูปแบบที่กำหนดไว้ โดย Syntax จะเป็นแบบ XML
  2. Jasper Compiler จะทำแปลง XML file ออกมาเป็น Report ที่เป็น Jasper file
  3. JRDatasource จะเป็นส่วนสำหรับรับข้อมูลที่จะแสดงใน Report
  4. JasperReporting Engine จะทำการรวม Data จาก JRDatasource และ Jasper file แล้วแสดงผลออกไปเป็น Report


การแสดงผลของ Jasper สามารถแสดงได้หลายแบบได้แก่ HTML และ Swing หรือ Export ออกมาเป็น File แบบต่างๆได้แก่ PDF, Excel, RTF, CSV


iReport เป็น tool ที่มาช่วยให้สามารถทำงานกับ JasperReports ได้ง่ายขึ้น โดยจะช่วยสร้าง XML ที่จะเป็น Source Code ที่จะถูก Compile เป็น Jasper file แล้วนำไปใช้ออก report ต่อไป


เริ่มต้นสร้าง Report
เริ่มจากการสร้าง Report ง่ายๆกันก่อน

1. ไปที่ File->New Document จะมี Dialog ขึ้นมาให้เลือก ขนาดกระดาษและ option อื่นๆ ก็เลือก A4 ตามมาตรฐาน

2. จะเห็น Report ว่างๆขึ้นมา โดยจะแบ่งออกเป็นส่วนๆ ซึ่งถ้าใครเคยใช้ Crystal Report หรือ Tool ที่สำหรับสร้าง Report มาก่อนก็จะเข้าใจ (ถ้าไม่เข้าใจจะมีอธิบายต่อไป)

3. เลือก Element ที่ชื่อว่า Static Text (ตามรูป)

4. สร้าง Static Text ในส่วนของ Title จะเห็น properties ของ Text ที่ Element Properties ซึ่งเราสามารถจัด Format ได้ตามสะดวก หรือจะคลิ้กขวาแล้วเลือก Properties ก็ได้เหมือนกัน

5. ที่ Tab Font ปรับขนาด Font เป็น 36 ,จัดให้อยู่ตรงกลาง และที่ Tab Static Text เปลี่ยนเป็นคำว่า Hello iReport

6. เรียก Menu Build->Execute Empty Data Source ซึ่งโปรแกรมจะบังคับให้เรา Save ก่อน

7. Report จะแสดงออกมาใน Report Viewer

8. ถ้าต้องการให้ Report Export ออกมาในรูปแบบอื่นๆก็เลือกได้จาก Menu Build แล้วสั่ง Execute (File ที่ Export ออกมาปกติจะอยู่ใน Folder เดียวกับที่ Install iReort)

Tuesday, August 22, 2006

Test Category


Test Category

ASP Pull Service

น่าจะเป็นเรื่องหนึ่งที่จะเอาทำเป็น Service ได้ (แต่อาจจะฟรี)
อีกเรื่องที่นึกออก แต่น่าจะยากในการทำให้ยอมใช้ได้ยากคือเรื่อง Exam ถ้าทำแล้วจะมีใครใช้มั้ยหว่า

Sunday, August 20, 2006

สอบผ่านล่ะ 070-305

ได้กระดาษมาแผ่นหนึ่ง แล้วก็ความรู้สึกที่อยากจะเอา MCSD มาประดับนามบัตร

To be continue...

Friday, August 18, 2006

อ่านมันเข้าไป

อ่านเตรียมสอบ เซ็งจริงๆ

Thursday, August 17, 2006

JSF Trainning Course

เอามาจาก http://www.webagesolutions.com/training/java/wa1361/outline.html
1. Introduction to JavaServer Faces

  • What is JavaServer Faces (JSF)?
  • Why Use JSF?
  • Nature of a JSF Application
  • The Sun Reference Implementation (RI)
  • JSF and MVC
  • Faces Servlet
  • Managed Bean
  • The View
  • A Simple JSF Application
  • The Input Form: form.jsp
  • The Result: thanks.jsp
  • The Controller: AddressBean
  • Page Flow or Navigation Rule
  • How Does the Application Work?
  • Under the Covers: The Rendered Form HTML
  • Under the Covers: The Layout Tree

2. Managed Bean

  • What is a Managed Bean?
  • Why Do You Need Managed Beans?
  • Managed Bean As a Controller
  • Registering a Managed Bean
  • Lifecycle of a Managed Bean
  • Initializing a Managed Bean
  • What Scope to Use?
  • Value Binding
  • Property Data Conversion
  • Advanced Property Types
  • Component Binding
  • Other Binding Types
  • Basic Input Processing
  • Advanced Input Processing
  • JSF Expression Language
  • Language Basics
  • Use of Expression in JSF
  • Basic Expression
  • Property Access Expression
  • Map Access Expression
  • Complex Access Expression
  • Predefined Objects
  • Operators

3. User Interface Components

  • JSF UI Components
  • JSF Component Tag Libraries
  • Using the Tag Libraries
  • HTML Tag Library
  • HTML Tag Library…
  • Identifying Components
  • Component Identifier
  • Client Identifier
  • Form Input Field Names
  • Labels and Images
  • Create a Form
  • Buttons
  • Links
  • Adding Parameters to Links
  • Text Input
  • Simple Check Box
  • Check Box Group
  • Check Box Group Example
  • Radio Button
  • List Boxes
  • Dynamic List Box
  • Example
  • Another Example
  • JSF Core Library
  • JSF Core Library - Components
  • JSF Component Model
  • Base Class Hierarchy
  • Useful Base Classes
  • Useful HTML Classes

4. JSF Event Handling

  • Objectives
  • Request Processing Phases
  • Action Request Processing Phases
  • JSF Event & Listener Model…
  • JSF Event Classes
  • Event Classes
  • Event Classes: Hierarchy
  • Action Event Handling
  • Action Event: Example
  • Action Listener
  • Value Change Event
  • Value Change Event Handler
  • Listener Classes
  • Listener Interfaces
  • Listener Classes: Hierarchy
  • Action Listener Class
  • Value Change Listener Class
  • Phase Event Listener
  • Request Processing Lifecycle
  • Phase Identifiers

5. JSF Navigation

  • Objectives
  • JSF Navigation
  • Example Action Listener
  • faces-config.xml File
  • JSF Navigation
  • Navigation Rules: Example
  • Choosing Between Redirect & Direct Rendering
  • Navigation: Scenarios

6. Validation

  • Objectives
  • Introduction
  • Validation
  • Standard Validators
  • Checking for Required Values
  • Standard Validation Error Messages
  • Validation Process
  • Sequence Diagram
  • Immediate Components
  • Accessing User Input
  • Immediate Example

7. Advanced GUI Components

  • Objectives
  • HTML Panel
  • Applying Styles
  • Grouping Components
  • Data Table
  • Using a Data Table
  • Data Table Model
  • Using a Data Table
  • Displaying a Header and Footer Row
  • Applying Styles
  • Adding Links to a Row
  • Using Component Binding
  • Handling Action
  • Using the Data Table Model
  • Handling Action

8. JSF Techniques

  • A Typical Application
  • The Create Form
  • Create Action Method
  • Listing Items
  • Editing an Item
  • Adding the Edit Link
  • The Edit Form
  • Update Item
  • Things to Keep in Mind

9. Using Java Standard Template Library JSTL with JSF

  • Objectives
  • Introduction to JSTL
  • Using JSTL with JSF
  • The Tag
  • The Tag
  • The Tag
  • The Tag
  • International Text Display Tags

10. Custom Components

  • Custom Components
  • Requirements To Develop Custom Components
  • Packages Useful for Custom Component Developer
  • javax.faces.component.UIComponent
  • Decoding
  • javax.faces.component.UIComponent
  • UIComponentTag
  • Implementing Custom Component Tags
  • FacesContext
  • javax.faces.application.Application
  • javax.faces.context.ResponseWriter
  • javax.faces.component.UIComponent
  • javax.faces.component.EditableValueHolder
  • Tag Library: TLD
  • Faces configuration file: faces-config.xml
  • faces-config.xml
  • Sample.jsp: Example Showing the Relationship Between the JSF Artifacts
  • External Renderer
  • Render Defined in faces-config File
  • Implementing the Renderer
  • Event Listeners
  • Using ActionListener in JSP
  • ActionListener in the Java Code
  • ActionListeners in JSF
  • Create Input Form
  • Input Form (Code)
  • Update faces-config.xml
  • ActionEvent Handling
  • Summary

11. Data Conversion Model

  • Conversion Overview
  • Different Viewpoints of Data
  • Process of Conversion
  • Why Local Values?
  • Types of Standard Converters
  • Standard Converters with JSF
  • Three Ways to Use Standard Converters
  • Bind UI Component to Backing Bean Property
  • Use “converter” Attribute on the UI Component
  • Use Tag with ConverterId Attribute
  • Usage of Standard Converters
  • Output of Using Standard Converters
  • Converter Attribute
  • Standard Converters to Display Output
  • Standard Converters: Screen Shot
  • Conversion Errors
  • Displaying Error Messages
  • Conversion Tag
  • Conversion Error: Display
  • Conversion Error
  • Standard Validators
  • Validation Errors: Screen Shot
  • Standard Validators
  • Check Required Values
  • Custom Converter
  • Custom Converter
  • Custom Converter
  • Registering the Converter
  • Using the Registered Converter
  • Conversion Errors
  • Summary

Wednesday, August 16, 2006

Nidex ขั้นตอนการสร้าง Report Launcher

เนื่องจากการออก Report ด้วย JSF จะไม่สามารถทำ Popup Windows ขึ้นมาได้จึงจะต้องใช้ Servlet แทนโดยจะมี formReport เป็นตัวรับ Value จาก JSF Form และ Popup Report ขึ้นมา
  1. Copy ReportLaunch.jsp จาก Template
  2. กำหนด Parameter ที่จะส่งไปที่ Report ใน formReport
    1. มี Default Parameter ที่จะต้องส่งไปคือ name(report filename), bean (ReportFactoryClass),type ของ Report ที่จะแสดงผล
    2. แก้ value ของ name และ bean ให้เป็นของ report
  3. เปลี่ยน @controllerClass ไปเป็น controllerClass ที่สร้างไว้
  4. แก้ไข control ที่อยู่บน form ให้เป็นไปตาม parameter ที่จะส่งไป ReportFactory
  5. แก้ javascript ใน fucntion SubmitData ให้ formReport รับค่าจาก JSF form
    1. ถ้าใช้ tomahawk control และกำหนด forceId="true" ก็จะ map JSF Form ในรูปแบบนี้ formSelect.elements["selectWarehouse"].value
    2. ยกเว้น t:inputCalendar จะต้อง map แบบนี้ formSelect.elements["content:formSelect:DateTo"].value
  6. Copy ReportTemplController.java ไปเป็น Controller ที่ต้องการ
  7. Register Management Bean ใน faces-config.xml
  8. แก้ Controller ตาม TODO

Nidex Template Screen

Nidex Template Screen
  1. Entity Class
  2. Factory Class
  3. Report Launcher (JSF)
  4. Report Launcher Controller
  5. Single Table (JSF)
  6. Single Table Fix Column (JSF)
  7. Single Table Controller
  8. Master Data (JSF)
  9. Master Data Controller
  10. Select Data (JSF)
  11. Select Data Controller

Tuesday, August 15, 2006

Nidex ขั้นตอนการทำ Report Factory Class

ขั้นตอนการทำ Report Factory Class ของ Nidex
  1. Define member ที่จะใช้
  2. กำหนด Entity Class ให้กับ Constructor ของ Parent - Constructor
  3. สร้าง method getResultSet เพื่อถึง Data และส่งออกไป - getResultSet
  4. Map ResultSet Attribute เข้ากับ Entity Bean ที่สร้างไว้ - createBeanCollection
  5. สร้าง HeaderList เพื่อให้ Export Data ออกไปเป็น Raw Excel - ExportExcel
  6. Mapping Parameter from Servlet - setSearchCriteria
แค่นี้เอง

Nidex Improve coding speed

  1. สร้าง Code Template
    1. Controller Class Template
    2. Report Luncher Template
    3. DAO Template
    4. JSF Template
  2. Excel Code Generater

Monday, August 14, 2006

iReport Trainning Course Content

iReport Trainning Course Content
ส่วนหนึ่งมาจาก iReport Manual
  1. General Information of iReport
    1. What is iReport?
    2. The Main Features of iReport
  2. Installing iReport
  3. iReport and JasperReports Basic Concepts
    1. How JasperReports Works
    2. Compilation and Export of Reports
    3. Our First Very Simple Report
  4. Data Source Connection
    1. Database JDBC connection
    2. File CSV datasource
    3. JRDataSourceProvider
  5. Report Designer
    1. Object
    2. Formatting
    3. Bands and Groupping
  6. Working with JasperReport
    1. Java Rich Client
    2. JSP/Servlet
    3. JSF
(-_-) จะทำ Review Content แต่ดันเผลอทำ Trainning Course Content ซะงั้น

งานที่จะทำ้ใน CRT Lab

หลังจากลองๆเล่น Drupal อยู่ครึ่งวันก็รู้สึกว่า มันไม่ใช่งานที่สำคัญตอนนี้ งานที่สำคัญคือเนื้อหาของ Article ที่จะเอามาลง ซึ่งก็จะเป็นงานที่ถนัดกว่า
งานส่วนของการออกแบบ Web น่าให้ Web Designer ของ Office ทำดีกว่า

หัวข้อ Review ที่ตั้งใจจะทำ
1. iReport
2. Developer JSF with Eclipse and Exadel

Drupal Theme

มี link สอน Customize Theme ของ Drupal ที่
http://www.lullabot.com/articles/hacking_phptemplate

Sunday, August 13, 2006

ลองใช้ Drupal เพื่อจะเอาไปเป็น CMS ของ CRT Lab

ลองใช้ Drupal เพื่อจะเอาไปเป็น CMS ของ CRT Lab
ขั้นตอนการ Setup
  1. ถ้ายังไม่มี Web Server แนะนำ WAMP ตัวไม่เล็กไม่ใหญ่ ความต้องการครบครัน
  2. Download Drupal จาก Drupal
  3. ขั้นตอนการ Install
    1. สร้าง Database ใน mySql ด้วย phpmyadmin
    2. run sql จาก \drupal\database\database.4.1.mysql
    3. แก้ File drupal\sites\default\settings.php ให้ตรงกับ database ที่จะ connect
  4. เมื่อ Install แล้ว ก็สร้าง User ที่มีสิทธิเป็น admin ขึ้นมา
  5. การ setting ต่างๆจะอยู่ในส่วน admin
  6. การลง module ก็ download แล้ว copy folder ไปลงใน drupal\modules
  7. การลง theme ก็ download แล้ว copy folder ไปลงใน drupal\themes

สิ่งที่จะต้องทำในเพื่อให้เกิด CRT Lab Project

สิ่งที่จะต้องทำในเพื่อให้เกิด CRT Lab Project
1. วัตถุประสงค์
2. ประโยชน์ที่จะได้
3. Resource

รายละเอียดของแต่ละหัวข้อ

วัตถุประสงค์
  • เพื่อให้บุคคลในกลุ่มของนักศึกษาและคนทำงานในวงการ IT ได้รู้จักบริษัท CSI ผ่านทางการอ่าน Review ต่างๆที่ออกมา

ประโยชน์

  1. CSI จะเป็นที่รู้จักในวงกว้างขึ้น และจะการเป็นแหล่งข้อมูลอ้างอิงในต่อไป
  2. มีข้อมูลเพื่อช่วยในการเลือก Tool ที่จะทำมาใช้งานให้เหมาะสม
  3. ให้มี Knowledge ที่สร้างนำมาใช้งานได้
Resource
  1. ผู้รับผิดชอบ Project
  2. Content Management System ที่จะเป็นที่เผยแพร่บทความต่างๆ (Drupal)
  3. Web Hosting
  4. Domain Name
  5. Staff ที่จะเข้ามาเขียนบทความ
  6. ค่าบทความ ประมาณ 500 บาทต่อบทความ
  7. กลุ่มบรรณาธิการ

My AAA connect to FreeRadius !!!

Project ที่จะเขียน Web AAA ที่ติดต่อกับ FreeRadius ยังไม่ไปถึงไหนเลย มีเวลาแค่สิ้นเดือนเอง

Project ย่อยที่อยากทำใน CSI

มีงานที่อยากจะทำเพื่อให้ CSI มีความเป็นบริษัท IT ที่ครบเครื่องมากขึ้น
1. CRT Lab (CSI Review and Testing)
ไว้ทำการทดสอบการใช้งาน Tool, Library, Software, Hardware และเผยแพร่โดยผ่าน Internet โดยในช่วงแรกน่าจะื Review การใช้งาน Development Tool และ Library ต่างๆ ที่จะนำมาใช้งาน

2. Opensource Solution
ทีม AGSS ที่จะดูแลด้าน Hardware และ Network ซึ่งจะเป็น Product ของ Microsoft ทั้งหมด เนื่องจากขาดคนที่ทำพวก Linux หรือ OS อื่นๆที่เป็น Opensource น่าจะมีกลุ่มที่สามารถทำงานได้นี้ไว้

3. CodeFest
เป็นCoding มาราธอน ก็คือเขียนโปรแกรมกันทั้งวันทั้งคืน(เห็นเนคเทคเค้าจัดเลยอยากทำบ้าง) ซึ่งบ้างที่อาจจะไม่ต้องเป็นเรื่องใหม่ๆแต่จะเป็นงานที่ขนาดๆพอดีให้ได้ลองทำงานร่วมกันดู

4. ASP (Application Service Provider)
จริงๆเป็นเรื่องเก่าในวงการ IT แต่ในช่วงหลังนี้รู้สึกเริ่มเห็น Product ในแบบนี้เพิ่มขึ้นเรื่อยๆ (ที่เห็นชัดๆก็อย่าง E2OPEN ที่ HITACHI, Seagate ใช้ในการทำ Supplie Chain Management)

เริ่มกันอีกที่กับ Blogger...

รู้สึกมีอะไรหลายๆอย่างอยากบันทึกเก็บไว้ ไม่ว่าจะเรื่องงาน, เรื่องเพื่อน, เรื่องชีวิต ฯลฯ จริงๆก็ไม่ได้อยากให้มีใครมาอ่านหรอก แต่อยากมีที่เก็บที่จะอ่านได้ง่ายๆผ่าน net