Izveštaji u java aplikacijama Šta je jasperreports Open source java biblioteka za renderovanje sadrzaja Formira dokumente od podataka, i omogućava njihov prikaz i eksport Izvori podataka: baze podataka, XML, csv, java beanovi … Prikaz izveštaja: jasperov prikaz, SWT preview, pdf, html, csv ... Kako Formiranje dizajna izveštaja pravljenjem report template-a (.jrxml) Formiranje izvora podataka i upita koji se izvršava nad njim Kompajliranje izveštaja (.jasper) Punjenje izveštaja podacima (.jprint) Prikazivanje izveštaja (preview, .pdf, .html...) s Šta je potrebno jasperreports-x.z.jar (http://jasperforge.org/projects/jasperreports) Java virtuelna mašina (jre 1.3 ili više) Java kompajler (jdk 1.3 ili više) Xml parser (JAXP 1.1) Jakarta commons pomoćne biblioteke: Javaflow, Digester, BeanUtils, Collections, Logging (http://commons.apache.org) I još ... IDE okruženje (Eclipse, NetBeans ...) Jasperreports grafički editor: Jasper Assistant (http://www.jasperassistant.com/) Ireport (http://jasperforge.org/projects/ireport) JDBC (ako se radi s SQL-om) IText za pdf (http://www.lowagie.com/iText) JfreeChart (http://www.jfree.org/jfreechart) Formiranje dizajna izveštaja Dizajn izveštaja ima xml strukturu Grafički i logički elementi izveštaja su xml elementi Osobine elemenata su xml atributi <?xml version="1.0" encoding="UTF-8"?> <jasperReport xmlns="http://jasperreports.sourceforge.net/jasperreports" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://jasperreports.sourceforge.net/jasperreports http://jasperreports.sourceforge.net/xsd/jasperreport.xsd" name="filmovi" pageWidth="595" pageHeight="842"...> <queryString> upit <![CDATA[SELECT naziv P_NAZIV, godina P_GODINA FROM filmovi ORDER BY 1]]> </queryString> <field name="P_NAZIV" class="java.lang.String"/> Parametri, polja, promenljive .... <pageHeader> .... </pageHeader> <detail> <band height="33"> <textField hyperlinkType="None"> <reportElement positionType="Float" x="2" y="7" width="277" height="15"/> <textElement> <font fontName="Arial"/> </textElement> <textFieldExpression class="java.lang.String"><![CDATA[$F{P_NAZIV}]]></textFieldExpression> </textField> .... </band> </detail> <pageFooter> .... </pageFooter> </jasperReport> Grafičke sekcije i elementi Root element <jasperReport> - opšte karakteristike <jasperReport ... pageWidth="595" pageHeight="842" columnWidth="511" leftMargin="42" ...> Atributi: name – ime izveštaja pageWidth, PageHeight – veličina isTitleNewPage – naziv na posebnoj strani resourceBundle – podrška za višejezičnost ... Izgled izveštaja Stilovi <style> – dobijanje izgleda grafičkih elemenata (boje, okviri, fontovi) koji se kasnije koriste kao atributi raznih elemenata Fontovi <font> – definisanje fontova (veličine, boje, tipa …) koji se kasnije koriste takođe u grafičkim elementima Upit Podaci <queryString> – dobijanje podataka iz baze <queryString><![CDATA[SELECT naziv P_NAZIV FROM filmovi></queryString> Parametri upit <parameter> – ulazni parametri za <parameter name="godina" class="java.lang.Integer"/> Polja <field>– dobijeni podaci iz upita <field name="P_NAZIV" class="java.lang.String"/> Promenljive <variable>– manipulacija parametrima i poljima, kao izrazi koji mogu biti napisani u Javi (Groovy, JavaScript …) <variable name="Tekst" class="java.lang.String"> <variableExpression><![CDATA["Naziv " + $F{P_NAZIV} ]]></variableExpression></variable> Sekcije izveštaja Title <title>– početna strana izveštaja Summary <summary>– rekapitulacija na poslednjoj strani Header, footer <pageHeader>, <pageFooter> – predstavljaju zaglavlje i dno strane Detalj <detail>– odgovara jednom redu podataka za izveštaj Grupe Grupisanje podataka na osnovu definisanog izraza, koji obično sadrži polja izveštaja Podaci treba da budu sortirani po tom polju Grupa <group>– root element grupe Sekcije grupe <groupHeader>, <groupFooter> – zaglavlje i dno grupe Grupe su medjusobno ugnježdene, oko detalja Prikazni tekst elementi Labele <staticText> - nepromenljivi izrazi Tekst polja <textField> - java izrazi od podataka tj parametara, polja, varijabli <textField hyperlinkType="None"> <reportElement positionType="Float" x="2" y="7" width="277" height="15"/> <textElement> <font fontName="Arial"/> </textElement> <textFieldExpression class="java.lang.String"><![CDATA[$F{P_NAZIV}]]></textFieldExpression> </textField> Neke osobine tekst elemenata Kada se radi evaluacija evaluationTime Dinamičko povećanje isStretchWithOverflow Ne prikazuj null isBlankWhenNull Formatiranje pattern Ne štampaj uvek printWhenExpression Pozicija, veličina, margine, okvir, font ... Linija Grafički elementi <line> <line> <reportElement positionType="Float" x="0" y="0" width="511" height="1" isPrintWhenDetailOverflows="true" backcolor="#000000"/> <graphicElement><pen lineWidth="0.5" lineStyle="Solid"/></graphicElement> </line> Četvorougao <rectangle> Elipsa <ellipse> Slika <image> Grafikon <chart> Subreport Bilo koji izveštaj može biti subreport, ako se doda kao element u neki drugi izveštaj Element subreport u glavnom izveštaju <subreport> – mora da definiše ime izveštaja koji je subreport i izvor podataka Mapiranje ulaznih parametara <subreportParameter> Vraćanje vrednosti iz subreporta glavnom izveštaju <returnValue> Crosstab Međuzavisnost dve ili više varijabli, u formi tabele sa dinamičnim kolonama i redovima U ćelijama mogu biti razni grafički elementi Redovi i kolone <rowGroup>, <columnGroup>– definisanje ove međuzavisnosti Header <crosstabRowHeader>, <crosstabColumnHeader> Sume <crosstabTotalRowHeader>, <crosstabTotalColumnHeader> Još komponenti Lista Tabela Barkod Internacionalizacija REPORT_RESOURCE_BUNDLE parametar izveštaja koji je veza sa java.util.ResourceBundle $R{} sintaksom se pomoću ključa pristupa odgovarajućem prevodu Jasper java API Faze izveštaja NET.SF.JASPERREPORTS.ENGINE.* JasperDesign.java, instanca ove klase predstavlja .jrxml fajl JasperReport.java, instanca ove klase predstavlja .jasper fajl koji nastaje kompilacijom .jrxml fajla JasperPrint.java, instanca ove klase predstavlja .jrprint fajl, koji nastaje punjenjem .jasper fajla podacima Podaci za izveštaj JRDataSource.java, interfejs za kolekciju podataka getFieldValue, metoda koja dohvata polje sa trenutne pozicije next, metoda koja iterira po podacima Implementacije: JRResultSetDataSource, JRBeanCollectionDataSource, JRXMLDataSource Kompilacija JasperCompileManager.java, kompajlira .jrxml fajl i formira .jasper fajl Metoda compileReport kao argument ima JasperDesign objekat a vraća JasperReport objekat Moguće je raditi i sa zadavanjem lokacija fajlova ili input i output streamovima .jrxml compile .jasper Punjenje izveštaja podacima JasperFillManager.java, formira .jrprint fajl od .jasper fajla i podataka Metoda fillReport kao argument ima JasperReport objekat (kompajlirani izveštaj), JRDataSource objekat (podaci) I mapu parametara, a vraća JasperPrint objekat Moguće je raditi i sa zadavanjem konekcije, lokacija fajlova ili input i output streamovima .jasper datasource parametri fill .jrprint Prikaz izveštaja JRViewer.java, posebna grafička komponenta za preview u Swing aplikacijama Štampanje izveštaja JasperPrintManager.java slanje .jprint izveštaja na štampu Metoda printReport ima kao argument JasperPrint objekat (može i inputstream i lokaciju fajla na disku) Štampa može generisati sliku java.awt.Image Skraćivanje procesa JasperRunManager.java direktno od .jasper fajla i izvora podataka ili konekcije, bez pravljenja .jrprint fajla na disku, formira .pdf ili HTML fajl Metode runReportToHtml, runReportToPDF ... imaju kao argument JasperReport objekat, I vraćaju niz bajtova koji predtavlja novi fajl u odgovarajućem formatu Može se raditi i sa fajlovima na disku, kao I input i output streamovima
© Copyright 2024 Paperzz