JasperReports এর Data Source কনসেপ্ট

Data Source এবং JasperReports - জ্যাসপার রিপোর্ট (JasperReports) - Java Technologies

414

JasperReports একটি রিপোর্টিং লাইব্রেরি যা ডেটা থেকে রিপোর্ট তৈরি করতে সাহায্য করে। JasperReports-এর Data Source কনসেপ্ট হল সেই মেকানিজম যার মাধ্যমে রিপোর্টে ব্যবহৃত ডেটা সংগ্রহ করা হয়। JasperReports বিভিন্ন ধরনের ডেটা সোর্সের সাথে কাজ করতে পারে, যেমন JavaBeans, SQL databases, XML files, CSV files, Collection (List, Map), এবং Custom Data Sources

এখানে, আমরা JasperReports এর ডেটা সোর্স কনসেপ্ট এবং এর ব্যবহার নিয়ে বিস্তারিত আলোচনা করব।


JasperReports Data Sources এর ধরন

  1. JREmptyDataSource:
    • এটি একটি খালি ডেটা সোর্স যা কোনো ডেটা না থাকলেও রিপোর্ট তৈরি করতে সাহায্য করে। এটি সাধারণত একটি ফরম্যাট রিপোর্ট তৈরি করতে ব্যবহৃত হয় যেখানে ডেটার প্রয়োজন হয় না।
  2. JRBeanCollectionDataSource:
    • এটি একটি JavaBeans টাইপের ডেটা সোর্স যা Java Beans-এর একটি কালেকশন থেকে ডেটা নিয়ে কাজ করে। এটি খুবই জনপ্রিয় এবং JavaBeans অবজেক্টগুলোকে রিপোর্টে সন্নিবেশিত করার জন্য ব্যবহৃত হয়।
  3. JDBC DataSource:
    • JDBC ডেটা সোর্সটি ডেটাবেস থেকে ডেটা আনার জন্য ব্যবহৃত হয়। আপনি সাধারণ SQL কুয়েরি চালিয়ে ডেটা রিপোর্টে আনতে পারেন।
  4. Custom DataSource:
    • যদি আপনাকে কাস্টম ডেটা সোর্স তৈরি করতে হয়, যেমন কোনো বিশেষ ডেটা ফরম্যাট বা ডেটার ধরন, তাহলে আপনি কাস্টম ডেটা সোর্স তৈরি করতে পারবেন।

Data Source কিভাবে কাজ করে?

JasperReports-এর ডেটা সোর্স মূলত ডেটার উৎস সরবরাহ করে, এবং JasperFillManager এর মাধ্যমে রিপোর্টে ডেটা পূর্ণ করা হয়। রিপোর্টের ডিজাইনে ডেটা মডেলগুলোর মধ্যে ডেটা ম্যাচিং করে তারপর ডেটা উপস্থাপন করা হয়। ডেটা সোর্স একটি JRDataSource ইন্টারফেস ইমপ্লিমেন্ট করে যা JasperReports-এর সঙ্গে কাজ করতে পারে।


Data Source এর সাথে JasperReports এর কাজ করার পদ্ধতি

1. JREmptyDataSource ব্যবহার করা (কোনো ডেটার উৎস নেই)

JREmptyDataSource হল একটি খালি ডেটা সোর্স যা কোন ডেটা নিয়ে কাজ করে না। এটি সাধারণত static রিপোর্ট তৈরি করার জন্য ব্যবহার হয় যেখানে ডেটা প্রয়োজন হয় না।

কোড উদাহরণ:
import net.sf.jasperreports.engine.*;

public class JREmptyDataSourceExample {
    public static void main(String[] args) throws JRException {
        // .jasper ফাইলের পাথ
        String reportPath = "path_to_report_template.jasper";
        
        // JREmptyDataSource তৈরি
        JRDataSource dataSource = new JREmptyDataSource();
        
        // Report ফিলিং
        JasperPrint jasperPrint = JasperFillManager.fillReport(reportPath, null, dataSource);
        
        // PDF আউটপুট
        JasperExportManager.exportReportToPdfFile(jasperPrint, "output_report.pdf");
    }
}

এই ক্ষেত্রে, JREmptyDataSource কোন ডেটা ছাড়া রিপোর্ট তৈরি করবে।


2. JRBeanCollectionDataSource ব্যবহার করা (JavaBeans Data Source)

যখন আপনার JavaBeans অবজেক্টের একটি কালেকশন (যেমন একটি List) থাকে এবং আপনি সেটি রিপোর্টে দেখতে চান, তখন JRBeanCollectionDataSource ব্যবহার করা হয়।

কোড উদাহরণ:
import net.sf.jasperreports.engine.*;
import net.sf.jasperreports.engine.data.JRBeanCollectionDataSource;
import java.util.ArrayList;
import java.util.List;

public class JRBeanCollectionDataSourceExample {
    public static void main(String[] args) throws JRException {
        // ডেটা তৈরি
        List<Employee> employees = new ArrayList<>();
        employees.add(new Employee(1, "Rahim"));
        employees.add(new Employee(2, "Karim"));

        // JRBeanCollectionDataSource তৈরি
        JRDataSource dataSource = new JRBeanCollectionDataSource(employees);

        // .jasper ফাইলের পাথ
        String reportPath = "path_to_report_template.jasper";

        // রিপোর্ট ফিলিং
        JasperPrint jasperPrint = JasperFillManager.fillReport(reportPath, null, dataSource);

        // PDF আউটপুট
        JasperExportManager.exportReportToPdfFile(jasperPrint, "employee_report.pdf");
    }
}

class Employee {
    private int id;
    private String name;

    // Constructor
    public Employee(int id, String name) {
        this.id = id;
        this.name = name;
    }

    // Getter and Setter methods
    public int getId() { return id; }
    public String getName() { return name; }
}

এখানে, Employee ক্লাসের একটি List তৈরি করা হয়েছে এবং সেটি JRBeanCollectionDataSource এর মাধ্যমে JasperReports-এ পাঠানো হয়েছে। রিপোর্টে id এবং name ফিল্ডগুলো প্রিন্ট হবে।


3. JDBC DataSource ব্যবহার করা (Database থেকে Data)

JasperReports সাধারণত JDBC ডেটা সোর্স ব্যবহার করে ডেটাবেস থেকে ডেটা নিয়ে কাজ করে। আপনি SQL কুয়েরি ব্যবহার করে ডেটা নিয়ে রিপোর্ট তৈরি করতে পারেন।

কোড উদাহরণ:
import net.sf.jasperreports.engine.*;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;

public class JDBCDataSourceExample {
    public static void main(String[] args) throws JRException, SQLException {
        // ডেটাবেস কনফিগারেশন
        String url = "jdbc:mysql://localhost:3306/your_database";
        String username = "root";
        String password = "password";
        Connection connection = DriverManager.getConnection(url, username, password);

        // SQL কুয়েরি
        String sql = "SELECT id, name FROM employees";

        // .jasper ফাইলের পাথ
        String reportPath = "path_to_report_template.jasper";

        // রিপোর্ট ফিলিং (JDBC ডেটা সোর্স ব্যবহার করে)
        JasperPrint jasperPrint = JasperFillManager.fillReport(reportPath, null, connection);

        // PDF আউটপুট
        JasperExportManager.exportReportToPdfFile(jasperPrint, "employee_report.pdf");

        // কানেকশন বন্ধ করুন
        connection.close();
    }
}

এখানে, JDBC Connection ব্যবহার করে ডেটাবেস থেকে ডেটা নিয়ে JasperFillManager দিয়ে রিপোর্ট তৈরি করা হয়েছে। SQL কুয়েরি "SELECT id, name FROM employees" দিয়ে ডেটা নেয়া হয়েছে এবং PDF আউটপুট তৈরি করা হয়েছে।


4. Custom DataSource

আপনি যদি কোনো কাস্টম ডেটা সোর্স ব্যবহার করতে চান, তাহলে JRDataSource ইন্টারফেস ইমপ্লিমেন্ট করে কাস্টম ডেটা সোর্স তৈরি করতে পারেন। এর মাধ্যমে আপনি যে কোনো ডেটা সোর্স থেকে ডেটা পাঠাতে পারবেন।

কোড উদাহরণ (Custom DataSource):
import net.sf.jasperreports.engine.*;
import java.util.Iterator;
import java.util.List;

public class CustomDataSourceExample {
    public static void main(String[] args) throws JRException {
        // কাস্টম ডেটা সোর্স
        CustomDataSource dataSource = new CustomDataSource(getEmployeeList());

        // .jasper ফাইলের পাথ
        String reportPath = "path_to_report_template.jasper";

        // রিপোর্ট ফিলিং
        JasperPrint jasperPrint = JasperFillManager.fillReport(reportPath, null, dataSource);

        // PDF আউটপুট
        JasperExportManager.exportReportToPdfFile(jasperPrint, "employee_report.pdf");
    }

    // Employee List তৈরি করার মেথড
    public static List<Employee> getEmployeeList() {
        // কিছু ডেটা তৈরি করা
    }
}

class CustomDataSource implements JRDataSource {
    private Iterator<Employee> iterator;

    public CustomDataSource(List<Employee> employees) {
        this.iterator = employees.iterator();
    }

    @Override
    public boolean next() {
        return iterator.hasNext();
    }

    @Override
    public Object getFieldValue(JRField jrField) throws JRException {
        Employee employee = iterator.next();
        if ("id".equals(jrField.getName())) {
            return employee.getId();
        } else if ("name".equals(jrField.getName())) {
            return employee.getName();
        }
        return null;
    }
}

এখানে, CustomDataSource একটি কাস্টম ডেটা সোর্স তৈরি করে যেখানে আপনি কাস্টম ডেটার উপর ভিত্তি করে ডেটা প্রক্রিয়া করতে পারেন।


  1. JREmptyDataSource ব্যবহার করা হয় যখন কোনো ডেটা সোর্স নেই বা একটি স্ট্যাটিক রিপোর্ট তৈরি করতে চান।
  2. JRBeanCollectionDataSource JavaBeans-এর একটি কালেকশন থেকে ডেটা নিয়ে কাজ করে এবং এটি খুবই জনপ্রিয়।
  3. JDBC DataSource ডেটাবেস থেকে ডেটা নিয়ে কাজ করতে ব্যবহৃত হয়।
  4. Custom DataSource ব্যবহার করে আপনি আপনার কাস্টম ডেটা সোর্স তৈরি করতে পারেন।

এইভাবে JasperReports-এর ডেটা সোর্স কনসেপ্টের মাধ্যমে আপনি রিপোর্ট তৈরি করার জন্য যে কোনো ধরনের ডেটা ব্যবহার করতে পারবেন।

Content added By
Promotion

Are you sure to start over?

Loading...