Expression Language (Java Expression) এর ব্যবহার

জ্যাসপার রিপোর্ট (JasperReports) - Java Technologies

409

Expression Language (EL) JasperReports-এ একটি গুরুত্বপূর্ণ বৈশিষ্ট্য যা রিপোর্টের কনটেন্ট (যেমন ডেটা, গণনা বা কাস্টম ফিল্ড) পরিচালনা করার জন্য ব্যবহার করা হয়। JasperReports Expression Language (যা সাধারণত Java Expression হিসেবে পরিচিত) আপনাকে রিপোর্টে ডাইনামিক ডেটা যুক্ত করার, কাস্টম গণনা বা লজিক প্রয়োগ করার এবং রিপোর্টে বিভিন্ন কার্যকর ফিচার তৈরি করার সুযোগ দেয়।

JasperReports-এ Java Expression মূলত JRXML (JasperReports XML) টেমপ্লেটের মধ্যে <textFieldExpression>, <fieldExpression>, <variableExpression>, এবং অন্যান্য এলিমেন্টে ব্যবহার করা হয়। এই Expressions সাধারণত ডেটা সোর্স থেকে ডেটা নেওয়া, গণনা করা বা কাস্টম লজিক প্রয়োগের জন্য ব্যবহৃত হয়।


Expression Language এর মূল ব্যবহার

  1. Field Expression:
    • fieldExpression একটি field (যেমন ডেটাবেস থেকে আনা ডেটা) প্রসেস করার জন্য ব্যবহার হয়।
  2. TextField Expression:
    • textFieldExpression ব্যবহার করা হয় টেক্সট ফিল্ডের মান তৈরি করার জন্য, যেখানে Java Expression যোগ করা হয়।
  3. Variable Expression:
    • variableExpression ব্যবহার করা হয় রিপোর্টে গণনা বা ভেরিয়েবল মূল্যায়ন করার জন্য।
  4. Parameter Expression:
    • parameterExpression ব্যবহার করা হয় রিপোর্টের প্যারামিটারগুলোর মান পরিবর্তন বা নিয়ন্ত্রণ করার জন্য।

Java Expression উদাহরণ JasperReports-এ

১. Field Expression

Field Expression ব্যবহার করে আপনি ডেটা সোর্স থেকে পাওয়া ফিল্ডের মান অ্যাক্সেস করতে পারেন। উদাহরণস্বরূপ, যদি আপনার ডেটাবেসে name নামক একটি ফিল্ড থাকে, তাহলে সেই ফিল্ডটি আপনি নিচেরভাবে ব্যবহার করতে পারবেন।

<textField>
    <reportElement x="0" y="0" width="300" height="30"/>
    <textFieldExpression><![CDATA[$F{name}]]></textFieldExpression>
</textField>

এখানে:

  • $F{name} মানে হল name ফিল্ডের মান।

২. TextField Expression

TextField Expression ব্যবহার করে আপনি কাস্টম লজিক এবং গণনা করতে পারেন, যেমন কনক্যাটিনেশন (string concatenation), ফরম্যাটিং বা ডেটার ফিল্টারিং।

<textField>
    <reportElement x="0" y="0" width="300" height="30"/>
    <textFieldExpression><![CDATA["Hello, " + $F{name}]]></textFieldExpression>
</textField>

এখানে:

  • "Hello, " এবং $F{name} দুটি স্ট্রিংয়ের কনক্যাটিনেশন করা হয়েছে, যেখানে name ফিল্ডের মান যোগ করা হচ্ছে।

৩. Variable Expression

Variable Expression ব্যবহার করে আপনি রিপোর্টে চলতি ভেরিয়েবলগুলোর মান গণনা বা নির্ধারণ করতে পারেন। এটি সাধারণত মোট, গড়, গণনা ইত্যাদি হিসাবের জন্য ব্যবহৃত হয়।

<variable name="totalAmount" class="java.lang.Double" calculation="Sum">
    <variableExpression><![CDATA[$F{amount}]]></variableExpression>
</variable>

এখানে:

  • calculation="Sum" নির্দেশ করে যে amount ফিল্ডের সমস্ত মানের যোগফল বের করা হবে এবং এই মানটি totalAmount ভেরিয়েবলে সংরক্ষিত হবে।

৪. Parameter Expression

Parameter Expression ব্যবহার করে আপনি রিপোর্টের প্যারামিটারগুলোর মান নিয়ন্ত্রণ করতে পারেন। প্যারামিটার সাধারণত রিপোর্টের ইনপুট হিসাবে ব্যবহৃত হয়।

<parameter name="currencySymbol" class="java.lang.String"/>
<textField>
    <reportElement x="0" y="0" width="300" height="30"/>
    <textFieldExpression><![CDATA[$P{currencySymbol} + " " + $F{amount}]]></textFieldExpression>
</textField>

এখানে:

  • $P{currencySymbol} প্যারামিটারটির মান ব্যবহার করা হয়েছে এবং তার সাথে amount ফিল্ডের মান যোগ করা হয়েছে।

JasperReports Expression Syntax

JasperReports-এ Expression Language সাধারণত Java Expressions ব্যবহার করে। এখানে কিছু সাধারণ সিনট্যাক্স এবং ফিচারের ব্যাখ্যা দেওয়া হল:

  1. Field References:
    • $F{fieldName}: ফিল্ডের মান অ্যাক্সেস করতে ব্যবহৃত হয়। যেমন: $F{name}, $F{amount}
  2. Parameter References:
    • $P{parameterName}: প্যারামিটার থেকে ডেটা অ্যাক্সেস করতে ব্যবহৃত হয়। যেমন: $P{currencySymbol}
  3. Variable References:
    • $V{variableName}: ভেরিয়েবল থেকে ডেটা অ্যাক্সেস করতে ব্যবহৃত হয়। যেমন: $V{totalAmount}
  4. Constants:
    • "text": টেক্সট স্ট্রিং হিসাবে ব্যবহৃত হয়। যেমন: "Total Amount"
  5. Mathematical Operations:

    • আপনি সহজে গণনা করতে পারেন, যেমন যোগ, বিয়োগ, গুণ বা ভাগ।
    <textField>
        <reportElement x="0" y="0" width="300" height="30"/>
        <textFieldExpression><![CDATA[$F{amount} + 100]]></textFieldExpression>
    </textField>
    
  6. Conditional Expressions:

    • আপনি if-else বা ternary operator ব্যবহার করতে পারেন:
    <textField>
        <reportElement x="0" y="0" width="300" height="30"/>
        <textFieldExpression><![CDATA[$F{amount} > 1000 ? "High" : "Low"]]></textFieldExpression>
    </textField>
    
  7. String Operations:

    • আপনি স্ট্রিং অপারেশনও করতে পারেন, যেমন কনক্যাটিনেশন বা substring:
    <textField>
        <reportElement x="0" y="0" width="300" height="30"/>
        <textFieldExpression><![CDATA[$F{name} + " - " + $F{amount}]]></textFieldExpression>
    </textField>
    

JasperReports Expression Language এর সুবিধা

  1. Dynamic Data Processing:
    • Java Expressions ব্যবহার করে রিপোর্টে ডাইনামিক ডেটা প্রক্রিয়া এবং কাস্টম লজিক প্রয়োগ করা সহজ।
  2. Flexible Reporting:
    • স্ট্যাটিক ডেটা এবং ডাইনামিক রিপোর্টিংয়ের জন্য এক্সপ্রেশন ভাষা বেশ সুবিধাজনক, যা রিপোর্টগুলোর কাস্টমাইজেশন ও প্রক্রিয়া সহজ করে।
  3. Complex Calculations:
    • রিপোর্টে বড় বা জটিল গণনা (যেমন মোট, গড়, সেম, ম্যাক্স, মিন) প্রক্রিয়া করা সহজ হয়।
  4. Parameter and Field Integration:
    • বিভিন্ন প্যারামিটার এবং ফিল্ডকে একত্রিত করে আরও ব্যবহারকারী-বান্ধব রিপোর্ট তৈরি করা যায়।
  5. Improved User Experience:
    • রিপোর্টে ডাইনামিক কন্টেন্ট এবং ইন্টারঅ্যাকটিভ উপাদান যোগ করা যায়, যা ব্যবহারকারীদের জন্য আরো কার্যকরী ও সহজবোধ্য রিপোর্ট তৈরি করতে সহায়তা করে।

JasperReports-এ Expression Language বা Java Expressions রিপোর্টের কাস্টমাইজেশন এবং ডেটার প্রক্রিয়া করার জন্য অত্যন্ত কার্যকরী। এটি ডাইনামিক ডেটা তৈরি করতে, গণনা করতে এবং কাস্টম লজিক প্রয়োগ করতে সাহায্য করে। Field, Parameter, Variable, এবং TextField Expressions ব্যবহার করে আপনি রিপোর্টের মধ্যে বিভিন্ন ধরনের কাস্টম প্রক্রিয়া এবং কন্টেন্ট যুক্ত করতে পারেন, যা রিপোর্ট তৈরি এবং ব্যবহারকারী অভিজ্ঞতা উন্নত করতে সহায়তা করে।

Content added By

JasperReports Expression Language (JRE) হল একটি ভাষা যা JasperReports-এ রিপোর্ট তৈরি করার সময় ডাইনামিক এক্সপ্রেশন তৈরি এবং ব্যবহারের জন্য ব্যবহৃত হয়। JRE-এর মাধ্যমে আপনি রিপোর্টের বিভিন্ন অংশে (যেমন ফিল্ড, গ্রুপ, টোটাল, সাবটোটাল, কন্ডিশনাল ফরম্যাটিং ইত্যাদি) ডাইনামিক মান তৈরি এবং পরিচালনা করতে পারেন।

JasperReports রিপোর্টে এক্সপ্রেশন একটি Java এক্সপ্রেশন হিসেবে কাজ করে যা রিপোর্টের তৈরি হওয়া সময় নির্ধারণ করা হয় এবং রিপোর্টের উপাদানগুলোতে প্রয়োগ করা হয়। এই এক্সপ্রেশনগুলো রিপোর্টের ফিল্ড ভ্যালু, কন্ডিশনাল লজিক, গণনা, ফরম্যাটিং ইত্যাদি নির্ধারণ করতে ব্যবহৃত হয়।


JasperReports Expression Language এর মূল উপাদান

  1. ডেটা ফিল্ডের এক্সপ্রেশন:

    • রিপোর্টে থাকা ডেটা ফিল্ডগুলো থেকে ডেটা আনার জন্য এক্সপ্রেশন ব্যবহার করা হয়। এক্সপ্রেশন $F{field_name} ব্যবহার করে ডেটা ফিল্ডের মান অ্যাক্সেস করা হয়।

    উদাহরণ:

    <textFieldExpression><![CDATA[$F{id}]]></textFieldExpression>
    
  2. ভ্যারিয়েবল এক্সপ্রেশন:

    • রিপোর্টের ভ্যারিয়েবল এবং ক্যালকুলেশনগুলি হিসাব করতে এক্সপ্রেশন ব্যবহার করা হয়। এর মধ্যে সামাজিক মোট, গড়, মোট সংখ্যা ইত্যাদি গণনা করা হতে পারে।

    উদাহরণ:

    <variable name="total" class="java.lang.Double" calculation="Sum">
        <variableExpression><![CDATA[$F{amount}]]></variableExpression>
    </variable>
    
  3. জাভা কোড ব্যবহার:
    • এক্সপ্রেশনে Java কোড ব্যবহার করা হয় যা ডেটা ফিল্টারিং, কাস্টম ক্যালকুলেশন, এবং কন্ডিশনাল লজিক সমর্থন করে। Java কোড ব্যবহার করে ডাইনামিক ডেটা বা ফিল্ড ভ্যালুতে পরিবর্তন আনা যায়।
  4. অপারেটর এবং কন্ডিশনাল লজিক:

    • if-else স্টেটমেন্ট, and, or, not ইত্যাদি লজিক্যাল অপারেটর ব্যবহার করা হয় এক্সপ্রেশনে কন্ডিশনাল লজিক প্রয়োগ করতে।

    উদাহরণ:

    <textFieldExpression><![CDATA[($F{amount} > 100) ? "High" : "Low"]]></textFieldExpression>
    

JasperReports এর Expression Language এর ব্যবহার

1. রিপোর্ট ফিল্ডের এক্সপ্রেশন:

প্রতিটি রিপোর্ট ফিল্ডের মান নির্ধারণ করতে আপনি এক্সপ্রেশন ব্যবহার করতে পারেন। উদাহরণস্বরূপ, আপনি যদি একটি "user" ফিল্ডের মান প্রিন্ট করতে চান, তবে এর জন্য এক্সপ্রেশন ব্যবহার করা হবে।

<textFieldExpression><![CDATA[$F{user}]]></textFieldExpression>

এখানে, $F{user} একটি ফিল্ড এক্সপ্রেশন যা ডেটাবেস বা ডেটা সোর্স থেকে প্রাপ্ত user নামক ফিল্ডের মান পাঠ করবে।

2. গণনা এবং ভ্যারিয়েবল এক্সপ্রেশন:

আপনি রিপোর্টের ভ্যারিয়েবল ব্যবহার করে গণনা করতে পারেন, যেমন সামগ্রিক মোট বা গড়, ইত্যাদি।

<variable name="totalAmount" class="java.lang.Double" calculation="Sum">
    <variableExpression><![CDATA[$F{amount}]]></variableExpression>
</variable>

এখানে, $F{amount} একটি ফিল্ড এক্সপ্রেশন যা amount ফিল্ডের মান নিয়ে সামগ্রিক মোট হিসাব করে।

3. কন্ডিশনাল এক্সপ্রেশন:

JasperReports-এর মধ্যে কন্ডিশনাল এক্সপ্রেশন ব্যবহারের মাধ্যমে আপনি বিভিন্ন শর্তের উপর ভিত্তি করে ডেটার মান পরিবর্তন করতে পারেন।

<textFieldExpression><![CDATA[($F{amount} > 1000) ? "High" : "Low"]]></textFieldExpression>

এখানে, যদি $F{amount} এর মান 1000 এর বেশি হয়, তবে তা "High" প্রদর্শন করবে, এবং না হলে "Low" প্রদর্শন করবে।

4. অ্যারে এবং কলাম এক্সপ্রেশন:

JasperReports-এ আপনি অ্যারে এবং কলাম এক্সপ্রেশন ব্যবহার করে একাধিক ডেটা মান কনভেনিয়েন্টলি প্রক্রিয়া করতে পারেন।

<textFieldExpression><![CDATA[$F{products}[0]]]></textFieldExpression>

এখানে, এটি প্রথম products অ্যারে থেকে মান দেখাবে।

5. ভ্যারিয়েবল ব্যবহার এবং গণনা:

একটি ভ্যারিয়েবল তৈরি করে আপনি একটি নির্দিষ্ট ক্যালকুলেশন বা গণনা করতে পারেন, যেমন মোট গড়, সংখ্যা ইত্যাদি।

<variable name="averageAmount" class="java.lang.Double" calculation="Average">
    <variableExpression><![CDATA[$F{amount}]]></variableExpression>
</variable>

এখানে, এটি $F{amount} ফিল্ডের গড় বের করবে।


JasperReports Expression Language এর বিভিন্ন অংশ

  1. ডেটা ফিল্ড এক্সপ্রেশন:
    • $F{field_name}: এটি ডেটা সোর্স থেকে প্রাপ্ত মানের উপর ভিত্তি করে রিপোর্টে ফিল্ডের মান প্রদর্শন করে।
  2. পারামিটার এক্সপ্রেশন:
    • $P{parameter_name}: এটি রিপোর্টে ব্যবহার করা পারামিটার মান অ্যাক্সেস করে।
  3. ভ্যারিয়েবল এক্সপ্রেশন:
    • $V{variable_name}: এটি রিপোর্টের মধ্যে কাস্টম ভ্যারিয়েবলের মান অ্যাক্সেস করে।
  4. সিস্টেম প্রপার্টি এক্সপ্রেশন:
    • $S{system_property_name}: এটি রিপোর্টের মধ্যে সিস্টেমের প্রপার্টি মান অ্যাক্সেস করে।
  5. অপারেটর এবং লজিক্যাল এক্সপ্রেশন:
    • ==, !=, >, <, &&, ||: এটি কমপ্লেক্স কন্ডিশন এবং ফিল্টারিং লজিক চালায়।

JasperReports Expression Examples

  1. ফিল্ডের মানের উপর ভিত্তি করে কন্ডিশনাল এক্সপ্রেশন:
<textFieldExpression><![CDATA[($F{quantity} > 10) ? "Stock is High" : "Stock is Low"]]></textFieldExpression>
  1. ভ্যারিয়েবল এক্সপ্রেশন ব্যবহার করা:
<variable name="totalCost" class="java.lang.Double" calculation="Sum">
    <variableExpression><![CDATA[$F{cost}]]></variableExpression>
</variable>
  1. পারামিটার ব্যবহার করা:
<textFieldExpression><![CDATA[$P{discount} * $F{price}]]></textFieldExpression>
  1. ফিল্ডের মান সন্নিবেশিত করা:
<textFieldExpression><![CDATA["Product: " + $F{productName}]]></textFieldExpression>

  1. JasperReports Expression Language (JRE) আপনাকে ডাইনামিকভাবে রিপোর্টে ডেটা প্রক্রিয়া করার সুযোগ দেয়।
  2. আপনি এক্সপ্রেশন ব্যবহার করে ডেটা ফিল্ড, পারামিটার, ভ্যারিয়েবল, সিস্টেম প্রপার্টি, অপারেটর, এবং লজিক্যাল এক্সপ্রেশন ব্যবহার করতে পারেন।
  3. এক্সপ্রেশনগুলির মাধ্যমে আপনি কন্ডিশনাল লজিক, কাস্টম গণনা এবং ডেটা ম্যানিপুলেশন করতে পারেন, যা রিপোর্ট ডিজাইন ও কাস্টমাইজেশনের ক্ষেত্রে অত্যন্ত কার্যকর।

JasperReports-এর এক্সপ্রেশন ভাষা ব্যবহার করে আপনি রিপোর্টের আউটপুটকে আরও কার্যকর এবং ডাইনামিকভাবে কাস্টমাইজ করতে পারেন, যা বড় ও জটিল রিপোর্টিং সিস্টেমের জন্য অপরিহার্য।

Content added By

JasperReports একটি শক্তিশালী টুল যা বিভিন্ন ধরনের রিপোর্ট তৈরি করতে ব্যবহৃত হয়। এর মধ্যে TextField Expressions, Image Expressions, এবং Chart Expressions খুবই গুরুত্বপূর্ণ উপাদান, যেগুলি রিপোর্টে ডাইনামিক কন্টেন্ট প্রদর্শন করতে ব্যবহৃত হয়। এই Expressions আপনাকে রিপোর্টের উপাদানগুলির কাস্টমাইজেশন এবং ডাইনামিক ডেটা প্রদর্শন করতে সাহায্য করে।


1. TextField Expression

TextField Expressions ব্যবহার করে আপনি রিপোর্টের টেক্সট ফিল্ডে ডাইনামিক ডেটা বা কাস্টম লজিক অন্তর্ভুক্ত করতে পারেন। এটি ডেটা সোর্স থেকে আসা ফিল্ডের মান প্রদর্শন করতে ব্যবহৃত হয় এবং আপনার প্রয়োজন অনুযায়ী কাস্টম এক্সপ্রেশন বা হিসাব করা ডেটা ব্যবহার করতে পারে।

TextField Expression উদাহরণ:

<textField>
    <reportElement x="0" y="0" width="200" height="30"/>
    <textFieldExpression><![CDATA[$F{customerName}]]></textFieldExpression>
</textField>
  • $F{customerName}: এখানে customerName ফিল্ডের মান রিপোর্টের টেক্সট ফিল্ডে প্রদর্শিত হবে।
  • আপনি Java expressions বা functions ব্যবহার করে এই মানে কাস্টম লজিক বা গণনা যুক্ত করতে পারেন।

TextField Expression কাস্টম উদাহরণ:

<textField>
    <reportElement x="0" y="0" width="200" height="30"/>
    <textFieldExpression><![CDATA[$F{price} * $F{quantity}]]></textFieldExpression>
</textField>

এখানে, টেক্সটফিল্ডে price এবং quantity ফিল্ডের গুণফল প্রদর্শিত হবে।


2. Image Expression

Image Expressions ব্যবহার করে আপনি রিপোর্টে ডাইনামিকভাবে ইমেজ যোগ করতে পারেন। ইমেজের সোর্স সাধারণত একটি URL, ফাইল পাথ, বা ডেটাবেস থেকে আসে। Image Expressions ইমেজ ফাইলের পাথ বা URL হিসেবে কাজ করে।

Image Expression উদাহরণ:

<image>
    <reportElement x="0" y="0" width="100" height="100"/>
    <imageExpression><![CDATA["/images/" + $F{imageName}]]></imageExpression>
</image>
  • $F{imageName}: এই ফিল্ডের মান (যেমন "logo.png") ব্যবহার করে ইমেজের ফাইল পাথ তৈরি হবে।
  • রিপোর্টে ইমেজটি সঠিক ফাইল পাথ অনুযায়ী লোড হবে।

Image Expression with Dynamic Path:

<image>
    <reportElement x="0" y="0" width="200" height="200"/>
    <imageExpression><![CDATA["http://example.com/images/" + $F{imageName}]]></imageExpression>
</image>

এখানে, URL ব্যবহার করে ডাইনামিকভাবে ইমেজ লোড করা হচ্ছে, যেখানে imageName ফিল্ডটি ডেটাবেস থেকে এসেছে।


3. Chart Expressions

Chart Expressions ব্যবহার করে আপনি রিপোর্টে ডাইনামিকভাবে চার্ট যোগ করতে পারেন। JasperReports-এ chart expressions বিভিন্ন গ্রাফিক্যাল ডেটার উপস্থাপনা কাস্টমাইজ করতে সহায়ক। আপনি ডেটাবেস থেকে বা প্যারামিটার হিসাবে গ্রাফের জন্য ডেটা সরবরাহ করতে পারেন এবং বিভিন্ন ধরনের চার্ট (যেমন বার চার্ট, পাই চার্ট, লাইন চার্ট) তৈরি করতে পারেন।

Chart Expressions উদাহরণ:

<chart>
    <reportElement x="0" y="0" width="300" height="200"/>
    <chartExpression><![CDATA[$F{salesAmount}]]></chartExpression>
</chart>

এখানে, $F{salesAmount} ফিল্ডের মান চার্টে প্রদর্শিত হবে।

Bar Chart Expression উদাহরণ:

<chart>
    <reportElement x="0" y="0" width="300" height="200"/>
    <chartExpression><![CDATA[$F{salesAmount}]]></chartExpression>
    <chartPlot>
        <barPlot>
            <categorySeries>
                <seriesExpression><![CDATA[$F{region}]]></seriesExpression>
                <valueExpression><![CDATA[$F{salesAmount}]]></valueExpression>
            </categorySeries>
        </barPlot>
    </chartPlot>
</chart>
  • $F{salesAmount}: এখানে salesAmount ফিল্ডটি ব্যবহার করে বার চার্টের মান প্রদর্শিত হবে।
  • $F{region}: এই ফিল্ডটি region অনুযায়ী চার্টের ক্যাটেগরি হিসেবে কাজ করবে।

Pie Chart Expression উদাহরণ:

<chart>
    <reportElement x="0" y="0" width="300" height="200"/>
    <chartExpression><![CDATA[$F{category}]]></chartExpression>
    <chartPlot>
        <piePlot>
            <categorySeries>
                <seriesExpression><![CDATA[$F{category}]]></seriesExpression>
                <valueExpression><![CDATA[$F{salesAmount}]]></valueExpression>
            </categorySeries>
        </piePlot>
    </chartPlot>
</chart>

এখানে, pie chart তৈরি হচ্ছে যেখানে $F{category} এবং $F{salesAmount} ফিল্ডের মান ব্যবহার করা হচ্ছে।


Expressions ব্যবহার করার সুবিধা

  1. ডাইনামিক ডেটা: TextField, Image, এবং Chart Expressions ব্যবহার করে আপনি ডাইনামিকভাবে রিপোর্টের কন্টেন্ট উপস্থাপন করতে পারেন।
  2. কাস্টম লজিক: Expressions-এর মাধ্যমে আপনি কাস্টম ক্যালকুলেশন, ফিল্টারিং এবং ডেটা প্রসেসিং করতে পারেন।
  3. ডেটা সোর্স: Expressions-এ ডেটা সোর্স (যেমন ফিল্ড, প্যারামিটার, ভেরিয়েবল) ব্যবহার করে আপনি রিপোর্টের বিভিন্ন অংশ কাস্টমাইজ করতে পারেন।
  4. ফরম্যাটিং এবং কন্ট্রোল: আপনি ফিল্ডের মান ফরম্যাটিং, ডেটা টেবিল বা গ্রাফের আউটপুট কাস্টমাইজ করতে পারবেন।

JasperReports-এ TextField Expressions, Image Expressions, এবং Chart Expressions ব্যবহারের মাধ্যমে রিপোর্ট কাস্টমাইজ এবং ডাইনামিক তথ্য প্রক্রিয়া করা সম্ভব। এগুলি রিপোর্টে কাস্টম ডেটা, ফরম্যাট, চিত্র এবং গ্রাফিক্যাল উপস্থাপনা সরবরাহ করতে সহায়ক। JasperReports-এর এই ফিচারগুলি আপনাকে আরও প্রফেশনাল এবং তথ্যপূর্ণ রিপোর্ট তৈরি করতে সক্ষম করে।

Content added By

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

JasperReports-এ complex expressions এবং conditional logic ব্যবহার করে রিপোর্টের মধ্যে বিভিন্ন ডেটার ভিত্তিতে ডায়নামিক কনটেন্ট তৈরি করা যায়। এটি বিশেষভাবে প্রয়োজনীয় যখন আপনি রিপোর্টে শর্তসাপেক্ষ ডেটা, কাস্টম লজিক, বা ডেটা ফিল্টারিং করতে চান। Conditional expressions এবং complex expressions ব্যবহার করে রিপোর্টের ফরম্যাট, ডেটা এবং লজিক কাস্টমাইজ করা সম্ভব।

Complex Expressions in JasperReports

JasperReports-এ complex expressions সাধারণত textFieldExpression, variableExpression, summaryExpression, printWhenExpression ইত্যাদি ক্ষেত্রে ব্যবহৃত হয়। এগুলোর মাধ্যমে আপনি বিভিন্ন শর্ত, গণনা, বা কাস্টম লজিক প্রয়োগ করতে পারেন।

Complex Expression উদাহরণ:

ধরা যাক, আপনার একটি রিপোর্টে Product এর Price এবং Discount দেওয়া আছে, এবং আপনি চান যে, Discount এর মান ১০% এর বেশি হলে একটি নির্দিষ্ট কলামে "High Discount" এবং কম হলে "Low Discount" দেখানো হোক।

textFieldExpression ব্যবহার:
<textField>
    <reportElement x="0" y="0" width="200" height="30"/>
    <textFieldExpression>
        <![CDATA[
            $F{discount} > 10 ? "High Discount" : "Low Discount"
        ]]>
    </textFieldExpression>
</textField>

এখানে, $F{discount} ফিল্ডের মান যদি ১০ এর বেশি হয়, তাহলে "High Discount" দেখাবে, নতুবা "Low Discount" দেখাবে। এটি একটি conditional expression যা JasperReports-এ ব্যবহার করা হয়েছে।


Conditional Logic in JasperReports

JasperReports-এ conditional logic ব্যবহার করা হলে, আপনি বিভিন্ন ডেটা শর্তে ভিত্তি করে নির্দিষ্ট কাজ করতে পারেন, যেমন conditional text বা field display

Conditional Logic উদাহরণ:

আপনি যদি চান যে, Sales রিপোর্টে যদি কোনো প্রোডাক্টের Quantity ১০০ এর বেশি থাকে, তাহলে সেই প্রোডাক্টের Price এবং Quantity উভয় ক্ষেত্রেই আলাদা আউটপুট দেখানো হবে। অন্যথায়, কেবল Price দেখানো হবে।

printWhenExpression ব্যবহার:
<textField>
    <reportElement x="0" y="50" width="200" height="30"/>
    <textFieldExpression><![CDATA[$F{price}]]></textFieldExpression>
    <printWhenExpression><![CDATA[$F{quantity} > 100]]></printWhenExpression>
</textField>

এখানে, printWhenExpression শর্তটি নির্ধারণ করে যে, যদি quantity > 100 হয়, তখন শুধুমাত্র Price ফিল্ডটি প্রদর্শিত হবে। যদি শর্ত মেলে না, তবে এটি প্রদর্শিত হবে না।


Multiple Conditions with Nested Expressions

JasperReports-এ আপনি একাধিক শর্তের ভিত্তিতে কাস্টম nested expressions ব্যবহার করতে পারেন। এটি অনেক ধরনের boolean condition বা logical operation চেইন করে করতে হয়।

Nested Expressions উদাহরণ:

ধরা যাক, আপনি চান যদি Quantity ১০০ এর বেশি এবং Price ৫০ এর বেশি হয়, তবে "High Sales" দেখাবে, অন্যথায় "Low Sales" দেখাবে।

<textField>
    <reportElement x="0" y="100" width="200" height="30"/>
    <textFieldExpression>
        <![CDATA[
            ($F{quantity} > 100 && $F{price} > 50) ? "High Sales" : "Low Sales"
        ]]>
    </textFieldExpression>
</textField>

এখানে && (logical AND) অপারেটর ব্যবহার করে দুটি শর্ত যাচাই করা হয়েছে। যদি দুটি শর্তই মেলে, তাহলে "High Sales" প্রদর্শিত হবে, নতুবা "Low Sales"


Conditional Formatting Based on Values

JasperReports-এ শর্তসাপেক্ষ text formatting এবং style পরিবর্তন করতে style বা conditional styles ব্যবহার করা যেতে পারে।

Conditional Formatting উদাহরণ:

ধরা যাক, আপনি চান যদি Price একটি নির্দিষ্ট পরিমাণের (যেমন, ১০০০ এর বেশি) বেশি হয়, তবে তার জন্য bold red text এবং যদি তা কম হয়, তবে normal text প্রদর্শিত হবে।

Conditional Style Example:
<styles>
    <style name="highPrice" isDefault="false" fontSize="12" bold="true" forecolor="#FF0000"/>
    <style name="lowPrice" isDefault="true" fontSize="12" bold="false"/>
</styles>

<textField>
    <reportElement x="0" y="150" width="200" height="30"/>
    <textFieldExpression><![CDATA[$F{price}]]></textFieldExpression>
    <textElement>
        <font fontName="Arial" size="12"/>
        <conditionalStyle>
            <conditionExpression><![CDATA[$F{price} > 1000]]></conditionExpression>
            <style name="highPrice"/>
            <style name="lowPrice"/>
        </conditionalStyle>
    </textElement>
</textField>

এখানে, conditionalStyle ব্যবহার করা হয়েছে যা Price ফিল্ডের মানের উপর ভিত্তি করে শর্তসাপেক্ষ স্টাইল প্রয়োগ করবে। যদি Price > 1000 হয়, তাহলে bold red text প্রযোজ্য হবে, অন্যথায় সাধারণ ফন্ট স্টাইল থাকবে।


Complex Expressions for Calculations

JasperReports-এ complex expressions ব্যবহার করে আপনি অংক গাণিতিক হিসাব, সময় এবং তারিখ হিসাব, এবং অন্যান্য লজিক্যাল হিসাব করতে পারেন।

Calculation Example (Sum, Average):

ধরা যাক, আপনি চান রিপোর্টে সমস্ত প্রোডাক্টের মোট Price এবং Quantity এর গড় বের করতে। আপনি Variables এবং Expressions ব্যবহার করে এমন হিসাব করতে পারেন।

<variable name="totalPrice" class="java.lang.Double" calculation="Sum">
    <variableExpression><![CDATA[$F{price}]]></variableExpression>
</variable>

<variable name="totalQuantity" class="java.lang.Integer" calculation="Sum">
    <variableExpression><![CDATA[$F{quantity}]]></variableExpression>
</variable>

<variable name="averagePrice" class="java.lang.Double" calculation="Average">
    <variableExpression><![CDATA[$F{price}]]></variableExpression>
</variable>

<textField>
    <reportElement x="0" y="200" width="200" height="30"/>
    <textFieldExpression><![CDATA[$V{totalPrice}]]></textFieldExpression>
</textField>

এখানে:

  • totalPrice এবং totalQuantity প্রতিটি প্রোডাক্টের Price এবং Quantity এর যোগফল হিসাব করছে।
  • averagePrice ফিল্ডটি গড় মান হিসাব করছে।

  1. Complex Expressions ব্যবহার করে JasperReports-এ আপনি কাস্টম গণনা, ডেটার প্রক্রিয়া এবং আউটপুট কাস্টমাইজেশন করতে পারেন।
  2. Conditional Logic (যেমন if, else, ternary operators) ব্যবহার করে আপনি রিপোর্টে ডেটার শর্তসাপেক্ষ প্রক্রিয়া পরিচালনা করতে পারেন।
  3. Conditional Formatting এবং Style Customization এর মাধ্যমে রিপোর্টের ভিজ্যুয়াল স্টাইল কাস্টমাইজ করা যায়।
  4. Calculation Expressions (যেমন গড়, যোগফল, শতাংশ) ব্যবহার করে আপনি রিপোর্টে বিভিন্ন ধরনের ডেটা বিশ্লেষণ করতে পারেন।

এই টেকনিকগুলো JasperReports-এর ক্ষমতা বৃদ্ধি করতে সহায়তা করে, বিশেষ করে যখন রিপোর্টগুলোর মধ্যে ডায়নামিক কনটেন্ট, ডেটা ফিল্টারিং, এবং কাস্টম লজিক প্রয়োজন।

Content added By
Promotion

Are you sure to start over?

Loading...