Generate reports dynamically using Jasper Reports without generating a jasper for each report


You can Generate reports dynamically using Jasper Reports without generating a jasper for each report
,
For basic and generating report using Jasper use this link ireport





package com.imlog.report;

import java.sql.Connection;
import java.sql.DriverManager;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.HashMap;
import java.util.Map;

import net.sf.jasperreports.engine.JRException;
import net.sf.jasperreports.engine.JasperCompileManager;
import net.sf.jasperreports.engine.JasperExportManager;
import net.sf.jasperreports.engine.JasperFillManager;
import net.sf.jasperreports.engine.JasperPrint;
import net.sf.jasperreports.engine.JasperReport;
import net.sf.jasperreports.engine.design.JRDesignBand;
import net.sf.jasperreports.engine.design.JRDesignExpression;
import net.sf.jasperreports.engine.design.JRDesignQuery;
import net.sf.jasperreports.engine.design.JRDesignSection;
import net.sf.jasperreports.engine.design.JasperDesign;
import net.sf.jasperreports.engine.type.HorizontalAlignEnum;
import net.sf.jasperreports.engine.type.ScaleImageEnum;

public class DynamicJasperReport {

 private static JasperDesign getJasperDesign() throws JRException,
   ParseException {

  JRDesignExpression expression = new JRDesignExpression();
  JRDesignBand band = new JRDesignBand();

  // JasperDesign
  JasperDesign jasperDesign = new JasperDesign();
  jasperDesign.setName("ImLoggerDynamicReport");
  jasperDesign.setPageWidth(595);
  jasperDesign.setPageHeight(842);
  jasperDesign.setLeftMargin(20);
  jasperDesign.setRightMargin(20);
  jasperDesign.setTopMargin(20);
  jasperDesign.setBottomMargin(20);
  jasperDesign.setColumnWidth(555);
  jasperDesign.setColumnSpacing(0);

  // Fonts
  jasperDesign.addStyle(DynamicReportUtil.getNormalStyle());

  // Parameters
  jasperDesign.addParameter(DynamicReportUtil.getParameter("ReportTitle",
    java.lang.String.class));
  jasperDesign.addParameter(DynamicReportUtil.getParameter("imagePath",
    java.lang.String.class));
  jasperDesign.addParameter(DynamicReportUtil.getParameter("userId",
    java.lang.String.class));

  // Query
  JRDesignQuery query = new JRDesignQuery();
  query.setText("SELECT * FROM imlog");
  jasperDesign.setQuery(query);

  // Fields
  jasperDesign.addField(DynamicReportUtil.getField("log_id",
    java.lang.Integer.class));
  jasperDesign.addField(DynamicReportUtil.getField("Time",
    java.sql.Timestamp.class));
  jasperDesign.addField(DynamicReportUtil.getField("Category",
    java.lang.String.class));
  jasperDesign.addField(DynamicReportUtil.getField("Severity",
    java.lang.String.class));
  jasperDesign.addField(DynamicReportUtil.getField("Message",
    java.lang.String.class));

  // Title
  band = new JRDesignBand();
  band.setHeight(73);
  band.addElement(DynamicReportUtil.getImage(0, 8, 97, 50,
    ScaleImageEnum.RETAIN_SHAPE, HorizontalAlignEnum.LEFT,
    "imagePath"));
  band.addElement(DynamicReportUtil.getTextField(109, 6, 328, 20,
    HorizontalAlignEnum.CENTER, DynamicReportUtil.getNormalStyle(),
    12, "$P{ReportTitle}", java.lang.String.class));
  band.addElement(DynamicReportUtil.getStaticText(182, 26, 191, 20,
    "Daily Log Report (Teminos T24)",
    DynamicReportUtil.getNormalStyle(), HorizontalAlignEnum.CENTER,
    0));
  band.addElement(DynamicReportUtil.getStaticText(156, 46, 243, 20,
    "(Criteria: Field = “” and Field = “B” and Field = ”C”)",
    DynamicReportUtil.getNormalStyle(), HorizontalAlignEnum.CENTER,
    0));
  band.addElement(DynamicReportUtil.getStaticText(462, 4, 28, 13,
    "Date:", DynamicReportUtil.getNormalStyle(),
    HorizontalAlignEnum.RIGHT, 0));
  band.addElement(DynamicReportUtil.getStaticText(462, 20, 28, 16,
    "Time:", DynamicReportUtil.getNormalStyle(),
    HorizontalAlignEnum.RIGHT, 0));
  band.addElement(DynamicReportUtil.getStaticText(422, 38, 68, 16,
    "Generated By:", DynamicReportUtil.getNormalStyle(),
    HorizontalAlignEnum.RIGHT, 0));
  band.addElement(DynamicReportUtil.getStaticText(496, 4, 50, 13,
    new SimpleDateFormat("dd.MM.yyyy").format(new Date())
      .toString(), DynamicReportUtil.getNormalStyle(),
    HorizontalAlignEnum.LEFT, 0));
  band.addElement(DynamicReportUtil
    .getStaticText(496, 20, 50, 16, new SimpleDateFormat("h.mm a")
      .format(new Date()).toString(), DynamicReportUtil
      .getNormalStyle(), HorizontalAlignEnum.LEFT, 0));
  band.addElement(DynamicReportUtil.getTextField(496, 38, 50, 16,
    HorizontalAlignEnum.LEFT, DynamicReportUtil.getNormalStyle(),
    10, "$P{userId}", java.lang.String.class));
  jasperDesign.setTitle(band);

  // Column header
  band = new JRDesignBand();
  band.setHeight(20);
  band.addElement(DynamicReportUtil
    .getStaticText(0, 0, 63, 20, "Log ID",
      DynamicReportUtil.getNormalStyle(),
      HorizontalAlignEnum.LEFT, 1));
  band.addElement(DynamicReportUtil
    .getStaticText(63, 0, 120, 20, "Time",
      DynamicReportUtil.getNormalStyle(),
      HorizontalAlignEnum.LEFT, 1));
  band.addElement(DynamicReportUtil.getStaticText(183, 0, 80, 20,
    "Category", DynamicReportUtil.getNormalStyle(),
    HorizontalAlignEnum.LEFT, 1));
  band.addElement(DynamicReportUtil.getStaticText(263, 0, 100, 20,
    "Severity", DynamicReportUtil.getNormalStyle(),
    HorizontalAlignEnum.LEFT, 1));
  band.addElement(DynamicReportUtil.getStaticText(363, 0, 192, 20,
    "Message", DynamicReportUtil.getNormalStyle(),
    HorizontalAlignEnum.LEFT, 1));
  jasperDesign.setColumnHeader(band);

  // Detail
  band = new JRDesignBand();
  band.setHeight(20);
  band.addElement(DynamicReportUtil.getTextField(0, 0, 63, 20,
    HorizontalAlignEnum.LEFT, DynamicReportUtil.getNormalStyle(),
    10, "$F{log_id}", java.lang.Integer.class));
  band.addElement(DynamicReportUtil.getTextField(63, 0, 120, 20,
    HorizontalAlignEnum.LEFT, DynamicReportUtil.getNormalStyle(),
    10, "$F{Time}", java.sql.Timestamp.class));
  band.addElement(DynamicReportUtil.getTextField(183, 0, 80, 20,
    HorizontalAlignEnum.LEFT, DynamicReportUtil.getNormalStyle(),
    10, "$F{Category}", java.lang.String.class));
  band.addElement(DynamicReportUtil.getTextField(263, 0, 100, 20,
    HorizontalAlignEnum.LEFT, DynamicReportUtil.getNormalStyle(),
    10, "$F{Severity}", java.lang.String.class));
  band.addElement(DynamicReportUtil.getTextField(363, 0, 192, 20,
    HorizontalAlignEnum.LEFT, DynamicReportUtil.getNormalStyle(),
    10, "$F{Message}", java.lang.String.class));
  ((JRDesignSection) jasperDesign.getDetailSection()).addBand(band);

  // Column Footer
  band = new JRDesignBand();
  band.setHeight(59);
  band.addElement(DynamicReportUtil.getTextField(227, 17, 100, 20,
    HorizontalAlignEnum.CENTER, DynamicReportUtil.getNormalStyle(),
    10, "$V{PAGE_NUMBER}", java.lang.String.class));
  jasperDesign.setColumnFooter(band);

  // Page Footer
  band = new JRDesignBand();
  jasperDesign.setPageFooter(band);

  // Summary
  band = new JRDesignBand();
  band.setHeight(31);
  band.addElement(DynamicReportUtil.getStaticText(207, 5, 141, 20,
    "---- End of the report ----",
    DynamicReportUtil.getNormalStyle(), HorizontalAlignEnum.CENTER,
    0));
  jasperDesign.setSummary(band);

  return jasperDesign;
 }

 public static void main(String[] args) throws Exception {
  Map parameters = new HashMap();
  parameters.put("ReportTitle", "ABCD Company");
  parameters.put("imagePath",
    "C:\\Users\\Anand\\Pictures\\2013-06\\green_forest.jpg");
  parameters.put("userId", "1234");

  JasperReport jasperReport = JasperCompileManager
    .compileReport(getJasperDesign());
  Connection conn = DriverManager.getConnection(
    "jdbc:mysql://localhost:3306/test", "root", "password");
  JasperPrint jasperPrint = JasperFillManager.fillReport(jasperReport,
    parameters, conn);
  JasperExportManager.exportReportToPdfFile(jasperPrint,
    "d://test_jasper.pdf");
 }
} }
}

DynamicReportUtil.java

package com.imlog.report;

import java.awt.Color;
import java.io.File;
import java.sql.Connection;
import java.sql.DriverManager;
import java.util.HashMap;
import java.util.Map;

import net.sf.jasperreports.engine.JRException;
import net.sf.jasperreports.engine.JRField;
import net.sf.jasperreports.engine.JRParameter;
import net.sf.jasperreports.engine.JasperCompileManager;
import net.sf.jasperreports.engine.JasperExportManager;
import net.sf.jasperreports.engine.JasperFillManager;
import net.sf.jasperreports.engine.JasperPrint;
import net.sf.jasperreports.engine.JasperReport;
import net.sf.jasperreports.engine.design.JRDesignBand;
import net.sf.jasperreports.engine.design.JRDesignElement;
import net.sf.jasperreports.engine.design.JRDesignExpression;
import net.sf.jasperreports.engine.design.JRDesignField;
import net.sf.jasperreports.engine.design.JRDesignFrame;
import net.sf.jasperreports.engine.design.JRDesignGroup;
import net.sf.jasperreports.engine.design.JRDesignImage;
import net.sf.jasperreports.engine.design.JRDesignLine;
import net.sf.jasperreports.engine.design.JRDesignParameter;
import net.sf.jasperreports.engine.design.JRDesignQuery;
import net.sf.jasperreports.engine.design.JRDesignSection;
import net.sf.jasperreports.engine.design.JRDesignStaticText;
import net.sf.jasperreports.engine.design.JRDesignStyle;
import net.sf.jasperreports.engine.design.JRDesignTextField;
import net.sf.jasperreports.engine.design.JRDesignVariable;
import net.sf.jasperreports.engine.design.JasperDesign;
import net.sf.jasperreports.engine.type.CalculationEnum;
import net.sf.jasperreports.engine.type.HorizontalAlignEnum;
import net.sf.jasperreports.engine.type.ModeEnum;
import net.sf.jasperreports.engine.type.PositionTypeEnum;
import net.sf.jasperreports.engine.type.ResetTypeEnum;
import net.sf.jasperreports.engine.type.ScaleImageEnum;

public class DynamicReportUtil {

               
                 

                static JRDesignImage getImage(int x_postion, int y_position, int width, int height,ScaleImageEnum scale_type, HorizontalAlignEnum align_type,String Parameter) {
                                // TODO Auto-generated method stub
                                JRDesignExpression expression = new JRDesignExpression();
                                JRDesignImage image = new JRDesignImage(null);
                    expression.setValueClass(java.lang.String.class);
                    expression.setText("$P{"+Parameter+"}");
                    image.setX(x_postion);
                    image.setY(y_position);
                    image.setWidth(width);
                    image.setHeight(height);
                    image.setScaleImage(scale_type);
                    image.setHorizontalAlignment(align_type);
                    image.setExpression(expression);
                                return image;
                }

                static JRParameter getParameter(String string, Class<?> class1) {
                                // TODO Auto-generated method stub
                                JRDesignParameter parameter = new JRDesignParameter();
                    parameter.setName(string);
                    parameter.setValueClass(class1);
                                return parameter;
                }

                static JRField getField(String string, Class<?> class1) {
                                // TODO Auto-generated method stub
                                 JRDesignField field = new JRDesignField();
                    field.setName(string);
                    field.setValueClass(class1);
                                return field;
                }

                static JRDesignElement getStaticText(int x, int y, int width, int height,
                                                String text, JRDesignStyle normalStyle, HorizontalAlignEnum alignType, int color_flag) {
                                // TODO Auto-generated method stub
                                JRDesignStaticText staticText = new JRDesignStaticText();
                    staticText.setX(x);
                    staticText.setY(y);
                    //staticText.setStretchWithOverflow(true);
                    staticText.setWidth(width);
                    staticText.setHeight(height);
                    staticText.setText(text);
                    if(color_flag == 1){
                                staticText.setForecolor(new Color(240,240,240));
                                staticText.setBackcolor(new Color(102,0,102));
                    }
                    staticText.setMode(ModeEnum.OPAQUE);
                    staticText.setFontSize(10);
                    staticText.setHorizontalAlignment(alignType);
                    staticText.setStyle(normalStyle);
                                return staticText;
                }

                static JRDesignTextField getTextField(int X_position, int y_position, int width, int height,HorizontalAlignEnum type, JRDesignStyle Style, int fontSize,
                                                 String Parameter, Class<?> class1) {
                                // TODO Auto-generated method stub
                                JRDesignTextField textField = new JRDesignTextField();
                                JRDesignExpression expression = new JRDesignExpression();
                    expression.setValueClass(class1);
                    expression.setText(Parameter);
                                textField.setStretchWithOverflow(true);
                    textField.setBlankWhenNull(true);
                    textField.setX(X_position);
                    textField.setY(y_position);
                    textField.setWidth(width);
                    textField.setHeight(height);
                    textField.setHorizontalAlignment(type);
                    textField.setStyle(Style);
                    textField.setFontSize(fontSize);
                    textField.setExpression(expression);
                                return textField;
                }

                public static JRDesignStyle getNormalStyle() {
                                // TODO Auto-generated method stub
                                JRDesignStyle normalStyle = new JRDesignStyle();
                    normalStyle.setName("Sans_Normal");
                    normalStyle.setDefault(true);
                    normalStyle.setBold(true);
                    normalStyle.setFontName("SansSerif");
                    normalStyle.setFontSize(10);
                    normalStyle.setPdfFontName("Helvetica");
                    normalStyle.setPdfEncoding("Cp1252");
                    normalStyle.setPdfEmbedded(false);
                                return normalStyle;
                }
               
}

  

Comments

Popular posts from this blog

SinglePass Terms of Service

Jasper Report Viruatization