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
|
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
Post a Comment