Problema com TimeStamp e Date.( JSP )

Galera estou com um grande problema, estou desenvolvendo uma tela onde tem uma combo, que busca informações no banco de dados Postgres II e o usuário seleciona a opção e ela gera um PDF com as informações.

1 - Como iriei converter as informações do banco para PDF ? Seria com iReport ?
2 - uma das informações que é exibida na comboBox é do tipo TimeStamp, a coluna da tabela que é desse tipo, eu nunca ouvir falar nisso, no caso eu tinha criado um bean com os atributos e coloquei a data como Date e tive problemas, agora coloquei ela como TimeStamp mais está pegando informação diferente, a hora fica atrasada ou adiantada. Teriam como me ajudar em uma solução para isso, se SimpleDateFormat iria solucionar esse problema e como faria ?

Ela é exibida assim yyyy-MM-dd HH:mm:ss.um numero que não sei o que é.Eu quero que seja assim
Eu quero que fique assim dd/MM/yyyy HH:MM

[code]
Essa é a classe Bean.

public class PrintAnalysisBean {

private Timestamp dateGeneration; // Data da geração
private String codeBulletin;	//Codigo do Boletin  (SA_BOL) ex: 2012/001
private String codeSa;			//Codigo do SA		(SA_CON) ex:2001/025/012
private String acronym;			//sigla
private String nameClient;		//Nome do cliente


public Timestamp getDateGeneration() {
	return dateGeneration;
}
public void setDateGeneration(Timestamp Timestamp) {
	this.dateGeneration = Timestamp;
}
public String getCodeBulletin() {
	return codeBulletin;
}
public void setCodeBulletin(String codeBulletin) {
	this.codeBulletin = codeBulletin;
}
public String getCodeSa() {
	return codeSa;
}
public void setCodeSa(String codeSa) {
	this.codeSa = codeSa;
}
public String getAcronym() {
	return acronym;
}
public void setAcronym(String acronym) {
	this.acronym = acronym;
}
public String getNameClient() {
	return nameClient;
}
public void setNameClient(String nameClient) {
	this.nameClient = nameClient;
}

}[/code]

Essa é a DAO

[code]
public class AnalysisDAO {

private Connection connection;

public AnalysisDAO() throws SQLException, ClassNotFoundException{
	
	this.connection = new ConnectionFactory().getConnection();
}

public List<PrintAnalysisBean> getComboBox(){
	
	try{
		
		
		String sql = "SELECT Sa_Dba, Sa_Bol, Sa_Con, Con_Sigla, Cli_Nome FROM Sa,Contratos,Clientes ";
		sql = sql +	"WHERE (SUBSTR(Sa_Con,1,4)='2011' OR SUBSTR(Sa_Con,1,4)='2012') AND";
		sql = sql +	" (SUBSTR(Sa_Con,1,8)=Con_Codigo) AND Sa_Sit=4  AND Con_Resp=Cli_Logon ";
		sql = sql +	"ORDER BY Sa_Dba DESC,Sa_Bol;";
		
		
		
	List<PrintAnalysisBean> print = new ArrayList<PrintAnalysisBean>();
	PreparedStatement stmt = this.connection.prepareStatement(sql);
	ResultSet rs = stmt.executeQuery();
	
	
	
	while(rs.next()){
		
		PrintAnalysisBean bean = new PrintAnalysisBean();
		

		bean.setDateGeneration(rs.getTimestamp("sa_dba")); //data 
		bean.setCodeBulletin(rs.getString("sa_bol")); //Codigo do Boletin
		bean.setCodeSa(rs.getString("sa_con")); //Codigo SA
		bean.setAcronym(rs.getString("con_Sigla"));  //Sigla
		bean.setNameClient(rs.getString("cli_nome"));// nome do cliente
		
		
		
		print.add(bean);
		
	}
	
	rs.close();
	stmt.close();	
	
	return print;
	
	}catch(SQLException e){
		throw new RuntimeException(e);
	}
	
}

} [/code]

Arquivo JSP ainda preciso melhorar o gráfico. ( JSP )

<%@page import="org.apache.tomcat.util.buf.TimeStamp"%>
<%@page import="java.sql.Timestamp"%>
<%@page import="java.sql.PreparedStatement"%>
<%@page import="java.beans.Statement"%>
<%@page import="java.sql.DriverManager"%>
<%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%>
<%@ page import="java.sql.ResultSet" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<%@ page import="java.util.*, br.com.sein.dao.AnalysisDAO, br.com.sein.bean.PrintAnalysisBean, java.text.SimpleDateFormat" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt" %>




<jsp:useBean id="a" class="br.com.sein.dao.AnalysisDAO" />
 
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>CETEM - Centro de Tecnologia Mineral / Intranet</title>
</head>
<body>
	
	<c:import url="cabecalho.jsp" />
	
	<br />
	
	
	
	<table  align="center"  style="background-color:#27408B;" border="10">
	
	<tr>
	
		<td  align="center" bgloclor="white" ><h4><a style="color:#FFD700">Boletins / Impressão de Boletins de Análise</h4>
		<input type="submit" value="Gerar Relatório" name="bottonSca"/></td>
		
		
	</tr>

	<tr>
	
	<td><h5><a style="color:white;"><b>Boletins:</b> (Data de Geração, Código do Boletim, Código da SA, Sigla do Projeto e Nome do Cliente) *</a></h5>
	
	
	<select name="printAnalysis">
		<% 
			AnalysisDAO dao = new AnalysisDAO();
		
			List<PrintAnalysisBean> bean = dao.getComboBox();
			
			
				
			for(PrintAnalysisBean analysisBean: bean){
		%> 
				<option value="selecione um valor">
				<% 
				
					out.print(analysisBean.getDateGeneration() + "  :  " + analysisBean.getCodeBulletin() + "  :  " + analysisBean.getCodeSa() + "  :  "
						+ analysisBean.getAcronym() + "  :  " + analysisBean.getNameClient()  );
						
				 %>
					
				
							
				 </option>
			
		<%
		}
		
		
		%>
		
	</select>
	
  

			
		
	
	
	
	</table>
	
	<c:import url="rodape.jsp"></c:import>
</body>
</html>

Aguardo uma ajuda, já agradeço desde já.

1 - Pode gerar utilizando iReport ou iText (que gera diretamente o PDF, mais complicado de mexer).
2 - Use Calendar ou Date mesmo.
O que está ocorrendo é algum problema na conversão, por isso a perda de precisão.

P.S.: Camarada, o que é essa concatenação de String

String sql = "bla bla bla";
sql = sql + "ble ble ble";

Use StringBuffer

StringBuffer sql = new StringBuffer();
sql.append("bla bla bla");
sql.append("ble ble ble");
//codigo
PreparedStatement ps = con.prepareStatement(sql.toString());
//continua

Sim sim, essa concatenação eu já ia resolver para StringBuffer mesmo, agora preciso entender o porque dessa data está assim, sera que SimpleDateFormat resolve o problema ?

Primeiro, você só precisará converter quando for exibir a data.
Quando for persistir, usando PreparedStatement, pode se valer do setDate, que recebe como argumento um java.sql.Date, mais ou menos assim

ps.setDate(x, new java.sql.Date(campoData.getTime());

E, sendo timestamp, pode usar o

ps.setTimestamp(x, new java.sql.Timestamp(campoData.getTime()));

E como usa JSTL na jsp, não precisa usar SimpleDateFormat