JasperReports-এ optional parameters এবং default values ব্যবহার করা রিপোর্ট ডিজাইন এবং কাস্টমাইজেশনের জন্য খুবই গুরুত্বপূর্ণ। Parameters একটি রিপোর্টে dynamic ডেটা ইনপুট করতে ব্যবহৃত হয়, এবং যখন আপনি কিছু optional parameters ব্যবহার করতে চান, তখন আপনি সেই প্যারামিটারগুলোর জন্য default values সেট করতে পারেন। এটি ব্যবহারকারীদের জন্য রিপোর্ট তৈরির প্রক্রিয়াকে আরও সহজ এবং নমনীয় করে তোলে।
1. Optional Parameters in JasperReports
Optional parameters হল এমন প্যারামিটার যা ব্যবহারকারী দেয়ার প্রয়োজন না হলে রিপোর্টের আউটপুটে কোন প্রভাব ফেলবে না। এগুলি রিপোর্টের মধ্যে dynamic কন্ডিশনাল লজিক তৈরি করতে সাহায্য করে। যখন একটি প্যারামিটার optional হয়, তখন আপনি সেই প্যারামিটারটির মান না দিলেও রিপোর্টটি সফলভাবে তৈরি হবে।
Optional Parameters কিভাবে কাজ করে:
- রিপোর্টের JRXML ফাইলে প্যারামিটারটি ঘোষণা করুন।
- Fill Report করার সময় প্যারামিটারটি null বা একটি নির্দিষ্ট মান প্রদান করুন।
- রিপোর্টের মধ্যে এই প্যারামিটারটি null চেক করা এবং প্রাসঙ্গিকভাবে ব্যবহার করা হয়।
Example: Optional Parameter in JRXML
<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="EmployeeReport" language="java" pageWidth="595" pageHeight="842"
columnWidth="515" leftMargin="50" rightMargin="50" topMargin="50" bottomMargin="50">
<!-- Optional Parameter -->
<parameter name="Department" class="java.lang.String"/>
<!-- Fields and Report Design -->
<field name="employee_name" class="java.lang.String"/>
<field name="employee_department" class="java.lang.String"/>
<!-- Title Section -->
<title>
<band height="50">
<staticText>
<reportElement x="0" y="0" width="515" height="50"/>
<textElement textAlignment="Center" verticalAlignment="Middle"/>
<text><![CDATA[Employee Report]]></text>
</staticText>
</band>
</title>
<!-- Detail Section -->
<detail>
<band height="20">
<textField>
<reportElement x="0" y="0" width="170" height="20"/>
<textFieldExpression><![CDATA[$F{employee_name}]]></textFieldExpression>
</textField>
<textField>
<reportElement x="170" y="0" width="170" height="20"/>
<textFieldExpression><![CDATA[$F{employee_department}]]></textFieldExpression>
</textField>
</band>
</detail>
</jasperReport>
How Optional Parameters Work:
- এখানে, Department প্যারামিটারটি optional হিসেবে ব্যবহৃত হচ্ছে, অর্থাৎ এটি যদি null থাকে, তবুও রিপোর্টটি সঠিকভাবে চলতে থাকবে।
- রিপোর্টের মধ্যে
employee_departmentফিল্ডের জন্য একটি conditional logic যোগ করা যেতে পারে যাতে এটি শুধুমাত্র Department প্যারামিটার দেওয়া হলে কাজ করে। অন্যথায়, এটি রিপোর্টের সব রেকর্ড দেখাবে।
2. Default Values for Parameters
Default values সেট করার মাধ্যমে আপনি নির্দিষ্ট প্যারামিটারগুলোর জন্য একটি প্রাথমিক মান নির্ধারণ করতে পারেন। এটি বিশেষভাবে ব্যবহারীকের ইনপুটের প্রয়োজন না হলে বা ইনপুট না দেওয়ার ক্ষেত্রে কার্যকরী।
How to Set Default Values for Parameters
- JRXML ফাইলে default value সেট করা হয়।
- Filling the report সময় null বা default মান ব্যবহার করা হয়।
Setting Default Values in JRXML
আপনি default value এবং optional প্যারামিটারগুলি সেট করতে পারেন ট্যাগের মধ্যে। defaultValueExpression ব্যবহার করে আপনি একটি প্যারামিটার এর মান আগে থেকেই নির্ধারণ করতে পারেন।
Example of Default Values in JRXML:
<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="EmployeeReport" language="java" pageWidth="595" pageHeight="842"
columnWidth="515" leftMargin="50" rightMargin="50" topMargin="50" bottomMargin="50">
<!-- Parameter with Default Value -->
<parameter name="Department" class="java.lang.String">
<defaultValueExpression><![CDATA["HR"]]></defaultValueExpression>
</parameter>
<!-- Fields and Report Design -->
<field name="employee_name" class="java.lang.String"/>
<field name="employee_department" class="java.lang.String"/>
<!-- Title Section -->
<title>
<band height="50">
<staticText>
<reportElement x="0" y="0" width="515" height="50"/>
<textElement textAlignment="Center" verticalAlignment="Middle"/>
<text><![CDATA[Employee Report]]></text>
</staticText>
</band>
</title>
<!-- Detail Section -->
<detail>
<band height="20">
<textField>
<reportElement x="0" y="0" width="170" height="20"/>
<textFieldExpression><![CDATA[$F{employee_name}]]></textFieldExpression>
</textField>
<textField>
<reportElement x="170" y="0" width="170" height="20"/>
<textFieldExpression><![CDATA[$F{employee_department}]]></textFieldExpression>
</textField>
</band>
</detail>
</jasperReport>
এখানে, Department প্যারামিটারটির জন্য default value "HR" দেওয়া হয়েছে। অর্থাৎ, যদি ব্যবহারকারী কোনো মান প্রদান না করেন, তবে এই প্যারামিটারটি "HR" মান নিয়ে রিপোর্টে ব্যবহৃত হবে।
3. Passing Optional Parameters in Java Code
Optional parameters এবং default values রিপোর্টে পাস করার সময় Map<String, Object> parameters ব্যবহার করা হয়। যখন আপনি প্যারামিটার পাস করেন, তখন আপনি এটি null বা ডিফল্ট মান দিয়ে পাঠাতে পারেন।
Example: Passing Parameters from Java Code
import net.sf.jasperreports.engine.*;
import java.util.*;
public class JasperReportWithParameters {
public static void main(String[] args) {
try {
// Compile the JRXML file
JasperReport jasperReport = JasperCompileManager.compileReport("path/to/your_report.jrxml");
// Create a map for parameters
Map<String, Object> parameters = new HashMap<>();
parameters.put("Department", "IT"); // Set value for Department
// Note: If we don't pass the "Department", default "HR" will be used.
// Fill the report with data
JasperPrint jasperPrint = JasperFillManager.fillReport(jasperReport, parameters, new JREmptyDataSource());
// Export the report to PDF
JasperExportManager.exportReportToPdfFile(jasperPrint, "output/report_with_optional_parameters.pdf");
System.out.println("Report generated successfully!");
} catch (JRException e) {
e.printStackTrace();
}
}
}
এখানে, Department প্যারামিটারটি "IT" দ্বারা পাস করা হয়েছে। যদি এটি পাস না করা হয়, তবে default value "HR" ব্যবহার হবে।
4. Conditional Logic with Optional Parameters
আপনি conditional logic ব্যবহার করতে পারেন রিপোর্টের মধ্যে optional parameters এবং default values এর ভিত্তিতে। উদাহরণস্বরূপ, যদি প্যারামিটারটি null বা default থাকে, তবে কিছু ডেটা স্কিপ করা হবে বা অন্য কোনো লজিক প্রয়োগ হবে।
Example: Conditional Logic for Optional Parameters
<detail>
<band height="20">
<textField>
<reportElement x="0" y="0" width="170" height="20"/>
<textFieldExpression><![CDATA[$P{Department} == null ? "No Department Selected" : $P{Department}]]></textFieldExpression>
</textField>
</band>
</detail>
এখানে, যদি Department প্যারামিটার null থাকে, তাহলে "No Department Selected" প্রদর্শিত হবে, অন্যথায় Department এর মান প্রদর্শিত হবে।
- Optional parameters এবং default values JasperReports-এ রিপোর্ট কাস্টমাইজেশনের জন্য শক্তিশালী টুল।
- আপনি JRXML ফাইলে default value ব্যবহার করতে পারেন এবং null চেকের মাধ্যমে optional parameters যুক্ত করতে পারেন।
- Java code-এর মাধ্যমে parameters পাস করা এবং conditional logic প্রয়োগ করে রিপোর্টের আউটপুট আরও বেশি নমনীয় এবং ব্যবহারকারী-প্রতিক্রিয়াশীল করা সম্ভব।
Read more