JasperReports এ Bean Collection Data Source ব্যবহারের মাধ্যমে আপনি Java Beans এর একটি কালেকশনকে রিপোর্ট ডেটা সোর্স হিসেবে ব্যবহার করতে পারেন। এই পদ্ধতিতে, আপনি Java Bean-এ ডেটা মডেল তৈরি করে সেই ডেটা ব্যবহার করে JasperReports তৈরি করতে পারবেন। এটি List বা ArrayList বা অন্যান্য Java Collection এর মাধ্যমে করা যায়।
Bean Collection Data Source ব্যবহারের সুবিধা হলো, আপনি Java Beans থেকে সরাসরি ডেটা বের করে JasperReports এ ব্যবহার করতে পারবেন এবং এর ফলে কোনো ডাটাবেস বা অন্য কনফিগারেশন প্রয়োজন নেই।
Bean Collection Data Source এর প্রক্রিয়া
Step 1: Java Bean তৈরি করুন
প্রথমে, আপনাকে একটি Java Bean ক্লাস তৈরি করতে হবে, যা রিপোর্টে প্রদর্শিত হবে।
public class Employee {
private int id;
private String name;
private String department;
// Constructor
public Employee(int id, String name, String department) {
this.id = id;
this.name = name;
this.department = department;
}
// Getters and Setters
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getDepartment() {
return department;
}
public void setDepartment(String department) {
this.department = department;
}
}
এখানে, Employee একটি সাধারণ Java Bean ক্লাস যা id, name, এবং department ফিল্ড ধারণ করছে।
Step 2: Collection তৈরি করুন
আপনার Java Bean ক্লাসের একটি কালেকশন তৈরি করতে হবে। সাধারণত এটি একটি List (যেমন ArrayList) হতে পারে, যা Bean এর ইনস্ট্যান্স ধারণ করবে।
import java.util.ArrayList;
import java.util.List;
public class EmployeeReport {
public static void main(String[] args) {
List<Employee> employees = new ArrayList<>();
// Add employee data
employees.add(new Employee(1, "John Doe", "HR"));
employees.add(new Employee(2, "Jane Smith", "Finance"));
employees.add(new Employee(3, "Michael Johnson", "IT"));
// Pass the list to the report
try {
generateReport(employees);
} catch (Exception e) {
e.printStackTrace();
}
}
public static void generateReport(List<Employee> employees) throws Exception {
// Create the JasperReport data source (Bean Collection)
JRBeanCollectionDataSource dataSource = new JRBeanCollectionDataSource(employees);
// Compile the JasperReport .jrxml file to a JasperReport object
JasperReport jasperReport = JasperCompileManager.compileReport("employee_report.jrxml");
// Fill the report with the data source and empty parameters
JasperPrint jasperPrint = JasperFillManager.fillReport(jasperReport, null, dataSource);
// Display the report using JasperViewer
JasperViewer.viewReport(jasperPrint);
}
}
এখানে, employees একটি ArrayList যা Employee Bean এর ইনস্ট্যান্স ধারণ করছে। পরে, এটি JRBeanCollectionDataSource দিয়ে রিপোর্ট ডেটা সোর্স হিসেবে ব্যবহার করা হবে।
Step 3: .jrxml (JasperReports Template) তৈরি করুন
এখন, একটি JasperReports Template (যা .jrxml ফরম্যাটে থাকে) তৈরি করতে হবে, যেখানে Employee Bean এর প্রপার্টি (যেমন name, department, id) ব্যবহার করা হবে।
<?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="Employee Report" pageWidth="595" pageHeight="842">
<title>Employee Report</title>
<columnHeader>
<staticText>
<reportElement x="0" y="0" width="100" height="20"/>
<textElement/>
<text><![CDATA[ID]]></text>
</staticText>
<staticText>
<reportElement x="100" y="0" width="100" height="20"/>
<textElement/>
<text><![CDATA[Name]]></text>
</staticText>
<staticText>
<reportElement x="200" y="0" width="100" height="20"/>
<textElement/>
<text><![CDATA[Department]]></text>
</staticText>
</columnHeader>
<detail>
<textField>
<reportElement x="0" y="20" width="100" height="20"/>
<textFieldExpression><![CDATA[$F{id}]]></textFieldExpression>
</textField>
<textField>
<reportElement x="100" y="20" width="100" height="20"/>
<textFieldExpression><![CDATA[$F{name}]]></textFieldExpression>
</textField>
<textField>
<reportElement x="200" y="20" width="100" height="20"/>
<textFieldExpression><![CDATA[$F{department}]]></textFieldExpression>
</textField>
</detail>
</jasperReport>
এই employee_report.jrxml ফাইলটি একটি সাধারণ রিপোর্ট টেমপ্লেট যা id, name, এবং department ফিল্ডগুলোকে প্রতিটি কলামে প্রদর্শন করবে।
- $F{id}, $F{name}, এবং $F{department} এর মাধ্যমে আপনি Employee Bean এর ফিল্ডগুলিকে রিপোর্টে ব্যবহার করছেন।
Step 4: রিপোর্ট তৈরি এবং প্রদর্শন
আপনি যখন generateReport() মেথডটি কল করবেন, তখন এটি Employee Bean এর কলেকশন ব্যবহার করবে এবং সেই ডেটা থেকে রিপোর্ট তৈরি করবে।
রিপোর্টটি JasperViewer এর মাধ্যমে দেখা যাবে।
Key Concepts in Using Bean Collection Data Source
- JRBeanCollectionDataSource:
- এটি Java Beans বা Java Collection থেকে রিপোর্ট ডেটা তৈরি করার জন্য ব্যবহৃত হয়। এটি List বা ArrayList ব্যবহার করে Bean Data Source তৈরি করে।
- Field Binding:
- JasperReports ডেটা মডেল (Bean) থেকে ফিল্ডগুলো সরাসরি
.jrxmlফাইলে field expressions এর মাধ্যমে আনা হয়। এটি JSON, XML, বা Java Beans ডেটা সোর্সের জন্য কাজ করে।
- JasperReports ডেটা মডেল (Bean) থেকে ফিল্ডগুলো সরাসরি
- Flexibility:
- Bean Collection Data Source ব্যবহারে, আপনি সহজেই custom data structures থেকে রিপোর্ট তৈরি করতে পারেন, এবং আপনি চাইলে ডেটাবেস বা অন্য কোথাও ডেটা না রেখে Java Beans থেকেও ডেটা সোর্স তৈরি করতে পারেন।
Advantages of Using Bean Collection Data Source
- No Database Dependency:
- আপনি ডাটাবেসের ওপর নির্ভর না করে সহজেই Java Beans বা অন্যান্য Collection থেকে রিপোর্ট তৈরি করতে পারেন।
- Simple and Flexible:
- Java Beans ব্যবহার করার মাধ্যমে রিপোর্ট তৈরির প্রক্রিয়া সহজ এবং ফ্লেক্সিবল হয়ে যায়।
- Improved Maintainability:
- কোডে শুধুমাত্র Java Beans এ ডেটা মডেল তৈরি করতে হয়, যা রক্ষণাবেক্ষণ এবং পরিবর্তন সহজ করে।
JasperReports এ Bean Collection Data Source ব্যবহার করা খুবই সহজ এবং কার্যকরী। আপনি যদি Java Beans বা Collections থেকে রিপোর্ট তৈরি করতে চান, তবে JRBeanCollectionDataSource একটি শক্তিশালী এবং কার্যকরী পদ্ধতি। এটি JasperReports এর সাথে কাজ করার সময় ডেটার সহজ এবং সুসংগঠিত প্রক্রিয়াকরণ নিশ্চিত করে, এবং NoSQL বা custom data structures থেকে ডেটা প্রক্রিয়াকরণের জন্য একেবারে আদর্শ।
Read more