Kamis, 08 September 2011

JasperREpoRT

Sebuah tool yang sangat powerful untuk membuat laporan dalam bentuk PDF, HTML, XLS, RTF, ODT, CSV, TXT, dan XML. Program ini mulai dikembangkan pada tahun 2001 oleh Teodor Danciu setelah pada peluncurannya pada tahun itu sampai sekarang tool ini menjadi sangat populer. Sehingga pada search engine muncul paling awal dibanding dengan yang lainnya. Kemudian pada tahun 2005 muncul perusahaan JasperReport yang pengembangannya didukung oleh beberapa pengembang software, dan menyediakan juga beberapa aplikasi tambahan yang bersifat commercial.

JasperReports adalah reporting engine yang powerfull dari komunitas open source. JasperReports dapat dihasilkan dari desain laporan berbentuk XML yang mudah untuk dimengerti. JasperReports mempunyai kemampuan untuk menghasilkan output laporan dalam beberapa format: CSV, Excel, HTML, dan PDF.

Library yang dibutuhkan
Library JasperReports adalah dalam bentuk file .jar, versi terbaru adalah 1.2.8. JasperReports bergantung pada file library yang (dalam bentuk .jar pula) seperti:
  • BeanShell
  • Commons BeanUtils
  • Commons Collections
  • Commons Digester
  • Commons Logging
  • iText
  • POI
Disamping itu JasperReports juga membutuhkan XML parser yang cocok dengan JAXP. Semua library tersebut di atas bisa diperoleh dari paket download spring-framework-2.x-with-dependencies pada bagian/direktori /lib.
Beberapa hal penting yang perlu diperhatikan pada saat mengintegrasikan spring framework dengan jasperreports:
1. Konfigurasi pada file web.xml
Pastikan definisi servlet mapping membolehkan ekstensi-ekstensi format laporan (mis: .xls, .csv,.pdf). Contoh penulisan bagian web.xml pada masalah ini

<servlet-mapping>
<servlet-name>tes123</servlet-name>
<url-pattern>*.pdf</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>tes123</servlet-name>
<url-pattern>*.csv</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>tes123</servlet-name>
<url-pattern>*.xls</url-pattern>
</servlet-mapping>
Pada contoh di atas nama aplikasinya adalah tes123. Tambahkan definisi tersebut pada web.xml.
2. Konfigurasi pada file tes123-servlet.xml
(default applicationContext dari spring untuk proyek/aplikasi dengan nama tes123)

<!—Bagian 1. URL mapping -->
<bean id="urlMap" class="org.springframework.web.servlet.handler. SimpleUrlHandlerMapping">
<property name="urlMap">
<props>
<prop key="/penggunaReport.*"> penggunaReportController
</prop>
</props>
</property>
</bean>
<!—Bagian 2. Report Controller -->
<bean id="penggunaReportController" class="com.bening.patentapp.controller.PenggunaReportController">
<property name="methodNameResolver" ref="resolver"/>
</bean>
<bean id="resolver" class="org.springframework.web.servlet.mvc.multiaction. PropertiesMethodNameResolver">
<property name="mappings">
<props>
<prop key="/penggunaReport.*">viewReport</prop>
</props>
</property>
</bean>
<bean id="reportViewResolver" class="org.springframework.web.servlet.view. ResourceBundleViewResolver">
<property name="order" value="1"/>
</bean>
Penjelasan:
Bagian 1. URL Mapping
Alamat web dari laporan yang bisa diakses adalah /penggunaReport.* relatif terhadap aplikasinya (misal untuk kasus di atas adalah http://localhost:8080/tes123/penggunaReport.pdf). Tanda * menunjukkan bahwa format laporan bisa lebih dari satu (.html, .pdf, .xls, .csv). Bagaimana laporan ini ditampilkan dan apa isinya diatur dalam definisi bean penggunaReportController yang akan dijelaskan berikutnya.
Bagian 2. Report Controller
Definisi bean penggunaReportController tidak lain adalah mengacu pada class controller PenggunaReportController, secara lengkapnya akan dijelaskan pada bagian selanjutnya.
Definisi bean reportViewResolver berpengaruh pada konfigurasi class-class view yang akan digunakan. Definisi bean ini membutuhkan file views.properties.
3. Kode program class java PenggunaReportController
Class PenggunaReportController mengatur tampilan laporan beserta format yang dipilih:
public class PenggunaReportController extends MultiActionController {
private Log log = LogFactory.getLog(PenggunaReportController.class);
/**
* Determine the view format (html, pdf, csv, xls) from the
* extension the view will bind the datasource.
*/
public ModelAndView viewReport(HttpServletRequest request,
HttpServletResponse response)
throws Exception {
String uri = request.getRequestURI();
String format = "html";
try {
format = uri.substring(uri.lastIndexOf(".") + 1);
} catch (IndexOutOfBoundsException e) {
// ignore - html format will be used
}
log.debug("using format: " + format);
Map model = new HashMap();
model.put("format", format);
return new ModelAndView("reportView", model);
}
}
Kode program di atas menunjukkan bahwa laporan akan bisa ditampilkan dalam format .pdf, .xls, .csv, .html sesuai dengan ekstensi file yang tertera pada alamat webnya.
Class PenggunaReportController harus merupakan turunan (sub class) dari Class MultiActionController agar bisa menampilkan laporan dalam multiformat.
Sedangkan method/fungsi viewReport berhubungan dengan penjelasan bagian 2. pada definisi bean resolver di atas. Artinya alamat relatif /penggunaReport.* akan ditangani oleh fungsi viewReport ini. Fungsi viewReport akan mengarahkan laporan yang akan dihasilkan pada parameter “reportView”. Definisi laporan dengan parameter “reportView” tersebut diatas diatur dalam file views.properties yang akan dijelaskan lebih lanjut pada keterangan poin 4.
4. Konfigurasi pada file views.properties
Sebagaimana disebutkan sebelumnya bahwa file views.properties berisi definisi class-class view yang digunakan oleh laporan penggunaReport.
reportView.class=org.springframework.web.servlet.view.jasperreports.JasperReportsMultiFormatView
reportView.url=/WEB-INF/reports/pengguna.jrxml
reportView.jdbcDataSource(ref)=dataSource
Penjelasan:
Class reportView mengacu pada JasperReportsMultiFormatView dari paket integrasi spring dan jasperreports. Laporan yang akan ditampilkan adalah sesuai dengan desain pengguna.jrxml yang tentunya telah dipersiapkan sebelumnya, baik dengan menggunakan alat bantu editor teks/XML ataupun report designer seperti iReport. File tersebut terletak pada direktori /WEB-INF/reports. Spring Framework akan secara otomatis meng-compile file pengguna.jrxml ke dalam bentuk file binary pengguna.jasper. Data Source laporan ini mengacu pada definisi bean datasource yang berisi informasi koneksi ke database

0 komentar:

Posting Komentar

Template by:

Free Blog Templates