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...

 

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..

Liburan di Kota Kealahiran

Untitled Document

Hari pertama aku sampai di Malang, aku masih belum begitu percaya. Apakah benar aku sudah berada di Malang?
Ketikka itu hari masih begitu pagi. Karena masih menunjukkan pukul 04.35 WIB. Sampai akhirnya aku merasakan
hawa sejuk, bahkan bisa di katakan dingin karena sudah terbiasa dengan hawa panas di depok. Aku sangat
merasa senang. Aku telah berada di kota kelahiran aku, yaitu Malang. Walaupun baru 2bulan meninggalkan kota
ini, tapi aku sudah sangat merindukannya. Hawa sejuknya, indah pemandangannya, makanan khasnya,
sampai orangnya yang ramah-tamah. Karena di depok sudah jarang di temukan suasana seperti ini. Sudah
begitu banyak polusi udara yang menyelimuti kota ini.

Lebih senangnya lagi, aku bertemu dengan dambaan hati yang selalu aku rindukan. Ibu ku. Aku sangat
merindukannya lebih dari apapun. Sampai-sampai air mataku pun menetes, saking kangennya. Begitu besar
pengorbanannya kepada aku. Sampai-sampai beliau menyiapkan kamar aku dengan bagus, rapi, bersih dan harum.
Baliau benar-benar menyempatkan waktu hanya demi kesenangan anaknya. Padahal aku tahu, betapa sibuknya
beliau dengan pekerjaanya. Terima kasih ibu. Engkau selalu memberikan yang terbaik untukku.

Sampai pada akhirnya malam takbiran pun tiba. Entah mengapa, hari ini juga bertepatan dengan hari ulang tahun ibu ku.
Sangat tepat. Semoga engkau selalu di berikan kemurahan hati, ketabahan dan kesabaran dalam menghadapi anak-
anakmu yang semakin hari juga semakin besar. Pasti sangat merepotkan mu ibu. Tapi aku berjanji. Suatu saat nanti
akan ku balas semua pengorbananmu kepada ku dan adikku. Agar kau selalu bahagia dan tersenyum. Maafkan aku ibu.
Karena di hari yang sangat menyenangkan ini, aku masih belum bisa memberikan apa-apa untukmu. Hanya doa yang selalu
ku panjatkan untuk semua kebahagiaanmu ibu. Happy Birthday ibu... Wish you all the best..

Hmmm....saatnya kita makan-makan. Untuk merayakan ulang tahun ibu ku, beliau mengajak kami sekeluarga
makan malam di selorejo. Yaitu makan ikan gurami dan ikan mujaer bakar. Hmm...yummy..sungguh nikmat rasanya.
Di samping merayakan ulang tahun ibu, juga merayakan tanda berakhirnya puasa ramadhan kami. Besok sudah hari
raya Idul Fitri. Betapa senangya hatiku hari itu. Merayakan malam takbiran sekaligus merayakan ulang tahun
ibu ku bersama keluarga. Seronok-seronok-seronok...

Hari raya Iduk Fitri pun tiba. Kami saling bersalam-salaman, sungkem, memohon ampun kepada Allah, meminta
maaf ke semua orang atas segala kesalahan yang telah kami perbuat, entah itu sengaja atau tak sengaja. Semoga semua
amal ibadah kita sebulan ini diterimaNya dan diberikan pengampunan olehNya.
Malamnya setelah kita berkunjung ke rumah saudara-saudara terdekat. Kami kembali bercengkrama di warung
sate ayam Madura di sebelah rumah kami. Sungguh senang hatiku. Karena inilah makanan yang selalu aku nantikan.

Esok harinya, aku ikut ibu ku ke selorejo. Membantunya berjualan ice cream disana. Walaupun agak mengecewakan,
karena pengunjung masih belum begitu banyak dan yang beli pun hanya beberapa. Tetapi aku sangat senang, karena
bisa membantu ibu ku tersayang. Selain itu yang membuatku sangat senang lagi adalah... Ibu ku membelikan ku
bakso. Sungguh bahagianya aku. Karena ini adalah makanan khas malang yang selalu saya rindukan . Bahkan bisa
dibilang kecanduan. Kalau di malang gak makan bakso akan menyesal selamanya. Asal anda tahu. Rasa bakso malang
sangat enak dan memuaskan. Tidak akan rugi jika beli bakso di malang. Betul-betul-betul...

Duwh, gak terasa hari ini adalah hari terakhir aku menginjakkan kaki di kota malang. Hari ini mau balik ke kota depok.
Kembali bekerja di meruvian camp. Begitu cepat waktu berlalu. Mengapa begitu cepat beranjak. Masih belum puas
rasanya berada di tanah air. Semoga perjalanan ku bersama teman-teman nanti berlalu dengan baik dan lancar.
Tak ada sesuatu hal yang membuat kita celaka. Semoga Allah meridhoi perjalanan kami. Amin.....


Class Entity dan Controller Cimande2

Untitled Document

Ketemu lagi dengan saya Arilia..
Hari ini saya akan melanjutkan blog saya yang kemarin dulu. Yaitu Jalannya Contoh program dgn Cimande2.
Kalau kemarin hanya tampiannya saja, hari ini akan mulai saya berikan contoh code source nya. Sama sperti Cimande1,
kita mulai dengan class entity. Yaitu Item.java

 

Item.java

package org.blueoxygen.rest.geneology;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Inheritance;
import javax.persistence.InheritanceType;
import javax.persistence.OneToOne;
import javax.persistence.Table;

import org.blueoxygen.cimande.DefaultPersistence;

@Entity
@Table
@Inheritance(strategy = InheritanceType.SINGLE_TABLE)
public class Item extends DefaultPersistence {
private String code, name, description;
private int price;
private Cate cate;

@OneToOne
public Cate getCate() {
return cate;
}

public void setCate(Cate cate) {
this.cate = cate;
}

@Column
public String getCode() {
return code;
}

public void setCode(String code) {
this.code = code;
}

@Column
public String getName() {
return name;
}

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

@Column
public String getDescription() {
return description;
}

public void setDescription(String description) {
this.description = description;
}

@Column
public int getPrice() {
return price;
}

public void setPrice(int price) {
this.price = price;
}

public void setCate(Item caten) {

}

}

 

Lalu setelah kita berikan class Item.java, kita lanjutkan dengan memberikan class ItemController.java

package org.blueoxygen.rest.geneology.action;

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

import org.apache.struts2.convention.annotation.Action;
import org.apache.struts2.convention.annotation.Result;
import org.apache.struts2.rest.HttpHeaders;
import org.blueoxygen.cimande.CimandeAction;
import org.blueoxygen.rest.geneology.Cate;
import org.blueoxygen.rest.geneology.Item;
import org.hibernate.Criteria;
import org.hibernate.criterion.Restrictions;

import com.opensymphony.xwork2.ModelDriven;

@Action(value = "item", results = { @Result(name = CimandeAction.SUCCESS, type = "redirect", location = "/item") })
public class ItemController extends CimandeAction implements
ModelDriven<Object> {

protected Item item = new Item();
protected List<Item> items = new ArrayList<Item>();
protected Cate cate = new Cate();
protected List<Cate> cates = new ArrayList<Cate>();

public HttpHeaders index() {
Criteria crit = session.createCriteria(Item.class);
String skey = request.getParameter("skey");
crit.add(Restrictions.like("code", "%" + (skey == null ? "" : skey)+ "%"));
items = crit.list();

return headers.renderResult("item/item-result").disableCaching();
}

public String editNew() {
item = new Item();

return "item/item-add";
}

public String delete() {
item = (Item) session.get(Item.class, id);

session.beginTransaction();
session.delete(item);
session.getTransaction().commit();

return SUCCESS;
}

public String edit() {
item = (Item) session.get(Item.class, id);

return "item/item-edit";
}

public String show() {
System.out.println(item.getId());
item = (Item) session.get(Item.class, id);

Item p = (Item) session.get(Item.class, id);
String hql = "FROM " + Item.class.getName() + "";

return "item/item-detail";
}

public String create() {
save(true);

return SUCCESS;
}

public String update() {
save(false);

return SUCCESS;
}

private void save(boolean create) {
Item temp = new Item();
if (create) {
temp = item;
temp.setId(null);
} else {

temp = (Item) session.get(Item.class, id);
temp.setCode(item.getCode());
temp.setName(item.getName());
temp.setDescription(item.getDescription());
temp.setPrice(item.getPrice());

}

session.beginTransaction();
session.save(temp);
session.getTransaction().commit();
}

public Object getModel() {
return items.size() > 0 ? items : item;
}

}

Class ini berguna untuk mengatur jalannya program. Jadi tidak perlu lagi class struts.xml
Karena sudah digantikan dengan code
@Action(value = "item", results = { @Result(name = CimandeAction.SUCCESS, type = "redirect", location = "/item") })
Ini digunakan untuk memudahkan menuliskan url dalam tampilan. Jadi url dalam Cimande2 lebih simple daripada Cimande1
dan lebih memudahkan kita membacanya.
Di dalam project ini terdapat sebuah package yang isinya berupa file-file viewer(.jsp) yaitu seperti /item/item-result (de el el),
itu merupakan tahapan yang akan di jalankan.