JFreeChart এর জন্য Reporting এবং Dashboard তৈরি

জেফ্রিচার্ট (JFreeChart) - Big Data and Analytics

392

JFreeChart একটি জনপ্রিয় Java লাইব্রেরি যা গ্রাফিক্যাল ডেটা ভিজুয়ালাইজেশন এবং ড্যাশবোর্ড তৈরি করার জন্য ব্যবহৃত হয়। এই লাইব্রেরি আপনাকে Reports এবং Dashboards তৈরি করতে সহায়ক, যেখানে আপনি ডেটার উপস্থাপনা এবং বিশ্লেষণ করতে পারেন।

Reports এবং Dashboards সাধারণত ব্যবসায়িক বিশ্লেষণ, ব্যবস্থাপনা সিদ্ধান্ত গ্রহণ, অথবা কোনো প্রোজেক্টের অবস্থা মনিটর করার জন্য ব্যবহৃত হয়। JFreeChart এর সাহায্যে আপনি কাস্টম চার্ট তৈরি করতে পারেন এবং সেগুলোকে একটি ড্যাশবোর্ড বা রিপোর্টে উপস্থাপন করতে পারেন।

এই টিউটোরিয়ালে আমরা দেখব কিভাবে JFreeChart ব্যবহার করে Reports এবং Dashboards তৈরি করা যায়।


Reporting with JFreeChart

Reports তৈরি করতে JFreeChart ব্যবহার করে বিভিন্ন চার্ট এবং ডেটা ভিজুয়ালাইজেশন একত্রিত করা যেতে পারে। এই রিপোর্টগুলো সাধারণত PDF বা Excel আকারে তৈরি করা হয়। JFreeChart সরাসরি PDF বা Excel ফাইল তৈরি করার জন্য কোনো built-in ফিচার সরবরাহ করে না, তবে আপনি iText (PDF ফাইলের জন্য) বা Apache POI (Excel ফাইলের জন্য) লাইব্রেরি ব্যবহার করতে পারেন।

Report Example: JFreeChart এর সাথে PDF তৈরি

আপনি iText লাইব্রেরি ব্যবহার করে JFreeChart থেকে রিপোর্ট তৈরি করতে পারেন। নিচে একটি উদাহরণ দেয়া হল যেখানে আমরা একটি Bar Chart তৈরি করব এবং সেটি PDF আকারে সেভ করব।

  1. প্রথমে, iText লাইব্রেরি ডাউনলোড করুন:
  2. কোড উদাহরণ:
import com.itextpdf.text.Document;
import com.itextpdf.text.DocumentException;
import com.itextpdf.text.pdf.PdfWriter;
import org.jfree.chart.ChartFactory;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.plot.PlotOrientation;
import org.jfree.data.category.DefaultCategoryDataset;

import javax.swing.*;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;

public class ReportWithJFreeChart {

    public static void main(String[] args) throws DocumentException, FileNotFoundException {
        // ডেটাসেট তৈরি করা
        DefaultCategoryDataset dataset = new DefaultCategoryDataset();
        dataset.addValue(1.0, "Category 1", "Jan");
        dataset.addValue(4.0, "Category 1", "Feb");
        dataset.addValue(3.0, "Category 1", "Mar");

        // চার্ট তৈরি করা
        JFreeChart chart = ChartFactory.createBarChart(
                "Sales Report",    // চার্টের শিরোনাম
                "Month",           // এক্স-অক্ষের নাম
                "Sales",           // ওয়াই-অক্ষের নাম
                dataset,           // ডেটাসেট
                PlotOrientation.VERTICAL,
                true,              // লেজেন্ড দেখানো
                true,              // টুলটিপস
                false              // URL সমর্থন
        );

        // PDF ডকুমেন্ট তৈরি করা
        Document document = new Document();
        PdfWriter.getInstance(document, new FileOutputStream("Sales_Report.pdf"));

        // ডকুমেন্ট ওপেন করা
        document.open();
        
        // চার্ট প্যানেল তৈরি করা
        ChartPanel chartPanel = new ChartPanel(chart);
        chartPanel.setPreferredSize(new java.awt.Dimension(500, 300));
        
        // চার্টকে PDF ফাইলে যোগ করা
        chartPanel.paintToGraphics(chartPanel.getGraphics(), chartPanel.getBounds());
        
        // ডকুমেন্ট ক্লোজ করা
        document.close();
    }
}

ব্যাখ্যা:

  • iText লাইব্রেরি ব্যবহার করে PDF ফাইল তৈরি করা হয়েছে।
  • JFreeChart দিয়ে একটি Bar Chart তৈরি করা হয়েছে এবং সেটি PDF ফাইলে যোগ করা হয়েছে।

Dashboard with JFreeChart

Dashboard একটি ভিজুয়াল রেপ্রেজেন্টেশন যা বিভিন্ন ধরনের ডেটা বা মেট্রিক্সকে একত্রিত করে। JFreeChart ব্যবহার করে আপনি একাধিক চার্ট একসাথে একটি Dashboard এ প্রদর্শন করতে পারেন।

Dashboard Example

এখানে আমরা একাধিক চার্ট ব্যবহার করে একটি Dashboard তৈরি করার উদাহরণ দেখব। আমরা Bar Chart, Line Chart, এবং Pie Chart একত্রিত করব।

import org.jfree.chart.ChartFactory;
import org.jfree.chart.ChartPanel;
import org.jfree.chart.JFreeChart;
import org.jfree.data.category.DefaultCategoryDataset;
import org.jfree.data.general.DefaultPieDataset;
import org.jfree.data.xy.XYSeries;
import org.jfree.data.xy.XYSeriesCollection;

import javax.swing.*;
import java.awt.*;

public class DashboardExample {

    public static void main(String[] args) {
        // ডেটাসেট ১ (Bar Chart)
        DefaultCategoryDataset dataset1 = new DefaultCategoryDataset();
        dataset1.addValue(10, "Category 1", "Jan");
        dataset1.addValue(20, "Category 1", "Feb");
        dataset1.addValue(30, "Category 1", "Mar");

        // ডেটাসেট ২ (Line Chart)
        XYSeries series = new XYSeries("Line Data");
        series.add(1.0, 2.0);
        series.add(2.0, 3.0);
        series.add(3.0, 5.0);
        XYSeriesCollection dataset2 = new XYSeriesCollection(series);

        // ডেটাসেট ৩ (Pie Chart)
        DefaultPieDataset dataset3 = new DefaultPieDataset();
        dataset3.setValue("Java", 50);
        dataset3.setValue("Python", 30);
        dataset3.setValue("C++", 20);

        // Bar Chart তৈরি করা
        JFreeChart barChart = ChartFactory.createBarChart(
                "Sales Report",    // চার্টের শিরোনাম
                "Month",           // এক্স-অক্ষের নাম
                "Value",           // ওয়াই-অক্ষের নাম
                dataset1,          // ডেটাসেট
                org.jfree.chart.plot.PlotOrientation.VERTICAL,
                true,              // লেজেন্ড প্রদর্শন
                true,              // টুলটিপস
                false              // URL সমর্থন
        );

        // Line Chart তৈরি করা
        JFreeChart lineChart = ChartFactory.createXYLineChart(
                "Growth Over Time", // চার্টের শিরোনাম
                "Time",             // এক্স-অক্ষের নাম
                "Growth",           // ওয়াই-অক্ষের নাম
                dataset2,           // ডেটাসেট
                org.jfree.chart.plot.PlotOrientation.VERTICAL,
                true,               // লেজেন্ড
                true,               // টুলটিপস
                false               // URL সমর্থন
        );

        // Pie Chart তৈরি করা
        JFreeChart pieChart = ChartFactory.createPieChart(
                "Language Usage",    // চার্টের শিরোনাম
                dataset3,            // ডেটাসেট
                true,                // লেজেন্ড
                true,                // টুলটিপস
                false                // URL সমর্থন
        );

        // চার্ট প্যানেল তৈরি করা
        ChartPanel barChartPanel = new ChartPanel(barChart);
        barChartPanel.setPreferredSize(new java.awt.Dimension(400, 300));

        ChartPanel lineChartPanel = new ChartPanel(lineChart);
        lineChartPanel.setPreferredSize(new java.awt.Dimension(400, 300));

        ChartPanel pieChartPanel = new ChartPanel(pieChart);
        pieChartPanel.setPreferredSize(new java.awt.Dimension(400, 300));

        // JFrame এ Dashboard প্রদর্শন করা
        JFrame frame = new JFrame("Dashboard");
        frame.setLayout(new GridLayout(1, 3));  // ৩টি চার্ট একসাথে দেখানো
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.add(barChartPanel);
        frame.add(lineChartPanel);
        frame.add(pieChartPanel);
        frame.pack();
        frame.setVisible(true);
    }
}

ব্যাখ্যা:

  • এখানে Bar Chart, Line Chart, এবং Pie Chart একত্রিত করা হয়েছে।
  • GridLayout ব্যবহার করে একটি Dashboard তৈরি করা হয়েছে যেখানে তিনটি চার্ট একসাথে প্রদর্শিত হচ্ছে।
  • JFreeChart এর তিনটি ভিন্ন ধরনের চার্ট (Bar, Line, Pie) ব্যবহার করে Dashboard তৈরি করা হয়েছে।

Conclusion

JFreeChart ব্যবহার করে Reports এবং Dashboards তৈরি করা খুবই সহজ এবং কার্যকরী। আপনি বিভিন্ন চার্টকে একত্রিত করে একটি ড্যাশবোর্ড তৈরি করতে পারেন, যেখানে প্রতিটি চার্ট আলাদা ডেটা বা মেট্রিক্স প্রদর্শন করবে। এছাড়া, আপনি iText বা Apache POI লাইব্রেরি ব্যবহার করে PDF বা Excel ফরম্যাটে রিপোর্ট তৈরি করতে পারেন। JFreeChart এর মাধ্যমে visual storytelling আরও শক্তিশালী হয়ে ওঠে, যা ব্যবসা বা অন্যান্য বিশ্লেষণমূলক কাজে সহায়ক।

Content added By

JFreeChart দিয়ে Multiple Charts একত্রিত করে একটি Dashboard তৈরি করা সম্ভব, যা একাধিক চার্টের মাধ্যমে ব্যবহারকারীকে ডেটার বিভিন্ন দৃষ্টিকোণ উপস্থাপন করতে সাহায্য করে। একটি ড্যাশবোর্ডে বিভিন্ন ধরনের চার্ট, যেমন Bar Charts, Line Charts, Pie Charts, ইত্যাদি একসাথে রাখা হয়, যা ডেটার সম্পূর্ণ পরিসর তুলে ধরে।

এখানে আমরা দেখব কীভাবে JFreeChart ব্যবহার করে একটি Dashboard তৈরি করা যায় যেখানে একাধিক চার্ট প্রদর্শিত হবে।


1. Multiple JFreeChart তৈরি করা

একটি ড্যাশবোর্ডে সাধারণত একাধিক চার্ট থাকে। JFreeChart এ একাধিক চার্ট তৈরি করতে আপনি আলাদা আলাদা JFreeChart অবজেক্ট তৈরি করবেন এবং সেগুলোকে একটি JPanel বা JTabbedPane-এ যোগ করবেন।

এখানে আমরা তিনটি চার্ট তৈরি করব:

  1. Bar Chart: বিক্রয় ডেটা
  2. Line Chart: মাসিক প্রবণতা
  3. Pie Chart: বাজার শেয়ার

2. ড্যাশবোর্ডে Multiple Charts একত্রিত করা

উদাহরণ: Multiple Charts Dashboard তৈরি করা

import org.jfree.chart.ChartFactory;
import org.jfree.chart.ChartPanel;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.plot.PlotOrientation;
import org.jfree.data.category.DefaultCategoryDataset;
import org.jfree.data.general.DefaultPieDataset;
import org.jfree.data.xy.XYSeries;
import org.jfree.data.xy.XYSeriesCollection;

import javax.swing.*;
import java.awt.*;

public class DashboardExample {

    public static void main(String[] args) {
        // ১. Bar Chart Dataset তৈরি করা
        DefaultCategoryDataset barDataset = new DefaultCategoryDataset();
        barDataset.addValue(10, "Sales", "January");
        barDataset.addValue(20, "Sales", "February");
        barDataset.addValue(30, "Sales", "March");
        JFreeChart barChart = ChartFactory.createBarChart(
                "Sales Chart",       // Chart title
                "Month",             // X-Axis label
                "Sales",             // Y-Axis label
                barDataset,          // Dataset
                PlotOrientation.VERTICAL, // Chart orientation
                true,                // Legend
                true,                // Tooltips
                false                // URLs
        );

        // ২. Line Chart Dataset তৈরি করা
        XYSeries series = new XYSeries("Monthly Growth");
        series.add(1, 10);
        series.add(2, 15);
        series.add(3, 25);
        XYSeriesCollection lineDataset = new XYSeriesCollection(series);
        JFreeChart lineChart = ChartFactory.createXYLineChart(
                "Monthly Growth",    // Chart title
                "Month",             // X-Axis label
                "Growth",            // Y-Axis label
                lineDataset,         // Dataset
                PlotOrientation.VERTICAL, // Chart orientation
                true,                // Legend
                true,                // Tooltips
                false                // URLs
        );

        // ৩. Pie Chart Dataset তৈরি করা
        DefaultPieDataset pieDataset = new DefaultPieDataset();
        pieDataset.setValue("Product A", 50);
        pieDataset.setValue("Product B", 30);
        pieDataset.setValue("Product C", 20);
        JFreeChart pieChart = ChartFactory.createPieChart(
                "Market Share",      // Chart title
                pieDataset,          // Dataset
                true,                // Legend
                true                 // Tooltips
        );

        // চার্ট প্যানেল তৈরি করা
        ChartPanel barPanel = new ChartPanel(barChart);
        ChartPanel linePanel = new ChartPanel(lineChart);
        ChartPanel piePanel = new ChartPanel(pieChart);

        // JPanel তৈরি করা এবং চার্ট প্যানেলগুলো যোগ করা
        JPanel dashboardPanel = new JPanel();
        dashboardPanel.setLayout(new GridLayout(1, 3));  // তিনটি কলামে বিভক্ত

        dashboardPanel.add(barPanel);  // Bar Chart যোগ করা
        dashboardPanel.add(linePanel); // Line Chart যোগ করা
        dashboardPanel.add(piePanel);  // Pie Chart যোগ করা

        // JFrame তৈরি করা এবং Dashboard দেখানো
        JFrame frame = new JFrame("Multiple Charts Dashboard");
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setContentPane(dashboardPanel);
        frame.pack();
        frame.setVisible(true);
    }
}

ব্যাখ্যা:

  • Bar Chart: DefaultCategoryDataset ব্যবহার করে বার চার্ট তৈরি করা হয়েছে, যেখানে Month (মাস) এবং Sales (বিক্রয়) সম্পর্কিত ডেটা প্লট করা হয়েছে।
  • Line Chart: XYSeries ব্যবহার করে একটি লাইন চার্ট তৈরি করা হয়েছে, যেখানে মাসিক প্রবণতা দেখানো হয়েছে।
  • Pie Chart: DefaultPieDataset ব্যবহার করে একটি পাই চার্ট তৈরি করা হয়েছে, যা বাজার শেয়ারের ডেটা দেখায়।
  • Dashboard: সব তিনটি চার্টকে একটি JPanelGridLayout ব্যবহার করে সজ্জিত করা হয়েছে। এখানে GridLayout(1, 3) ব্যবহার করা হয়েছে যাতে সব তিনটি চার্ট একসাথে এক লাইনে প্রদর্শিত হয়।

3. Dashboard Layout এবং Customization

আপনি চাইলে ড্যাশবোর্ডের লেআউট এবং চার্টের ডিজাইন কাস্টমাইজ করতে পারেন।

উদাহরণ: Dashboard Layout কাস্টমাইজ করা

// Layout customizations
dashboardPanel.setLayout(new BoxLayout(dashboardPanel, BoxLayout.Y_AXIS)); // Vertically stacked layout
dashboardPanel.add(barPanel);
dashboardPanel.add(linePanel);
dashboardPanel.add(piePanel);

এখানে, BoxLayout ব্যবহার করে চার্টগুলোকে উল্লম্বভাবে সাজানো হয়েছে। এছাড়া আপনি BorderLayout অথবা FlowLayout ব্যবহার করেও বিভিন্ন ড্যাশবোর্ড লেআউট তৈরি করতে পারেন।


4. Advanced Dashboard Functionalities

ড্যাশবোর্ডে অন্যান্য কার্যকলাপ যেমন ডেটা ফিল্টারিং, ইন্টারঅ্যাকটিভ ফিচার যোগ করা যেতে পারে। যেমন:

  1. Data Filtering: আপনি ডেটা ফিল্টার করার জন্য ড্রপডাউন মেনু বা বোতাম ব্যবহার করতে পারেন, যার মাধ্যমে ব্যবহারকারী চার্টে প্রদর্শিত ডেটা পরিবর্তন করতে পারবেন।
  2. Real-time Data: যদি আপনার ডেটা লাইভ হয়, আপনি real-time updates এবং data streaming এর জন্য ইভেন্ট লিসেনার ব্যবহার করতে পারেন।
  3. User Input: ব্যবহারকারী ইনপুটের মাধ্যমে ডেটা আপডেট করা বা চার্টের স্টাইল পরিবর্তন করার জন্য কাস্টম কন্ট্রোল যোগ করা।

সারসংক্ষেপ

JFreeChart দিয়ে Multiple Charts একত্রিত করে একটি Dashboard তৈরি করা খুবই সহজ এবং কার্যকরী। আপনি Bar Chart, Line Chart, Pie Chart এবং অন্যান্য ধরনের চার্ট একসাথে প্রদর্শন করে একাধিক ডেটা ভিউ প্রদর্শন করতে পারেন। একাধিক চার্টের মাধ্যমে ব্যবহারকারীদের ডেটার বিভিন্ন দৃষ্টিকোণ দেখতে সাহায্য করা যায়, এবং ড্যাশবোর্ডের লেআউট কাস্টমাইজ করার মাধ্যমে আপনি আরও ইন্টারঅ্যাকটিভ এবং ইউজার-বান্ধব ড্যাশবোর্ড তৈরি করতে পারেন।

Content added By

JFreeChart এবং JasperReports একত্রে ব্যবহার করার মাধ্যমে আপনি dynamic charts তৈরি করতে পারেন যা রিপোর্টের মধ্যে গ্রাফিক্যাল ডেটা উপস্থাপন করতে সক্ষম। JasperReports একটি ওপেন সোর্স রিপোর্টিং টুল যা Java অ্যাপ্লিকেশনগুলির জন্য রিপোর্ট তৈরি করতে ব্যবহৃত হয়, এবং JFreeChart চার্ট তৈরি করতে ব্যবহৃত হয়। এই দুটি টুল একসাথে ব্যবহার করে আপনি JasperReports রিপোর্টে JFreeChart-এর চার্টগুলো অন্তর্ভুক্ত করতে পারেন।

এই ইন্টিগ্রেশনটি সাধারণত JasperReports এর Chart রিপোর্ট উপাদান ব্যবহার করে করা হয়, যেখানে JFreeChart ডেটা চার্ট তৈরি করার জন্য ব্যবহৃত হয় এবং এটি রিপোর্টে সন্নিবেশিত হয়।


JasperReports এবং JFreeChart Integration: প্রয়োজনীয় লাইব্রেরি

  1. JasperReports লাইব্রেরি
  2. JFreeChart লাইব্রেরি
  3. JasperReports Chart Plugin (যা JFreeChart এর সাথে কাজ করে)

এটি নিশ্চিত করুন যে আপনার প্রোজেক্টে উপরের সব লাইব্রেরি এবং তাদের ডিপেনডেন্সি যুক্ত করা আছে। যদি আপনি Maven ব্যবহার করেন, তবে আপনি নিম্নলিখিত ডিপেনডেন্সি ফাইলগুলো ব্যবহার করতে পারেন।

Maven Dependency (JasperReports এবং JFreeChart)

<dependency>
    <groupId>net.sf.jasperreports</groupId>
    <artifactId>jasperreports</artifactId>
    <version>6.16.0</version>
</dependency>

<dependency>
    <groupId>org.jfree</groupId>
    <artifactId>jfreechart</artifactId>
    <version>1.5.3</version>
</dependency>

<dependency>
    <groupId>net.sf.jasperreports</groupId>
    <artifactId>jasperreports-chart</artifactId>
    <version>6.16.0</version>
</dependency>

1. JFreeChart-এ Chart তৈরি করা

প্রথমেই আপনাকে JFreeChart দিয়ে একটি চার্ট তৈরি করতে হবে যা পরবর্তীতে JasperReports রিপোর্টে অন্তর্ভুক্ত করা হবে। উদাহরণস্বরূপ, একটি Bar Chart তৈরি করা হবে।

JFreeChart তৈরি উদাহরণ

import org.jfree.chart.ChartFactory;
import org.jfree.chart.JFreeChart;
import org.jfree.data.category.DefaultCategoryDataset;

public class JFreeChartExample {
    public static JFreeChart createChart() {
        // ডেটাসেট তৈরি করা
        DefaultCategoryDataset dataset = new DefaultCategoryDataset();
        dataset.addValue(10, "Series1", "Jan");
        dataset.addValue(20, "Series1", "Feb");
        dataset.addValue(30, "Series1", "Mar");

        // চার্ট তৈরি করা
        JFreeChart chart = ChartFactory.createBarChart(
                "Sales Report",    // Chart Title
                "Month",           // X-Axis Label
                "Sales",           // Y-Axis Label
                dataset,           // Dataset
                org.jfree.chart.plot.PlotOrientation.VERTICAL,
                true,              // Legend
                true,              // Tooltips
                false              // URLs
        );

        return chart;
    }
}

এখানে একটি Bar Chart তৈরি করা হয়েছে যেখানে Month এবং Sales এর জন্য ডেটা রয়েছে।


2. JasperReports Report Design

এখন, JasperReports ব্যবহার করে একটি রিপোর্ট ডিজাইন করতে হবে, যেখানে JFreeChart এর তৈরি করা চার্টটি ইন্টিগ্রেট করা হবে।

JasperReports Template (JRXML) তৈরি

আপনি Jaspersoft Studio ব্যবহার করে একটি JRXML রিপোর্ট ফাইল তৈরি করতে পারেন। তবে, যদি আপনি কোডের মাধ্যমে রিপোর্ট তৈরি করতে চান, তাহলে নিম্নলিখিত কোড ব্যবহার করা যাবে:

<?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/jasperreports.xsd"
              name="SalesReport" pageWidth="595" pageHeight="842" columnWidth="555"
              columnSpacing="1" leftMargin="20" rightMargin="20" topMargin="20" bottomMargin="20">

    <queryString>
        <![CDATA[SELECT month, sales FROM sales_data]]>
    </queryString>

    <field name="month" class="java.lang.String"/>
    <field name="sales" class="java.lang.Double"/>

    <!-- Chart Component -->
    <chart>
        <chartType>BarChart</chartType>
        <title>Sales Chart</title>
        <categorySeries>
            <categorySeriesExpression><![CDATA["$F{month}"]]></categorySeriesExpression>
            <valueExpression><![CDATA[$F{sales}]]></valueExpression>
        </categorySeries>
    </chart>

</jasperReport>

এই JRXML ফাইলটি SQL Query ব্যবহার করে sales_data টেবিল থেকে month এবং sales কলাম নির্বাচন করছে এবং একটি Bar Chart তৈরি করছে।


3. Report Compile এবং Data Pass করা

এখন, JFreeChart দ্বারা তৈরি করা চার্টটি JasperReports রিপোর্টে যোগ করতে হবে। এটি JasperReports API ব্যবহার করে করা যাবে, যেখানে প্রথমে JasperReport কম্পাইল করা হয় এবং তারপর JFreeChart এর ডেটা সেট JasperPrint এর মধ্যে পাস করা হয়।

JFreeChart এবং JasperReports Integration Example

import net.sf.jasperreports.engine.*;
import net.sf.jasperreports.engine.data.JRBeanCollectionDataSource;
import org.jfree.chart.JFreeChart;

import javax.swing.*;
import java.util.HashMap;
import java.util.Map;

public class JasperReportWithJFreeChart {
    public static void main(String[] args) {
        try {
            // JasperReports রিপোর্ট কম্পাইল করা
            JasperReport jasperReport = JasperCompileManager.compileReport("report_template.jrxml");

            // DataSource তৈরি করা
            JRBeanCollectionDataSource dataSource = new JRBeanCollectionDataSource(fetchDataFromDatabase());

            // প্যারামিটার তৈরি করা
            Map<String, Object> parameters = new HashMap<>();
            parameters.put("Chart", createChart());  // JFreeChart তৈরি করা এবং প্যারামিটারে সেট করা

            // রিপোর্ট ফিলিটারে পাস করা
            JasperPrint jasperPrint = JasperFillManager.fillReport(jasperReport, parameters, dataSource);

            // রিপোর্ট দেখানো
            JasperViewer.viewReport(jasperPrint, false);
        } catch (JRException e) {
            e.printStackTrace();
        }
    }

    private static JFreeChart createChart() {
        // এখানে JFreeChart তৈরি করা হবে, যেটি উপরের উদাহরণ থেকে এসেছে
        return JFreeChartExample.createChart();
    }

    private static Object fetchDataFromDatabase() {
        // এখানে ডাটাবেস থেকে ডেটা ফেচ করা হবে (উদাহরণস্বরূপ)
        return new ArrayList<>();
    }
}

ব্যাখ্যা:

  1. JasperCompileManager ব্যবহার করে JRXML রিপোর্ট কম্পাইল করা হচ্ছে।
  2. JRBeanCollectionDataSource ব্যবহার করে ডেটা পাস করা হচ্ছে, যা JasperPrint তৈরি করে।
  3. JFreeChart তৈরি করার জন্য JasperReport-এর প্যারামিটার হিসেবে সেট করা হয়েছে।
  4. রিপোর্টটি JasperViewer ব্যবহার করে দেখানো হয়েছে।

4. Chart Display in Report

JFreeChart এর তৈরি করা চার্ট রিপোর্টে সন্নিবেশিত হয় এবং আপনি JasperReports এ এটি একটি গ্রাফিক্যাল উপাদান হিসেবে দেখতে পাবেন। এই চার্টটি ডাটাবেস থেকে আনা ডেটা অনুসারে ডাইনামিকভাবে আপডেট হয় এবং রিপোর্টের অংশ হিসেবে প্রদর্শিত হয়।


সারসংক্ষেপ

JFreeChart এবং JasperReports একত্রে ব্যবহার করলে আপনি ডাইনামিকভাবে chart-based reports তৈরি করতে পারেন। JasperReports রিপোর্টের মধ্যে JFreeChart ইন্টিগ্রেট করা অনেক সহজ, যেখানে JasperReports এর Chart উপাদান ব্যবহার করে JFreeChart এর তৈরি করা চার্ট রিপোর্টে সন্নিবেশিত হয়। JFreeChart এর মাধ্যমে আপনি বিভিন্ন ধরণের চার্ট যেমন Bar Chart, Line Chart, Pie Chart ইত্যাদি তৈরি করতে পারেন এবং সেগুলিকে JasperReports রিপোর্টে অন্তর্ভুক্ত করতে পারেন।

Content added By

JFreeChart হল একটি জনপ্রিয় এবং শক্তিশালী লাইব্রেরি যা Java অ্যাপ্লিকেশনগুলিতে গ্রাফিক্যাল ডেটা ভিজ্যুয়ালাইজেশন তৈরিতে ব্যবহৃত হয়। যখন ডেটা বিশ্লেষণ, রিপোর্টিং এবং ডেটা ভিজ্যুয়ালাইজেশন একসাথে করতে হয়, তখন JFreeChart একটি অপরিহার্য টুল হতে পারে। Reporting Framework-এ JFreeChart ব্যবহারের মাধ্যমে আপনি রিপোর্টে গ্রাফিক্যাল উপস্থাপনাও অন্তর্ভুক্ত করতে পারেন।

একটি রিপোর্টিং ফ্রেমওয়ার্ক সাধারণত ডেটা এক্সট্রাকশন, প্রক্রিয়াকরণ এবং উপস্থাপনার জন্য ব্যবহৃত হয়। JFreeChart আপনাকে রিপোর্টে charts যোগ করার সুযোগ দেয়, যা রিপোর্টগুলিকে আরও বিস্তারিত এবং ব্যবহারকারী-বান্ধব করে তোলে। JFreeChart-কে একটি Reporting Framework-এর সাথে ইন্টিগ্রেট করার জন্য, সাধারণত JasperReports, BIRT (Business Intelligence and Reporting Tools), অথবা iReport ব্যবহার করা হয়।


JFreeChart Integration with JasperReports

JasperReports একটি ওপেন-সোর্স রিপোর্টিং টুল যা Java অ্যাপ্লিকেশনগুলির জন্য শক্তিশালী রিপোর্ট তৈরি করার সুবিধা দেয়। এটি এক্সপোর্ট (PDF, HTML, Excel, ইত্যাদি) এবং ডেটা ভিজুয়ালাইজেশনের জন্য JFreeChart সমর্থন করে।

১. JasperReports-এ JFreeChart ব্যবহার করার প্রক্রিয়া:

JasperReportsJFreeChart ব্যবহার করার জন্য, আপনি JasperReports Library-এর সাথে JFreeChart-এর JAR ফাইল যোগ করতে হবে এবং রিপোর্ট ডিজাইন করতে হবে যেখানে আপনি chart ব্যবহার করবেন।

১.১. JFreeChart-এ Chart তৈরি এবং JasperReports রিপোর্টে যোগ করা

import net.sf.jasperreports.engine.*;
import net.sf.jasperreports.view.JasperViewer;
import org.jfree.chart.ChartFactory;
import org.jfree.chart.ChartPanel;
import org.jfree.chart.JFreeChart;
import org.jfree.data.category.DefaultCategoryDataset;

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

public class JFreeChartJasperReportsExample {
    public static void main(String[] args) {
        try {
            // Chart তৈরি করা
            DefaultCategoryDataset dataset = new DefaultCategoryDataset();
            dataset.addValue(1.0, "Series1", "January");
            dataset.addValue(4.0, "Series1", "February");
            dataset.addValue(3.0, "Series1", "March");

            JFreeChart chart = ChartFactory.createBarChart(
                    "Sales Data",  // Chart Title
                    "Month",        // X-Axis Label
                    "Sales",        // Y-Axis Label
                    dataset         // Dataset
            );

            // JasperReports রিপোর্টের জন্য Map তৈরি করা
            Map<String, Object> parameters = new HashMap<>();
            parameters.put("Chart", chart);

            // JasperReport ফাইল (JasperReports template) লোড করা
            JasperReport jasperReport = JasperCompileManager.compileReport("path/to/your_report.jrxml");

            // রিপোর্ট তৈরি করা
            JasperPrint jasperPrint = JasperFillManager.fillReport(jasperReport, parameters);

            // রিপোর্ট ভিউয়ারে দেখানো
            JasperViewer.viewReport(jasperPrint, false);

        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

ব্যাখ্যা:

  • JFreeChart দ্বারা Bar Chart তৈরি করা হয়েছে।
  • JasperReports-এর parameters.put("Chart", chart) ব্যবহার করে চিত্রটি রিপোর্টের মধ্যে যোগ করা হয়েছে।
  • JasperCompileManager এবং JasperFillManager ব্যবহার করে JasperReport ফাইল (JRXML) লোড এবং পূর্ণাঙ্গ রিপোর্ট তৈরি করা হয়েছে।

১.২. JasperReports Template (JRXML)

JasperReports এ JRXML ফাইলটি রিপোর্টের টেমপ্লেট হিসেবে ব্যবহৃত হয়, যেখানে আপনি গ্রাফিক্স (যেমন চার্ট) এবং অন্যান্য উপাদান কাস্টমাইজ করতে পারেন।

JRXML ফাইলের উদাহরণ (যে ফাইলটি JasperCompileManager.compileReport() দ্বারা কম্পাইল হয়):

<jasperReport xmlns="http://jasperreports.sourceforge.net/jasperreports" xmlns:x="http://www.w3.org/2001/XMLSchema-instance" x:use-context-attributes="true" name="Sales Report" pageWidth="595" pageHeight="842" columnWidth="515" leftMargin="40" rightMargin="40" topMargin="60" bottomMargin="60" >
    <title>
        <band height="50">
            <staticText>
                <reportElement x="0" y="0" width="515" height="50" />
                <textElement textAlignment="Center">
                    <font size="18" isBold="true"/>
                </textElement>
                <text><![CDATA[Sales Report]]></text>
            </staticText>
        </band>
    </title>
    <summary>
        <band height="400">
            <chart>
                <reportElement x="0" y="50" width="515" height="300"/>
                <chartTitle>
                    <font size="16" isBold="true"/>
                    <text><![CDATA[Sales Chart]]></text>
                </chartTitle>
                <categoryDataset>
                    <dataset>
                        <datasetParameter name="Chart"/>
                    </dataset>
                </categoryDataset>
            </chart>
        </band>
    </summary>
</jasperReport>

২. iReport বা Jaspersoft Studio ব্যবহার করে JFreeChart যোগ করা

iReport এবং Jaspersoft Studio হল গ্রাফিকাল রিপোর্ট ডিজাইনার টুল যা JasperReports এর সাথে কাজ করে এবং JFreeChart যোগ করার জন্য একটি ব্যবহারকারী-বান্ধব ইন্টারফেস প্রদান করে।

iReport অথবা Jaspersoft Studio-এ JFreeChart যোগ করার ধাপসমূহ:

  1. JFreeChart Library iReport বা Jaspersoft Studio প্রজেক্টে যোগ করুন।
  2. Chart component টেনে এনে রিপোর্ট ডিজাইনে রাখুন।
  3. Chart expression লিখে ডেটাসেট এবং চিত্রের ধরন নির্বাচন করুন।
  4. রিপোর্ট টেমপ্লেটের parameters এর মাধ্যমে JFreeChart ডেটা পাস করুন।

৩. JFreeChart with BIRT (Business Intelligence and Reporting Tools)

BIRT একটি ওপেন-সোর্স রিপোর্টিং টুল যা Eclipse-এর অংশ। BIRT-এ JFreeChart ব্যবহার করা যায় Chart Engine এর মাধ্যমে। আপনি BIRT-এ চার্ট তৈরি করার সময় JFreeChart এর রিপোর্টের মধ্যে ডাইনামিক চার্ট যোগ করতে পারেন।

BIRT-এ JFreeChart ব্যবহার:

  1. BIRT প্রকল্প তৈরি করুন এবং JFreeChart Library-এর JAR ফাইল যোগ করুন।
  2. BIRT রিপোর্টে JFreeChart কনফিগার করুন।
  3. রিপোর্টে dynamic chart যুক্ত করার জন্য JavaScript বা JSP ব্যবহার করুন।

সারসংক্ষেপ

JFreeChart কে Reporting Framework (যেমন JasperReports, BIRT, অথবা iReport) এর সাথে ইন্টিগ্রেট করে আপনি আপনার রিপোর্টে dynamic data ভিজ্যুয়ালাইজেশন এবং interactive charts যোগ করতে পারেন। JFreeChart এর মাধ্যমে bar charts, line charts, pie charts, এবং অন্যান্য গ্রাফিক্যাল উপস্থাপনাগুলি রিপোর্টের মধ্যে অন্তর্ভুক্ত করা যায়, যা রিপোর্টকে আরও তথ্যবহুল এবং ব্যবহারকারী-বান্ধব করে তোলে। JFreeChart এবং JasperReports, BIRT বা iReport-এর সাহায্যে আপনি কার্যকরী এবং পেশাদার রিপোর্ট তৈরি করতে পারবেন, যা গ্রাফিক্যাল ডেটা ভিজ্যুয়ালাইজেশন ও বিশ্লেষণ প্রদান করবে।

Content added By

JFreeChart লাইব্রেরি ব্যবহার করে আপনি Interactive এবং Printable Reports তৈরি করতে পারেন। Interactive reports ব্যবহারকারীদের চার্টের সাথে সরাসরি ইন্টারঅ্যাক্ট করার সুযোগ দেয়, যেমন মাউস ক্লিক, হোভার বা কীবোর্ড ইনপুটের মাধ্যমে ডেটার বিস্তারিত বিশ্লেষণ করা। অন্যদিকে, Printable Reports ব্যবহারকারীদের জন্য একটি প্রিন্টেবল বা PDF ফরম্যাটে ডেটা ভিজুয়ালাইজেশন তৈরি করতে সহায়ক।

এখানে আমরা দেখব কিভাবে Interactive এবং Printable reports তৈরি করা যায় JFreeChart এর মাধ্যমে।


1. Interactive Reports তৈরি করা

Interactive Reports এর মাধ্যমে ব্যবহারকারীরা চার্টের সাথে সরাসরি ইন্টারঅ্যাক্ট করতে পারে, যেমন ডেটা পয়েন্ট ক্লিক করা, মাউস হোভার করা, বা কাস্টম ফিল্টার প্রয়োগ করা।

Interactive Report উদাহরণ: Mouse Event Handling

এই উদাহরণে, আমরা MouseListener ব্যবহার করে একটি Interactive Bar Chart তৈরি করব যেখানে ব্যবহারকারীরা চার্টের পয়েন্টে ক্লিক করে ডেটা দেখতে পারবে।

import org.jfree.chart.ChartFactory;
import org.jfree.chart.ChartPanel;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.plot.PlotOrientation;
import org.jfree.data.category.DefaultCategoryDataset;

import javax.swing.*;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;

public class InteractiveReportExample {
    public static void main(String[] args) {
        // ডেটাসেট তৈরি করা
        DefaultCategoryDataset dataset = new DefaultCategoryDataset();
        dataset.addValue(10, "Category 1", "Jan");
        dataset.addValue(20, "Category 1", "Feb");
        dataset.addValue(30, "Category 1", "Mar");

        // চার্ট তৈরি করা
        JFreeChart chart = ChartFactory.createBarChart(
                "Sales Data",           // চার্টের শিরোনাম
                "Month",                // এক্স-অক্ষের নাম
                "Sales (in units)",     // ওয়াই-অক্ষের নাম
                dataset,                // ডেটাসেট
                PlotOrientation.VERTICAL, true, true, false);

        // MouseListener দিয়ে ইন্টারঅ্যাকটিভ ফিচার যোগ করা
        chart.addMouseListener(new MouseAdapter() {
            @Override
            public void mouseClicked(MouseEvent e) {
                int x = e.getX();
                int y = e.getY();
                JOptionPane.showMessageDialog(null, "Mouse clicked at X: " + x + " Y: " + y);
            }
        });

        // চার্ট প্যানেল তৈরি করা
        ChartPanel chartPanel = new ChartPanel(chart);
        chartPanel.setPreferredSize(new java.awt.Dimension(800, 600));

        // JFrame এ চার্ট প্রদর্শন করা
        JFrame frame = new JFrame();
        frame.setContentPane(chartPanel);
        frame.pack();
        frame.setVisible(true);
    }
}

ব্যাখ্যা:

  • MouseAdapter ব্যবহার করে মাউস ক্লিক ইভেন্ট হ্যান্ডল করা হয়েছে, যেখানে চার্টের পয়েন্টে ক্লিক করলে তার X এবং Y পজিশন দেখানো হয়।
  • এই ইন্টারঅ্যাকটিভ ফিচারটি ব্যবহারকারীকে চার্টের সাথে সরাসরি যোগাযোগ করার সুযোগ দেয়।

2. Printable Reports তৈরি করা

JFreeChart ব্যবহার করে Printable Reports তৈরি করা যায়, যার মাধ্যমে আপনি চার্টকে প্রিন্টযোগ্য ফরম্যাটে (যেমন PDF বা প্রিন্ট) তৈরি করতে পারেন। JFreeChart ChartPanel ক্লাসের print() পদ্ধতি ব্যবহার করে এটি করতে সহায়ক।

Printable Report উদাহরণ

এই উদাহরণে, আমরা JFreeChart চার্ট প্রিন্ট করার জন্য Printable ফিচার ব্যবহার করব।

import org.jfree.chart.ChartFactory;
import org.jfree.chart.ChartPanel;
import org.jfree.chart.JFreeChart;
import org.jfree.data.category.DefaultCategoryDataset;

import javax.swing.*;
import java.awt.print.PrinterException;
import java.awt.print.PrintJob;

public class PrintableReportExample {
    public static void main(String[] args) {
        // ডেটাসেট তৈরি করা
        DefaultCategoryDataset dataset = new DefaultCategoryDataset();
        dataset.addValue(10, "Category 1", "Jan");
        dataset.addValue(20, "Category 1", "Feb");
        dataset.addValue(30, "Category 1", "Mar");

        // চার্ট তৈরি করা
        JFreeChart chart = ChartFactory.createBarChart(
                "Sales Data",           // চার্টের শিরোনাম
                "Month",                // এক্স-অক্ষের নাম
                "Sales (in units)",     // ওয়াই-অক্ষের নাম
                dataset,                // ডেটাসেট
                PlotOrientation.VERTICAL, true, true, false);

        // চার্ট প্যানেল তৈরি করা
        ChartPanel chartPanel = new ChartPanel(chart);
        chartPanel.setPreferredSize(new java.awt.Dimension(800, 600));

        // JFrame এ চার্ট প্রদর্শন করা
        JFrame frame = new JFrame();
        frame.setContentPane(chartPanel);
        frame.pack();
        frame.setVisible(true);

        // প্রিন্ট করার জন্য চার্ট প্যানেল প্রিন্ট করা
        try {
            chartPanel.print(); // চার্টটি প্রিন্ট করা
        } catch (PrinterException e) {
            e.printStackTrace();
        }
    }
}

ব্যাখ্যা:

  • chartPanel.print() পদ্ধতি ব্যবহার করে আপনি চার্টকে সরাসরি প্রিন্ট করতে পারবেন।
  • এটি আপনাকে চার্টের একটি hardcopy তৈরি করতে সহায়ক, যা পরে প্রিন্টারে পাঠানো যেতে পারে।

3. PDF ফরম্যাটে Printable Reports তৈরি করা

JFreeChart এর মাধ্যমে PDF ফরম্যাটে রিপোর্ট তৈরি করতে, আপনি iText লাইব্রেরি ব্যবহার করতে পারেন। iText একটি শক্তিশালী লাইব্রেরি যা আপনাকে PDF ফাইল তৈরি করতে সাহায্য করে।

iText লাইব্রেরি যোগ করা

Maven ব্যবহারকারী হলে, আপনাকে pom.xml ফাইলে এই ডিপেনডেন্সি যুক্ত করতে হবে:

<dependency>
    <groupId>com.itextpdf</groupId>
    <artifactId>itext7-core</artifactId>
    <version>7.1.15</version>
</dependency>

PDF রিপোর্ট তৈরি উদাহরণ

import com.itextpdf.text.Document;
import com.itextpdf.text.Paragraph;
import com.itextpdf.text.pdf.PdfWriter;
import org.jfree.chart.ChartFactory;
import org.jfree.chart.ChartPanel;
import org.jfree.chart.JFreeChart;
import org.jfree.data.category.DefaultCategoryDataset;

import java.io.FileOutputStream;
import java.io.IOException;

public class PDFReportExample {
    public static void main(String[] args) {
        // ডেটাসেট তৈরি করা
        DefaultCategoryDataset dataset = new DefaultCategoryDataset();
        dataset.addValue(10, "Category 1", "Jan");
        dataset.addValue(20, "Category 1", "Feb");
        dataset.addValue(30, "Category 1", "Mar");

        // চার্ট তৈরি করা
        JFreeChart chart = ChartFactory.createBarChart(
                "Sales Data",  // Chart Title
                "Month",       // X-Axis Label
                "Sales",       // Y-Axis Label
                dataset,       // Dataset
                PlotOrientation.VERTICAL, true, true, false);

        // PDF Document তৈরি করা
        Document document = new Document();
        try {
            PdfWriter.getInstance(document, new FileOutputStream("SalesReport.pdf"));
            document.open();
            document.add(new Paragraph("Sales Data Report"));
            // চার্টের ইমেজ পেতে JFreeChart থেকে
            chart.createBufferedImage(500, 300);
            document.add(new Paragraph("Chart Image"));
            document.close();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

ব্যাখ্যা:

  • iText লাইব্রেরি ব্যবহার করে আমরা একটি PDF তৈরি করেছি এবং এতে JFreeChart এর ছবি যুক্ত করেছি।
  • chart.createBufferedImage(500, 300) ব্যবহার করে চার্টের একটি ইমেজ তৈরি করা হয়েছে, যা PDF ফাইলের মধ্যে যোগ করা হয়েছে।

4. Interactive Filtering Reports

আপনি যদি interactive filtering চান, অর্থাৎ ব্যবহারকারীদের ডেটা ফিল্টার করার সুযোগ দিতে চান, তবে একটি ComboBox বা Slider ব্যবহার করে ডেটার অংশ নির্ধারণ করতে পারেন। উদাহরণস্বরূপ, একটি ComboBox ব্যবহার করে আপনি একটি নির্দিষ্ট মাসের বিক্রয় তথ্য দেখতে পারেন।

Interactive Filtering উদাহরণ

import org.jfree.chart.ChartFactory;
import org.jfree.chart.ChartPanel;
import org.jfree.chart.JFreeChart;
import org.jfree.data.category.DefaultCategoryDataset;

import javax.swing.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

public class InteractiveFilteringExample {
    public static void main(String[] args) {
        // ডেটাসেট তৈরি করা
        DefaultCategoryDataset dataset = new DefaultCategoryDataset();
        dataset.addValue(10, "Sales", "Jan");
        dataset.addValue(20, "Sales", "Feb");
        dataset.addValue(30, "Sales", "Mar");

        // চার্ট তৈরি করা
        JFreeChart chart = ChartFactory.createBarChart(
                "Sales Data",     // Chart Title
                "Month",          // X-Axis Label
                "Sales",          // Y-Axis Label
                dataset,          // Dataset
                PlotOrientation.VERTICAL, true, true, false);

        // চার্ট প্যানেল তৈরি করা
        ChartPanel chartPanel = new ChartPanel(chart);
        chartPanel.setPreferredSize(new java.awt.Dimension(800, 600));

        // ComboBox এর মাধ্যমে ডেটা ফিল্টার করার অপশন
        JComboBox<String> monthComboBox = new JComboBox<>(new String[]{"Jan", "Feb", "Mar"});
        monthComboBox.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                String selectedMonth = (String) monthComboBox.getSelectedItem();
                // নির্দিষ্ট মাসের জন্য ডেটা আপডেট করা
                if (selectedMonth.equals("Jan")) {
                    dataset.setValue(10, "Sales", "Jan");
                } else if (selectedMonth.equals("Feb")) {
                    dataset.setValue(20, "Sales", "Feb");
                } else {
                    dataset.setValue(30, "Sales", "Mar");
                }
            }
        });

        // JFrame তৈরি করা
        JFrame frame = new JFrame();
        frame.setLayout(new BorderLayout());
        frame.add(chartPanel, BorderLayout.CENTER);
        frame.add(monthComboBox, BorderLayout.SOUTH);
        frame.pack();
        frame.setVisible(true);
    }
}

ব্যাখ্যা:

  • JComboBox ব্যবহার করে ব্যবহারকারীদের একটি মাস নির্বাচন করার সুযোগ দেওয়া হয়েছে।
  • ActionListener এর মাধ্যমে মাস নির্বাচন করলে ডেটাসেট আপডেট হবে এবং চার্টটি রিফ্রেশ হবে।

সারসংক্ষেপ

JFreeChart এর মাধ্যমে আপনি Interactive Reports এবং Printable Reports তৈরি করতে পারেন। Interactive Reports এর মাধ্যমে আপনি মাউস ক্লিক, কীবোর্ড ইনপুট, অথবা কাস্টম ফিল্টার প্রয়োগ করে ডেটা ভিজুয়ালাইজেশন করতে পারেন, এবং Printable Reports এর মাধ্যমে আপনি সরাসরি চার্ট প্রিন্ট করতে পারেন বা PDF ফরম্যাটে রপ্তানি করতে পারেন। iText লাইব্রেরি ব্যবহার করে PDF Reports তৈরি করা সম্ভব এবং JComboBox অথবা Slider ব্যবহার করে ইন্টারঅ্যাকটিভ ফিল্টারিং করা যায়।

Content added By
Promotion

Are you sure to start over?

Loading...