Custom Expressions তৈরি করা

Expression Language (Java Expression) এর ব্যবহার - জ্যাসপার রিপোর্ট (JasperReports) - Java Technologies

338

JasperReports একটি শক্তিশালী রিপোর্টিং টুল যা ডেটা রিপোর্ট তৈরির জন্য বিভিন্ন এক্সপ্রেশন সমর্থন করে। রিপোর্ট ডিজাইন করার সময় আপনি custom expressions তৈরি করতে পারেন যা Java code দিয়ে রিপোর্টের ভিতরের লজিক প্রক্রিয়া করে। এই এক্সপ্রেশনগুলো আপনাকে রিপোর্টে ডেটার মান কাস্টমাইজ বা হিসাব করতে সহায়তা করে।

JasperReports এ custom expressions সাধারণত JRXML ফাইলের মধ্যে ব্যবহার করা হয়। এগুলো fields, variables, বা parameters এ প্রয়োগ করা যেতে পারে এবং Java code বা built-in JasperReports functions দিয়ে ম্যানিপুলেট করা হয়।

Custom Expressions তৈরি করার পদ্ধতি

  1. Expression ব্যবহার করা:
    • রিপোর্টের text fields, variables, parameters, ইত্যাদি উপাদানগুলোর মান Java expressions দিয়ে নির্ধারণ করা যায়।
    • Custom expressions সাধারণত JasperReports expressions এর মাধ্যমে সরাসরি Java কোড লেখা হয় যা রিপোর্টের আউটপুট কাস্টমাইজ করতে পারে।

Custom Expression উদাহরণ

ধরা যাক, আমরা একটি Employee Report তৈরি করতে যাচ্ছি এবং আমরা রিপোর্টে salary এর উপর ভিত্তি করে bonus calculation করতে চাই। উদাহরণ হিসেবে আমরা রিপোর্টের মধ্যে একটি variable তৈরি করব যা salary এর উপর নির্ভর করবে এবং তার উপরে নির্দিষ্ট bonus যোগ করবে।


Step-by-Step উদাহরণ:

Step 1: Employee Data Model

প্রথমে একটি Employee ক্লাস তৈরি করুন, যা রিপোর্টে ব্যবহার হবে।

public class Employee {
    private int id;
    private String name;
    private double salary;

    public Employee(int id, String name, double salary) {
        this.id = id;
        this.name = name;
        this.salary = salary;
    }

    // Getters and Setters
    public int getId() {
        return id;
    }

    public String getName() {
        return name;
    }

    public double getSalary() {
        return salary;
    }
}

Step 2: JRXML রিপোর্ট তৈরি করা

এখন আমরা JasperReports এর JRXML ফাইল তৈরি করবো এবং এতে custom expression ব্যবহার করবো।

<?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="EmployeeReport" pageWidth="595" pageHeight="842" columnWidth="555" leftMargin="20" rightMargin="20" topMargin="20" bottomMargin="20">

    <!-- Fields -->
    <field name="id" class="java.lang.Integer"/>
    <field name="name" class="java.lang.String"/>
    <field name="salary" class="java.lang.Double"/>

    <!-- Variable for bonus calculation -->
    <variable name="bonus" class="java.lang.Double" calculation="System">
        <variableExpression><![CDATA[$F{salary} * 0.10]]></variableExpression>
    </variable>

    <!-- Title and Header -->
    <title>
        <band height="50">
            <staticText>
                <reportElement x="0" y="0" width="200" height="30"/>
                <textElement textAlignment="Center"/>
                <text><![CDATA[Employee Report]]></text>
            </staticText>
        </band>
    </title>

    <!-- Detail Section (for displaying employee data) -->
    <detail>
        <band height="20">
            <textField>
                <reportElement x="0" y="0" width="50" height="20"/>
                <textFieldExpression><![CDATA[$F{id}]]></textFieldExpression>
            </textField>
            <textField>
                <reportElement x="60" y="0" width="200" height="20"/>
                <textFieldExpression><![CDATA[$F{name}]]></textFieldExpression>
            </textField>
            <textField>
                <reportElement x="270" y="0" width="100" height="20"/>
                <textFieldExpression><![CDATA[$F{salary}]]></textFieldExpression>
            </textField>
            <!-- Bonus field using custom expression -->
            <textField>
                <reportElement x="380" y="0" width="100" height="20"/>
                <textFieldExpression><![CDATA[$V{bonus}]]></textFieldExpression>
            </textField>
        </band>
    </detail>
</jasperReport>

ব্যাখ্যা:

  1. field: এটি Employee ক্লাসের id, name, এবং salary ফিল্ডগুলোকে রিপোর্টে মেপ করার জন্য ব্যবহৃত হয়েছে।
  2. variable: এখানে আমরা একটি variable তৈরি করেছি, যার নাম bonus। এই variable এর expression দ্বারা salary এর ১০% (bonus) হিসাব করা হয়েছে।
    • <variableExpression><![CDATA[$F{salary} * 0.10]]></variableExpression> এই এক্সপ্রেশনটি salary ফিল্ডের মান নিয়ে ১০% হিসাব করে bonus ভ্যারিয়েবল সেট করবে।
  3. textField: রিপোর্টের প্রতিটি সেলে id, name, salary, এবং bonus ডেটা প্রদর্শন করার জন্য textField ব্যবহার করা হয়েছে।

Step 3: Java কোডের মাধ্যমে রিপোর্ট তৈরি করা এবং Custom Expression ব্যবহার করা

এখন, Java কোড দিয়ে আমরা রিপোর্ট কম্পাইল, পূর্ণ এবং এক্সপোর্ট করবো।

import net.sf.jasperreports.engine.*;
import net.sf.jasperreports.engine.data.JRBeanCollectionDataSource;

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

public class JasperReportsCustomExpressionExample {
    public static void main(String[] args) {
        try {
            // Sample Employee data
            List<Employee> employees = new ArrayList<>();
            employees.add(new Employee(1, "John Doe", 50000.00));
            employees.add(new Employee(2, "Jane Smith", 60000.00));
            employees.add(new Employee(3, "Robert Brown", 70000.00));

            // JRBeanCollectionDataSource for Employee data
            JRBeanCollectionDataSource dataSource = new JRBeanCollectionDataSource(employees);

            // Compile the .jrxml file into a JasperReport
            JasperReport jasperReport = JasperCompileManager.compileReport("EmployeeReport.jrxml");

            // Parameters for the report (if any)
            Map<String, Object> parameters = new HashMap<>();
            parameters.put("ReportTitle", "Employee Report");

            // Fill the report with data
            JasperPrint jasperPrint = JasperFillManager.fillReport(jasperReport, parameters, dataSource);

            // Export the report to PDF
            JasperExportManager.exportReportToPdfFile(jasperPrint, "EmployeeReportWithBonus.pdf");

            System.out.println("Report Generated Successfully!");
        } catch (JRException e) {
            e.printStackTrace();
        }
    }
}

Output:

  • EmployeeReportWithBonus.pdf: রিপোর্টটি একটি PDF ফরম্যাটে তৈরি হবে, যেখানে salary এবং bonus (10% of salary) দেখা যাবে।

PDF Output Example:

Employee Report

ID     Name           Salary     Bonus
-----------------------------------------
1      John Doe       50000.00   5000.00
2      Jane Smith     60000.00   6000.00
3      Robert Brown   70000.00   7000.00

Additional Custom Expressions Examples

  1. Condition Based Expressions:

    আপনি conditional expressions ব্যবহার করতে পারেন, যেমন:

    <variable name="bonus" class="java.lang.Double" calculation="System">
        <variableExpression><![CDATA[$F{salary} > 60000 ? 0.15 : 0.10]]></variableExpression>
    </variable>
    

    এই এক্সপ্রেশনে, যদি salary 60,000 এর বেশি হয়, তবে ১৫% বোনাস হবে, আর যদি কম হয় তবে ১০% বোনাস হবে।

  2. Custom Functions:

    আপনি JasperReportscustom functions তৈরি করতে পারেন, যা বিশেষ এক্সপ্রেশনগুলির জন্য ব্যবহৃত হয়।

  3. Date Calculations:

    আপনি Date টাইপের ফিল্ডের জন্য কাস্টম এক্সপ্রেশন ব্যবহার করতে পারেন:

    <textFieldExpression><![CDATA[new java.text.SimpleDateFormat("dd/MM/yyyy").format($F{joinDate})]]></textFieldExpression>
    

  • JasperReports এর মাধ্যমে আপনি custom expressions ব্যবহার করে রিপোর্টের ভিতরের লজিক কাস্টমাইজ করতে পারেন।
  • Java expressions এর মাধ্যমে field calculations, conditional logic, এবং complex formatting করা যায়।
  • JasperReports আপনাকে dynamic এবং parameterized reports তৈরি করতে সক্ষম করে, যা Java applications বা enterprise-level reporting solutions এর জন্য অত্যন্ত কার্যকর।

এই উদাহরণগুলি দেখিয়ে দিয়েছে কিভাবে JasperReports এর মধ্যে custom expressions তৈরি এবং ব্যবহার করা যায়, যা রিপোর্টের ফর্ম্যাট এবং কন্টেন্ট কাস্টমাইজ করতে সাহায্য করে।

Content added By
Promotion

Are you sure to start over?

Loading...