Jasper Report

Hay hay... Mau posting nii.. Hari ini saya mau posting cara untuk membuat jasper report. Seperti membuat report
di microsoft access. Sudahlah tak usah berbelit-belit.. Langsung saja saya perlihatkan source code nya.
Anda harus membuat class MyIo terlebih dahulu.

package id.go.kemenkeu.simple.kwitansi.action;

import java.io.File;
import java.io.IOException;
import java.net.URL;
import java.security.CodeSource;
import java.security.ProtectionDomain;

import org.blueoxygen.cimande.CimandeAction;

public class MyIo extends CimandeAction{
public static File getBaseFolder() throws IOException {
ProtectionDomain domain = MyIo.class.getProtectionDomain();
CodeSource source = domain.getCodeSource();
URL url = source.getLocation();

if (!"file".equals(url.getProtocol())){
throw new IOException("Code source location not a file:" + url);
}

String path = url.getPath().replaceAll(" ", " ");
return (new File(path.substring(0, path.lastIndexOf("/WEB-INF/"))));
}

}

Setelah itu anda buat class cetak. Class ini menentukan mau disimpan dalam bentuk apakah report anda nanti.
Apakah berbentuk .pdf atau .odt. Untuk contoh saya akan berikan untuk yang mencetak .pdf.

package id.go.kemenkeu.simple.kwitansi.action;

import java.io.File;
import java.io.OutputStream;
import java.sql.Connection;
import java.sql.DriverManager;
import java.util.HashMap;

import javax.swing.JOptionPane;

import net.sf.jasperreports.engine.JRExporterParameter;
import net.sf.jasperreports.engine.JasperFillManager;
import net.sf.jasperreports.engine.JasperPrint;
import net.sf.jasperreports.engine.JasperReport;
import net.sf.jasperreports.engine.export.JRPdfExporter;
import net.sf.jasperreports.engine.util.JRLoader;
import net.sf.jasperreports.view.JasperViewer;

import org.blueoxygen.cimande.CimandeAction;

public class Cetak extends CimandeAction{
String id;
public String execute() {

try {
String outPath = MyIo.getBaseFolder().getPath();
File file = new File(outPath + "/folderJasper/" + "kwitansi"
+ ".jasper");

/*
* Buat koneksi yang sama seperti pada report
*/

String url = "jdbc:mysql://localhost:3306/keuLagi";
Class.forName("com.mysql.jdbc.Driver");
Connection con = DriverManager.getConnection(url, "root", "");
// Connection con = datasource.getConnection();

if (con != null) {

System.out.println("koneksi " + con);
} else {
System.out.print("tidak konek");
}

HashMap parameters=new HashMap();
parameters.put("ID", id);





JasperReport jasperReport = (JasperReport) JRLoader
.loadObject(file);
JasperPrint jasperPrint = JasperFillManager.fillReport(
jasperReport, parameters, con);
JasperViewer.viewReport(jasperPrint, false);

OutputStream outputStream = null;

JRLoader.loadObject(file);
JRPdfExporter pdfExporter = new JRPdfExporter();
pdfExporter.setParameter(JRExporterParameter.JASPER_PRINT,
jasperPrint);
pdfExporter.setParameter(JRExporterParameter.OUTPUT_FILE_NAME,
outPath + "/pdf/" + "kwitansi" + ".pdf");

System.out.println("Exporting report...");
System.out.println("Xls report Done!");
pdfExporter.exportReport();
System.out.println("Done!");
System.out.println("Html Report Done");

} catch (Exception e) {
String connectMsg = "Could not create the report " + e.getMessage()
+ " " + e.getLocalizedMessage();
System.out.println("\n" + "\n" + connectMsg);
return ERROR;
}

return SUCCESS;
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}

}

O iya maaf. Saya lupa. Sebelum anda memberikan source code yang tadi, anda harus mempunyai IReport.
Ini digunakan untuk mendesign report yang akan anda tampilkan.

Selamat Mencoba...

 

Date???

Gimana caranya yaa menampilkan kalender di dalam program lebih dari satu??
Ternyata mudah..
Saya sudah coba dan ini source code nya..

<html>
<head>
<title>Project Activity</title>
<link type="text/css" rel="stylesheet" href="#surl("value=/style.css")"/>
<style type="text/css">@import url("style.css");</style>
<link rel="stylesheet" type="text/css" media="all" href="../../jscalendar-1.0/calendar-win2k-cold-2.css" title="win2k-cold-1" />
<script type="text/javascript" src="../../jscalendar-1.0/calendar.js"></script>
<script type="text/javascript" src="../../jscalendar-1.0/lang/calendar-en.js"></script>
<script type="text/javascript" src="../../jscalendar-1.0/calendar-setup.js"></script>
</head>
<body>
<link rel="stylesheet" href='../../css/jscalendar-1.0/calendar-djkn-simple2008.css' type="text/css">
<link rel="stylesheet" href='../../css/jstabs.css' type="text/css">
<link rel="stylesheet" href='../../css/form.css' type="text/css">
<link rel="stylesheet" href='../../css/menu.css' type="text/css">
<script src="../../jscript/simple_ajax.js"></script>
<script src="../../jscript/jscalendar-1.0/calendar.js"></script>
<script src="../../jscript/jscalendar-1.0/lang/calendar-ina.js"></script>
<script src="../../jscript/jscalendar-1.0/calendar-setup.js"></script>
<script src="../../jscript/jstabs.js"></script>
<script src="../../jscript/currency.js"></script>
<script src="../../jscript/prototype.js"></script>
<script src="../../jscript/rico.js"></script>
<script>
function calendarSetup(textFieldID,btnID) {
Calendar.setup ({inputField:textFieldID,ifFormat:"%d-%m-%Y",button:btnID});
}
function genRandom(){
var dt = new Date();
var result = Math.floor(Math.random( ) * (dt.getTime()));
return result;
}
function enlargeScreen(){

}
function normalScreen(){
}
</script>

<style type="text/css">
<!--
.style9 {
font-size: 14px;
font-family: Arial, Helvetica, sans-serif;
}
.style10 {font-size: 12px}
.style11 {font-family: Arial, Helvetica, sans-serif}
-->
</style>
<form method="post" action="save.action">
<table width="100%" border="0" cellpadding="2" cellspacing="2" bgcolor="#d0dcff">
<tr bgcolor="#d0dcff">
<td colspan="2" bgcolor="#d0dcff">
<img src="../../images/silk/wrench.png" border="0">&nbsp;
<strong>Add Project</strong>
</td>
</tr>
<tr bgcolor="#ffffff">
<td height="427" colspan="2" bgcolor="#FFFFFF">
<table width="100%" border="0">
<tr>
<td colspan="4">
#if (!$actionErrors.isEmpty())
<div class="errorMessage">Errors</div>
<ul class="errorMessage">
#foreach( $error in $actionErrors )
<li>$error</li>
#end
</ul>
#end
</td>
</tr>
<tr>
<td width="14%">
<div align="right"><strong><font color="red">*</font> Assigner : </strong></div>
</td>
<td colspan="3">
<input name="textfield" type="textfield" id="userName" onfocus="this.blur()" value="$!project.assigner.username" size="15" readonly="true" />
<input id="userId" name="userId" value="$!project.assigner.id" type="hidden">
<input value="View" onclick="javascript:window.open('listuser.action?name=user','cats','scrollbars=yes,status=no,width=300,height=300')" type="button"> </td>
</tr>
<tr>
<td>
<div align="right"><strong><font color="red">*</font> Name : </strong></div>
</td>
<td colspan="3">
<input maxlength="128" name="project.name" size="30" value="$!project.name">
</td>
</tr>
<tr>
<td>
<div align="right"><strong><font color="red">*</font> Description : </strong></div>
</td>
<td colspan="3">
<input maxlength="128" name="project.description" size="30" value="$!project.description">
</td>
</tr>
<tr>
<td>
<div align="right"><strong><font color="red">*</font> Manager : </strong></div>
</td>
<td colspan="3">
<input id="managerName" value="$!project.manager.username" size="15" readonly="true" onfocus="this.blur()" type="textfield">
<input id="managerId" name="managerId" value="$!project.manager.id" type="hidden">
<input value="View" onclick="javascript:window.open('listuser.action?name=manager','cats','scrollbars=yes,status=no,width=300,height=300')" type="button">
</td>
</tr>
<tr>
<td>
<div align="right"><strong><font color="red">*</font> Company : </strong></div>
</td>
<td colspan="3">
<input id="perusahaanName" value="$!project.company.name" size="15" readonly="true" onfocus="this.blur()" type="textfield">
<input id="companyId" name="companyId" value="$!project.company.id" type="hidden">
<input value="View" onclick="javascript:window.open('listcompany.action','cats','scrollbars=yes,status=no,width=300,height=300')" type="button"> </td>
</tr>
<tr>
<td>
<div align="right"><strong>Code : </strong></div>
</td>
<td colspan="3">
<input maxlength="12" name="project.code" size="30" value="$!project.code">
</td>
</tr>
<tr>
<td>
<div align="right"><strong>Background : </strong></div></td>
<td colspan="3">
<textarea rows="2" name="project.background" cols="50">$!project.background</textarea>
</td>
</tr>
<tr>
<td>
<div align="right"><strong>Objective :</strong></div>
</td>
<td colspan="3">
<input maxlength="128" name="project.objective" size="30" value="$!project.objective">
</td>
</tr>
<tr>
<td>
<div align="right"><strong>Start Date : </strong></div>
</td>
<td colspan="3">
<input type="text" name="project.startDate" value="$!project.startDate" size="15" id="f_date_a" readonly="1">
<img src="../../images/img.gif" id="f_trigger_a" style="cursor: pointer; border: 1px solid red;" title="Start Date" onmouseover="this.style.background='red';" onmouseout="this.style.background=''"/>
</td>
</tr>
<tr>
<td>
<div align="right"><strong>Finish Date :</strong></div>
</td>
<td colspan="3">
<input type="text" name="project.finishDate" value="$!project.finishDate" size="15" id="f_date_b" readonly="1">
<img src="../../images/img.gif" id="f_trigger_b" style="cursor: pointer; border: 1px solid red;" title="Finish Date" onmouseover="this.style.background='red';" onmouseout="this.style.background=''"/>
</td>
</tr>
<tr>
<td>
<div align="right"><strong>Priority :</strong></div>
</td>
<td colspan="3">
<input maxlength="28" name="project.priority" size="30" value="$!project.priority"></td>
</tr>
<tr>
<td>
<div align="right"><strong>Progres : </strong></div></td>
<td colspan="3">
<input name="project.progressPresentage" size="4" value="$!project.progressPresentage"> %</td>
</tr>
<tr>
<td>
<div align="right"><strong>Critical Project :</strong></div>
</td>
<td colspan="3">
<input name="project.criticalProject" value="1" type="radio"> Yes
<input name="project.criticalProject" value="0" type="radio"> No</td>
</tr>
<tr>
<td>
<div align="right"><strong>Project Notes : </strong></div>
</td>
<td colspan="3"><textarea rows="2" name="project.projectNotes" cols="50">$!project.projectNotes</textarea></td>
</tr>
<tr>
<td>
<div align="right"><strong>Project Parent :</strong></div>
</td>
<td colspan="3">
<input id="projectName" value="$!project.iparent" size="15" readonly="true" onfocus="this.blur()" type="textfield">
<input id="projectId" name="projectId" value="$!project.iparent" type="hidden">
<input value="View" onclick="javascript:window.open('listproject.action','cats','scrollbars=yes,status=no,width=300,height=300')" type="button"></td>
</tr>
<tr>
<td>
<div align="right"><strong>Status :</strong></div>
</td>
<td colspan="3">
<select name="project.projectStatus">
<option value="0"> Uncomplete </option>
</select>
</td>
</tr>
<tr>
<td>
<div align="right"><strong>Category : </strong></div>
</td>
<td colspan="3">
<select name="projectCategory.id">
#foreach($c in $projectCategories)
<option value="$!c.id" #if($c.id == $!project.projectCategory.id) selected #end>
$!c.description
</option>
#end
</select>
</td>
</tr>
<tr>
<td>
<div align="right"><strong>Priority Type :</strong></div>
</td>
<td colspan="3">
<select name="projectPriorityType.id">
#foreach($p in $projectPriorityTypes)
<option value="$!p.id" #if($p.id == $!project.projectPriorityType.id) selected #end>
$!p.name
</option>
#end
</select>
</td>
</tr>
<tr>
<td>&nbsp;</td>
<td width="44%">&nbsp;</td>
<td width="5%">&nbsp;</td>
<td width="37%">&nbsp;</td>
</tr>
<tr>
<td colspan="4">
<font color="red">*</font> <i>Not Null </i>
</td>
</tr>
</table>
<hr />
<input type="submit" value="Update"/>
<input type="hidden" name="project.id" value="$!project.id"/>
</td>
</tr>
</table>
</form>
<script type="text/javascript">
Calendar.setup({
inputField : "f_date_a", // id of the input field
ifFormat : "%d/%m/%Y", // format of the input field
showsTime : false, // will display a time selector
button : "f_trigger_a", // trigger for the calendar (button ID)
singleClick : true, // double-click mode
step : 1 // show all years in drop-down boxes (instead of every other year as default)
});
</script>
<script type="text/javascript">
Calendar.setup({
inputField : "f_date_b", // id of the input field
ifFormat : "%d/%m/%Y", // format of the input field
showsTime : false, // will display a time selector
button : "f_trigger_b", // trigger for the calendar (button ID)
singleClick : true, // double-click mode
step : 1 // show all years in drop-down boxes (instead of every other year as default)
});
</script>
<script>
calendarSetup("f_date_a","f_trigger_a");
calendarSetup("f_date_b","f_trigger_b");
</script>
</body>
</html>


button

Ketika di klik button merah itu akan keluar gambar kalender seperti di bawah ini
tgl1

tgl2

Dan hasilnya seperti ini..
hasil

Selamat mencoba...

Nomor Urut

Nomor Urut A'oOo..... Dah lama gak posting. Hhu.... ;(
Mau posting apa yah??? Jadi lupa..
O ia.. Setelah aku mengerjakan project Blueoxygen Ramen kemarin, aku ngerjain project
dari Departemen Keuangan. Pertama saya kaget. Padahal Ramen masih belum selesai
seutuhnya. Tapi ya sudahlah.. Sudah di percaya kok,, masa' gak mau..
Gara-gara kerjaan ini aku jadi dapet tambahan ilmu.. Yaitu cara nampilin nomor secara otomatis
ada dan langsung urut.
Ini nih codingannya..

package com.depkeu.simple.kwitansi.action;

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

import org.blueoxygen.cimande.CimandeAction;
import org.blueoxygen.cimande.persistence.PersistenceManager;
import org.blueoxygen.cimande.persistence.hibernate.HibernateSessionFactory;
import org.blueoxygen.cimande.persistence.hibernate.HibernateSessionFactoryAware;
import org.blueoxygen.cimande.security.SessionCredentials;
import org.hibernate.Criteria;
import org.hibernate.Session;
import org.hibernate.criterion.Projections;

import com.depkeu.simple.entity.Kwitansi;
import com.depkeu.simple.entity.KwitansiHasilBersihLelang;

public class FormKwi extends CimandeAction{
protected PersistenceManager manager;
protected SessionCredentials sessionCredentials;
private Kwitansi kwitansi= new Kwitansi();
private List<Kwitansi> kwitansis = new ArrayList<Kwitansi>();
protected HibernateSessionFactory hsf;
protected Session sess;

protected int no=0;

public String execute() {
sess=hsf.createSession();
Criteria crit=hsf.createSession().createCriteria(Kwitansi.class);
crit.setProjection(Projections.rowCount());
no=Integer.parseInt(crit.uniqueResult().toString());
no=no+1;

if (getKwitansi().getId() != null
&& !"".equalsIgnoreCase(getKwitansi().getId().trim())) {
setKwitansi((Kwitansi) manager.getById(Kwitansi.class, getKwitansi().getId()));
}
return SUCCESS;
}

public void setPersistenceManager(PersistenceManager persistenceManager) {
this.manager = persistenceManager;
}

public void setSessionCredentials(SessionCredentials sessionCredentials) {
this.sessionCredentials = sessionCredentials;
}

public Kwitansi getKwitansi() {
return kwitansi;
}

public void setKwitansi(Kwitansi kwitansi) {
this.kwitansi = kwitansi;
}

public List<Kwitansi> getKwitansis() {
return kwitansis;
}

public void setKwitansis(List<Kwitansi> kwitansis) {
this.kwitansis = kwitansis;
}

public PersistenceManager getManager() {
return manager;
}

public void setManager(PersistenceManager manager) {
this.manager = manager;
}

public HibernateSessionFactory getHsf() {
return hsf;
}

public void setHsf(HibernateSessionFactory hsf) {
this.hsf = hsf;
}

public Session getSess() {
return sess;
}

public void setSess(Session sess) {
this.sess = sess;
}

public int getNo() {
return no;
}

public void setNo(int no) {
this.no = no;
}

public SessionCredentials getSessionCredentials() {
return sessionCredentials;
}

}


Nah, code ini dituliskan di class Save.java.
Code ini berguna untuk mengenerate nomor yang akan di tampilkan pada form secara urut.
Ini aja dulu yah..
Semoga bermanfaat..