Rapor Parametreleri

Bir raporu doldurmak için ana girdi - rapor şablonu, parametreler ve veri kaynaklarıdır. Bu bölüm parametreleri açıklayacak ve sonraki bölümde veri kaynaklarını tartışacağız.

Parametreler, rapor doldurma işlemleri sırasında rapor motoruna iletilen nesne referanslarıdır. Veri kaynağından geçirilemeyen veriler, parametreler kullanılarak geçirilebilir. Yazar adı, raporun başlığı vb. Veriler parametrelerden geçirilebilir. Bir JasperReports şablonu veya JRXML şablonu sıfır veya daha fazla parametre öğesine sahip olabilir.

Parametre Beyanı

Parametre açıklaması aşağıdaki gibidir -

<parameter name = "exampleParameter" class = "java.lang.String" />

İsim Özniteliği

Adı <parametre> öğesinin öznitelik zorunludur. Rapor ifadelerindeki parametreye ada göre başvurur. Parametre adı tek bir kelime olmalıdır. Nokta veya virgül gibi özel karakterler içermemelidir.

Sınıf Özelliği

Sınıf niteliği de zorunludur ve bu parametre değerleri için sınıf adını belirtir. Varsayılan değeri java.lang.String'dir . Bu, çalışma zamanında mevcut olan herhangi bir sınıfa değiştirilebilir. Bir rapor parametresinin türüne bakılmaksızın, motor, $ P {} belirtecinin kullanıldığı rapor ifadelerinin dönüştürülmesiyle ilgilenir, bu nedenle manuel yayınlara gerek kalmaz.

Rapor parametresi değerleri her zaman, anahtarı parametre adına sahip bir java.util.Map nesnesinde paketlenir. Rapor parametreleri, veritabanından alınan veri kümesini daha da özelleştirmek için raporun sorgu dizesinde kullanılabilir. Bunlar, rapor için veri sağlayan sorguda dinamik filtreler gibi davranır.

Yerleşik Parametreler

Aşağıda, ifadelerde kullanılmaya hazır, önceden tanımlanmış rapor parametreleri verilmiştir -

S.NO Parametre Adı ve Açıklaması
1

REPORT_PARAMETERS_MAP

Tüm kullanıcı tanımlı ve yerleşik parametreleri içeren bir harita içerir.

2

REPORT_CONNECTION

Bu, JDBC veri kaynakları için kullanılan, kullanıcı tarafından sağlanan java.sql.Connection sınıfına işaret eder.

3

REPORT_DATA_SOURCE

Bu, yerleşik veri kaynağı türlerinden birini veya kullanıcı tanımlı birini temsil eden, kullanıcı tarafından sağlanan bir JRDataSource örneğidir.

4

REPORT_MAX_COUNT

Bu, kullanıcıların veri kaynağından gelen kayıtları sınırlandırmasına izin veren bir java.lang.Integer değeridir.

5

REPORT_SCRIPTLET

Bu net.sf.jasperreports.engine.JRAbstractScriptlet'i işaret eder ve kullanıcı tarafından sağlanan rapor komut dosyasının bir örneğini içerir.

6

REPORT_LOCALE

Bu , istenen yerel ayarı kaynak paketini içeren bir java.util.Locale örneği.

7

REPORT_RESOURCE_BUNDLE

Bu java.util.ResourceBundle nesnesine işaret eder ve yerelleştirilmiş mesajlar içerir.

8

REPORT_TIME_ZONE

Bu, tarih biçimlendirmesi için kullanılan bir java.util.TimeZone örneğidir.

9

REPORT_VIRTUALIZER

Bu, net.sf.jasperreports.engine.JRVirtualizer nesnesinin bir örneğidir ve sayfa sanallaştırma için kullanılır (bellek tüketimini optimize edin).

10

REPORT_CLASS_LOADER

Bu, görüntüler, yazı tipleri ve alt rapor şablonları gibi kaynakları yüklemek için rapor doldurma işlemi sırasında kullanılacak bir java.lang.ClassLoader örneğidir.

11

IS_IGNORE_PAGINATION

Java.lang.Boolean.TRUE olarak ayarlanırsa , rapor uzun bir sayfada oluşturulacak ve sayfa sonu oluşmayacaktır.

Misal

Geçmemize izin verin ReportTitle ve Yazar (JasperReportFill.java tarafından oluşturulan) raporuna. Düzeltilmiş dosyaC:\tools\jasperreports-5.0.1\test\src\com\tutorialspoint\JasperReportFill.java aşağıdaki gibidir -

package com.tutorialspoint;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.Map;

import net.sf.jasperreports.engine.JRException;
import net.sf.jasperreports.engine.JasperFillManager;
import net.sf.jasperreports.engine.data.JRBeanCollectionDataSource;

public class JasperReportFill {
   @SuppressWarnings("unchecked")
   public static void main(String[] args) {
      String sourceFileName = 
         "C://tools/jasperreports-5.0.1/test/jasper_report_template.jasper";

      DataBeanList DataBeanList = new DataBeanList();
      ArrayList<DataBean> dataList = DataBeanList.getDataBeanList();

      JRBeanCollectionDataSource beanColDataSource =
      new JRBeanCollectionDataSource(dataList);

      Map parameters = new HashMap();
      /**
       * Passing ReportTitle and Author as parameters
       */
      parameters.put("ReportTitle", "List of Contacts");
      parameters.put("Author", "Prepared By Manisha");

      try {
         JasperFillManager.fillReportToFile(
         sourceFileName, parameters, beanColDataSource);
      } catch (JRException e) {
         e.printStackTrace();
      }
   }
}

POJO dosyasının içeriği C:\tools\jasperreports-5.0.1\test\src\com\tutorialspoint\DataBean.java aşağıdaki gibidir -

package com.tutorialspoint;

public class DataBean {
   private String name;
   private String country;

   public String getName() {
      return name;
   }

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

   public String getCountry() {
      return country;
   }

   public void setCountry(String country) {
      this.country = country;
   }
}

Dosyanın içeriği C:\tools\jasperreports-5.0.1\test\src\com\tutorialspoint\DataBeanList.java aşağıda verildiği gibidir -

package com.tutorialspoint;

import java.util.ArrayList;

public class DataBeanList {
   public ArrayList<DataBean> getDataBeanList() {
      ArrayList<DataBean> dataBeanList = new ArrayList<DataBean>();

      dataBeanList.add(produce("Manisha", "India"));
      dataBeanList.add(produce("Dennis Ritchie", "USA"));
      dataBeanList.add(produce("V.Anand", "India"));
      dataBeanList.add(produce("Shrinath", "California"));

      return dataBeanList;
   }

   /**
    * This method returns a DataBean object,
    * with name and country set in it.
    */
   private DataBean produce(String name, String country) {
      DataBean dataBean = new DataBean();
      dataBean.setName(name);
      dataBean.setCountry(country);
      
      return dataBean;
   }
}

<ReportTitle> ve <Author> mevcut rapor şablonumuza (Bölüm Rapor Tasarımları ). Rapor Başlığı ve Yazar raporun başında görüntülenecektir. Gözden geçirilmiş rapor şablonu (jasper_report_template.jrxml) aşağıdaki gibidir. C: \ tools \ jasperreports-5.0.1 \ test dizinine kaydedin -

<?xml version = "1.0"?>
<!DOCTYPE jasperReport PUBLIC
   "//JasperReports//DTD Report Design//EN"
   "http://jasperreports.sourceforge.net/dtds/jasperreport.dtd">

<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 = "jasper_report_template" pageWidth = "595"
   pageHeight = "842" columnWidth = "515"
   leftMargin = "40" rightMargin = "40" topMargin = "50" bottomMargin = "50">
	
   <parameter name = "ReportTitle" class = "java.lang.String"/>
   <parameter name = "Author" class = "java.lang.String"/>

   <queryString>
      <![CDATA[]]>
   </queryString>

   <field name = "country" class = "java.lang.String">
      <fieldDescription><![CDATA[country]]></fieldDescription>
   </field>

   <field name = "name" class = "java.lang.String">
      <fieldDescription><![CDATA[name]]></fieldDescription>
   </field>

   <title>
      <band height = "70">
         
         <line>
            <reportElement x = "0" y = "0" width = "515" height = "1"/>
         </line>
         
         <textField isBlankWhenNull = "true" bookmarkLevel = "1">
            <reportElement x = "0" y = "10" width = "515" height = "30"/>
           
            <textElement textAlignment = "Center">
               <font size = "22"/>
            </textElement>
            
            <textFieldExpression class = "java.lang.String">
               <![CDATA[$P{ReportTitle}]]>
            </textFieldExpression>
				
            <anchorNameExpression>
               <![CDATA["Title"]]>
            </anchorNameExpression>
         </textField>
         
         <textField isBlankWhenNull = "true">
            <reportElement  x = "0" y = "40" width = "515" height = "20"/>
            
            <textElement textAlignment = "Center">
               <font size = "10"/>
            </textElement>
            
            <textFieldExpression class = "java.lang.String">
               <![CDATA[$P{Author}]]>
            </textFieldExpression>
         </textField>
      
      </band>
   </title>

   <columnHeader>
      <band height = "23">
         
         <staticText>
            <reportElement mode = "Opaque" x = "0" y = "3" width = "535" height = "15"
               backcolor = "#70A9A9" />
            
            <box>
               <bottomPen lineWidth = "1.0" lineColor = "#CCCCCC" />
            </box>
            
            <textElement />
				
            <text>
               <![CDATA[]]>
            </text>
         </staticText>
         
         <staticText>
            <reportElement x = "414" y = "3" width = "121" height = "15" />
            
            <textElement textAlignment = "Center" verticalAlignment = "Middle">
               <font isBold = "true" />
            </textElement>
            
            <text>
               <![CDATA[Country]]>
            </text>
         </staticText>
         
         <staticText>
            <reportElement x = "0" y = "3" width = "136" height = "15" />
            
            <textElement textAlignment = "Center" verticalAlignment = "Middle">
               <font isBold = "true" />
            </textElement>
            
            <text><![CDATA[Name]]></text>
         </staticText>
      
      </band>
   </columnHeader>

   <detail>
      <band height = "16">
         
         <staticText>
            <reportElement mode = "Opaque" x = "0" y = "0" width = "535" height = "14"
               backcolor = "#E5ECF9" />
            
            <box>
               <bottomPen lineWidth = "0.25" lineColor = "#CCCCCC" />
            </box>
            
            <textElement />
				
            <text>
               <![CDATA[]]>
            </text>
         </staticText>
         
         <textField>
            <reportElement x = "414" y = "0" width = "121" height = "15" />
            
            <textElement textAlignment = "Center" verticalAlignment = "Middle">
               <font size = "9" />
            </textElement>
            
            <textFieldExpression class = "java.lang.String">
               <![CDATA[$F{country}]]>
            </textFieldExpression>
         </textField>
         
         <textField>
            <reportElement x = "0" y = "0" width = "136" height = "15" />
            <textElement textAlignment = "Center" verticalAlignment = "Middle" />
            
            <textFieldExpression class = "java.lang.String">
               <![CDATA[$F{name}]]>
            </textFieldExpression>
         </textField>
      
      </band>
   </detail>
	
</jasperReport>

Rapor oluşturma

Yukarıdaki dosyayı normal ANT oluşturma sürecimizi kullanarak derleyip yürüteceğiz. Build.xml dosyasının içeriği (C: \ tools \ jasperreports-5.0.1 \ test dizinine kaydedilmiştir) aşağıdaki gibidir.

İçe aktarma dosyası - baseBuild.xml, Ortam Kurulumu bölümünden seçilir ve build.xml ile aynı dizine yerleştirilmelidir.

<?xml version = "1.0" encoding = "UTF-8"?>
<project name = "JasperReportTest" default = "viewFillReport" basedir = ".">
   <import file = "baseBuild.xml" />

   <target name = "viewFillReport" depends = "compile,compilereportdesing,run"
      description = "Launches the report viewer to preview
      the report stored in the .JRprint file.">
      
		
      <java classname = "net.sf.jasperreports.view.JasperViewer" fork = "true">
         <arg value = "-F${file.name}.JRprint" />
         <classpath refid = "classpath" />
      </java>
   </target>
   
   <target name = "compilereportdesing" description = "Compiles the JXML file and
      produces the .jasper file.">
      
      <taskdef name = "jrc" classname = "net.sf.jasperreports.ant.JRAntCompileTask">
         <classpath refid = "classpath" />
      </taskdef>
      
      <jrc destdir = ".">
         <src>
            <fileset dir = ".">
               <include name = "*.jrxml" />
            </fileset>
         </src>
         <classpath refid = "classpath" />
      </jrc>
   
   </target>

</project>

Ardından komut satırı penceresini açalım ve build.xml'nin bulunduğu dizine geçelim. Son olarak, komutu yürütünant -Dmain-class=com.tutorialspoint.JasperReportFill (viewFullReport varsayılan hedeftir) aşağıdaki gibi -

C:\tools\jasperreports-5.0.1\test>ant -Dmain-class=com.tutorialspoint.JasperReportFill
Buildfile: C:\tools\jasperreports-5.0.1\test\build.xml

clean-sample:
   [delete] Deleting directory C:\tools\jasperreports-5.0.1\test\classes
   [delete] Deleting: C:\tools\jasperreports-5.0.1\test\jasper_report_template.jasper
   [delete] Deleting: C:\tools\jasperreports-5.0.1\test\jasper_report_template.jrprint

compile:
   [mkdir] Created dir: C:\tools\jasperreports-5.0.1\test\classes
   [javac] C:\tools\jasperreports-5.0.1\test\baseBuild.xml:28: warning:
   'includeantruntime' was not set, defaulting to build.sysclasspath=last;
   set to false for repeatable builds
   [javac] Compiling 7 source files to C:\tools\jasperreports-5.0.1\test\classes

compilereportdesing:
   [jrc] Compiling 1 report design files.
   [jrc] log4j:WARN No appenders could be found for logger
   (net.sf.jasperreports.engine.xml.JRXmlDigesterFactory).
   [jrc] log4j:WARN Please initialize the log4j system properly.
   [jrc] log4j:WARN See http://logging.apache.org/log4j/1.2/faq.html#noconfig
   for more info.
   [jrc] File : C:\tools\jasperreports-5.0.1\test\jasper_report_template.jrxml ... OK.

run:
   [echo] Runnin class : com.tutorialspoint.JasperReportFill
   [java] log4j:WARN No appenders could be found for logger
   (net.sf.jasperreports.extensions.ExtensionsEnvironment).
   [java] log4j:WARN Please initialize the log4j system properly.

viewFillReport:
   [java] log4j:WARN No appenders could be found for logger
   (net.sf.jasperreports.extensions.ExtensionsEnvironment).
   [java] log4j:WARN Please initialize the log4j system properly.

BUILD SUCCESSFUL
Total time: 18 seconds

Yukarıdaki derlemenin bir sonucu olarak, aşağıdaki ekranda gösterildiği gibi bir JasperViewer penceresi açılır -

Burada, raporun başında Rapor Başlığı "İrtibat Listesi" ve Yazar "Manisha Tarafından Hazırlandı" görüntülendiğini görüyoruz.