import static net.sf.dynamicreports.report.builder.DynamicReports.cmp;
import static net.sf.dynamicreports.report.builder.DynamicReports.col;
import static net.sf.dynamicreports.report.builder.DynamicReports.exp;
import static net.sf.dynamicreports.report.builder.DynamicReports.grid;
import static net.sf.dynamicreports.report.builder.DynamicReports.report;
import static net.sf.dynamicreports.report.builder.DynamicReports.sbt;
import static net.sf.dynamicreports.report.builder.DynamicReports.stl;
import static net.sf.dynamicreports.report.builder.DynamicReports.type;
import java.math.BigDecimal;
import java.util.Date;
import net.sf.dynamicreports.adhoc.AdhocManager;
import net.sf.dynamicreports.adhoc.configuration.AdhocColumn;
import net.sf.dynamicreports.adhoc.configuration.AdhocConfiguration;
import net.sf.dynamicreports.adhoc.configuration.AdhocReport;
import net.sf.dynamicreports.examples.Templates;
import net.sf.dynamicreports.examples.complex.invoice.InvoiceData;
import net.sf.dynamicreports.jasper.builder.JasperReportBuilder;
import net.sf.dynamicreports.report.base.expression.AbstractSimpleExpression;
import net.sf.dynamicreports.report.builder.column.ColumnBuilder;
import net.sf.dynamicreports.report.builder.column.TextColumnBuilder;
import net.sf.dynamicreports.report.builder.grid.ColumnTitleGroupBuilder;
import net.sf.dynamicreports.report.builder.style.StyleBuilder;
import net.sf.dynamicreports.report.builder.subtotal.AggregationSubtotalBuilder;
import net.sf.dynamicreports.report.constant.HorizontalAlignment;
import net.sf.dynamicreports.report.datasource.DRDataSource;
import net.sf.dynamicreports.report.definition.ReportParameters;
import net.sf.dynamicreports.report.exception.DRException;
import net.sf.jasperreports.engine.JRDataSource;
/**
* @author Ricardo Mariaca (r.mariaca@dynamicreports.org)
*/
public class InvoiceDesign {
private InvoiceData data = new InvoiceData();
private AggregationSubtotalBuilder<BigDecimal> totalSum;
private JRDataSource createDataSource1() {
DRDataSource dataSource = new DRDataSource("item", "quantity", "unitprice");
// dataSource.add("Notebook", 1, new BigDecimal(500));
dataSource.add("",null , null);
return dataSource;
}
private JRDataSource createDataSource() {
DRDataSource dataSource = new DRDataSource("item", "orderdate", "quantity");
for (int i = 0; i < 20; i++) {
dataSource.add("Book", new Date(), (int) (Math.random() * 10) + 1);
}
return dataSource;
}
public JasperReportBuilder build() throws DRException {
JasperReportBuilder report5 = report();
try {
StyleBuilder columnStyle = stl.style(Templates.columnStyle)
.setBorder(stl.pen1Point());
StyleBuilder subtotalStyle = stl.style(columnStyle)
.bold();
StyleBuilder shippingStyle = stl.style(Templates.boldStyle)
.setHorizontalAlignment(HorizontalAlignment.RIGHT);
report5 = report()//create new report design
.setTemplate(Templates.reportTemplate)
// .setColumnStyle(columnStyle)
// .setSubtotalStyle(subtotalStyle)
.columns(//add columns
// title, field name data type
col.column("Totle", "item", type.stringType()),
col.column("11", "quantity", type.integerType()),
col.column("11", "unitprice", type.bigDecimalType()),
col.column("11", "unitprice2", type.bigDecimalType()))
// .title(cmp.text("Getting started"))//shows report title
// .pageFooter(cmp.pageXofY())//shows number of page at page footer
.setDataSource(createDataSource1());//set datasource
// .show();//create and show report
} catch (Exception e) {
e.printStackTrace();
}
String titlev = "test title";
JasperReportBuilder report = report();
JasperReportBuilder report1 = report();
//init styles
StyleBuilder columnStyle = stl.style(Templates.columnStyle)
.setBorder(stl.pen1Point());
StyleBuilder subtotalStyle = stl.style(columnStyle)
.bold();
StyleBuilder shippingStyle = stl.style(Templates.boldStyle)
.setHorizontalAlignment(HorizontalAlignment.RIGHT);
//init columns
TextColumnBuilder<Integer> rowNumberColumn = col.reportRowNumberColumn()
.setFixedColumns(2)
.setHorizontalAlignment(HorizontalAlignment.CENTER);
// TextColumnBuilder<String> descriptionColumn = col.column("Description", "description", type.stringType())
//
// .setFixedWidth(250);
TextColumnBuilder<Integer> quantityColumn = col.column("Quantity", "quantity", type.integerType())
.setHorizontalAlignment(HorizontalAlignment.CENTER);
TextColumnBuilder<BigDecimal> unitPriceColumn = col.column("Unit Price", "unitprice", Templates.currencyType);
TextColumnBuilder<String> colaa = col.column("Unit Price", "unitprice2", type.stringType());
TextColumnBuilder<String> priceColumn99 = colaa
.setTitle("Price")
.setDataType(type.stringType());
TextColumnBuilder<BigDecimal> priceColumn = unitPriceColumn.multiply(quantityColumn)
.setTitle("Price")
.setDataType(Templates.currencyType);
//vat = price * tax
TextColumnBuilder<BigDecimal> vatColumn = priceColumn.multiply(data.getInvoice().getTax())
.setTitle("VAT")
.setDataType(Templates.currencyType);
TextColumnBuilder<BigDecimal> priceColumn1 = unitPriceColumn.multiply(quantityColumn)
.setTitle("Price")
.setDataType(Templates.currencyType);
//vat = price * tax
TextColumnBuilder<BigDecimal> vatColumn1 = priceColumn.multiply(data.getInvoice().getTax())
.setTitle("VAT")
.setDataType(Templates.currencyType);
TextColumnBuilder<BigDecimal> priceColumn2 = unitPriceColumn.multiply(quantityColumn)
.setTitle("Price")
.setDataType(Templates.currencyType);
//vat = price * tax
TextColumnBuilder<BigDecimal> vatColumn2 = priceColumn.multiply(data.getInvoice().getTax())
.setTitle("VAT")
.setDataType(Templates.currencyType);
int arrlength = 5;
TextColumnBuilder<BigDecimal>[] priceColumnarr = new TextColumnBuilder[arrlength];
TextColumnBuilder<BigDecimal>[] vatColumnarr = new TextColumnBuilder[arrlength];
for (int inum = 0; inum < arrlength; inum++) {
priceColumnarr[inum] = unitPriceColumn.multiply(quantityColumn)
.setTitle("Price")
.setDataType(Templates.currencyType);
vatColumnarr[inum] = priceColumn.multiply(data.getInvoice().getTax())
.setTitle("VAT")
.setDataType(Templates.currencyType);
}
//total = price + vat
ColumnTitleGroupBuilder totalColumn = grid.titleGroup("Total Price 1", priceColumn99, vatColumn);
ColumnTitleGroupBuilder totalColumn2 = grid.titleGroup("Total Price 2", priceColumn1, vatColumn1);
ColumnTitleGroupBuilder totalColumn3 = grid.titleGroup("Total Price 3", priceColumn2, vatColumn2);
ColumnTitleGroupBuilder[] totalColumnarr = new ColumnTitleGroupBuilder[arrlength];
for (int inum = 0; inum < arrlength; inum++) {
totalColumnarr[inum] = grid.titleGroup("Total Price " +inum, priceColumnarr[inum], vatColumnarr[inum]);
}
TextColumnBuilder<BigDecimal> priceColumn222 = unitPriceColumn.multiply(quantityColumn)
.setTitle("Price")
.setDataType(Templates.currencyType);
// TextColumnBuilder<BigDecimal> totalColumn = priceColumn.add(vatColumn)
TextColumnBuilder<BigDecimal> col1 = col.column("price", "price", Templates.currencyType)
.setHorizontalAlignment(HorizontalAlignment.CENTER);
// .setTitle("Total Price");
TextColumnBuilder<String> col5 = col.column("Column", "column", type.stringType());
TextColumnBuilder<String>[] columns = new TextColumnBuilder[arrlength];
report
.setTemplate(Templates.reportTemplate)
.setColumnStyle(columnStyle)
.setSubtotalStyle(subtotalStyle)
//columns
.columnGrid(
quantityColumn, unitPriceColumn, totalColumn,totalColumn2,totalColumn3)
.columns(
quantityColumn, unitPriceColumn,priceColumn99, vatColumn,priceColumn1, vatColumn1,priceColumn2, vatColumn2)
.summary(cmp.subreport(report5))
.title(
cmp.text(titlev).setStyle(Templates.bold12CenteredStyle),
cmp.horizontalList(
cmp.text("Payment terms: 30 days").setStyle(Templates.bold12CenteredStyle),
cmp.text(new TotalPaymentExpression()).setStyle(Templates.bold12CenteredStyle))
)
.pageFooter(
Templates.footerComponent)
.setDataSource(data.createDataSource());
return report;
}
private class TotalPaymentExpression extends AbstractSimpleExpression<String> {
private static final long serialVersionUID = 1L;
@Override
public String evaluate(ReportParameters reportParameters) {
// BigDecimal total = reportParameters.getValue(totalSum);
//
// BigDecimal shipping = total.add(data.getInvoice().getShipping());
//
// return "Total payment: " + Templates.currencyType.valueToString(shipping, reportParameters.getLocale());
return null;
}
}
public static void main(String[] args) {
InvoiceDesign design = new InvoiceDesign();
try {
JasperReportBuilder report = design.build();
report.show();
} catch (DRException e) {
e.printStackTrace();
}
}
}
import static net.sf.dynamicreports.report.builder.DynamicReports.col;
import static net.sf.dynamicreports.report.builder.DynamicReports.exp;
import static net.sf.dynamicreports.report.builder.DynamicReports.grid;
import static net.sf.dynamicreports.report.builder.DynamicReports.report;
import static net.sf.dynamicreports.report.builder.DynamicReports.sbt;
import static net.sf.dynamicreports.report.builder.DynamicReports.stl;
import static net.sf.dynamicreports.report.builder.DynamicReports.type;
import java.math.BigDecimal;
import java.util.Date;
import net.sf.dynamicreports.adhoc.AdhocManager;
import net.sf.dynamicreports.adhoc.configuration.AdhocColumn;
import net.sf.dynamicreports.adhoc.configuration.AdhocConfiguration;
import net.sf.dynamicreports.adhoc.configuration.AdhocReport;
import net.sf.dynamicreports.examples.Templates;
import net.sf.dynamicreports.examples.complex.invoice.InvoiceData;
import net.sf.dynamicreports.jasper.builder.JasperReportBuilder;
import net.sf.dynamicreports.report.base.expression.AbstractSimpleExpression;
import net.sf.dynamicreports.report.builder.column.ColumnBuilder;
import net.sf.dynamicreports.report.builder.column.TextColumnBuilder;
import net.sf.dynamicreports.report.builder.grid.ColumnTitleGroupBuilder;
import net.sf.dynamicreports.report.builder.style.StyleBuilder;
import net.sf.dynamicreports.report.builder.subtotal.AggregationSubtotalBuilder;
import net.sf.dynamicreports.report.constant.HorizontalAlignment;
import net.sf.dynamicreports.report.datasource.DRDataSource;
import net.sf.dynamicreports.report.definition.ReportParameters;
import net.sf.dynamicreports.report.exception.DRException;
import net.sf.jasperreports.engine.JRDataSource;
/**
* @author Ricardo Mariaca (r.mariaca@dynamicreports.org)
*/
public class InvoiceDesign {
private InvoiceData data = new InvoiceData();
private AggregationSubtotalBuilder<BigDecimal> totalSum;
private JRDataSource createDataSource1() {
DRDataSource dataSource = new DRDataSource("item", "quantity", "unitprice");
// dataSource.add("Notebook", 1, new BigDecimal(500));
dataSource.add("",null , null);
return dataSource;
}
private JRDataSource createDataSource() {
DRDataSource dataSource = new DRDataSource("item", "orderdate", "quantity");
for (int i = 0; i < 20; i++) {
dataSource.add("Book", new Date(), (int) (Math.random() * 10) + 1);
}
return dataSource;
}
public JasperReportBuilder build() throws DRException {
JasperReportBuilder report5 = report();
try {
StyleBuilder columnStyle = stl.style(Templates.columnStyle)
.setBorder(stl.pen1Point());
StyleBuilder subtotalStyle = stl.style(columnStyle)
.bold();
StyleBuilder shippingStyle = stl.style(Templates.boldStyle)
.setHorizontalAlignment(HorizontalAlignment.RIGHT);
report5 = report()//create new report design
.setTemplate(Templates.reportTemplate)
// .setColumnStyle(columnStyle)
// .setSubtotalStyle(subtotalStyle)
.columns(//add columns
// title, field name data type
col.column("Totle", "item", type.stringType()),
col.column("11", "quantity", type.integerType()),
col.column("11", "unitprice", type.bigDecimalType()),
col.column("11", "unitprice2", type.bigDecimalType()))
// .title(cmp.text("Getting started"))//shows report title
// .pageFooter(cmp.pageXofY())//shows number of page at page footer
.setDataSource(createDataSource1());//set datasource
// .show();//create and show report
} catch (Exception e) {
e.printStackTrace();
}
String titlev = "test title";
JasperReportBuilder report = report();
JasperReportBuilder report1 = report();
//init styles
StyleBuilder columnStyle = stl.style(Templates.columnStyle)
.setBorder(stl.pen1Point());
StyleBuilder subtotalStyle = stl.style(columnStyle)
.bold();
StyleBuilder shippingStyle = stl.style(Templates.boldStyle)
.setHorizontalAlignment(HorizontalAlignment.RIGHT);
//init columns
TextColumnBuilder<Integer> rowNumberColumn = col.reportRowNumberColumn()
.setFixedColumns(2)
.setHorizontalAlignment(HorizontalAlignment.CENTER);
// TextColumnBuilder<String> descriptionColumn = col.column("Description", "description", type.stringType())
//
// .setFixedWidth(250);
TextColumnBuilder<Integer> quantityColumn = col.column("Quantity", "quantity", type.integerType())
.setHorizontalAlignment(HorizontalAlignment.CENTER);
TextColumnBuilder<BigDecimal> unitPriceColumn = col.column("Unit Price", "unitprice", Templates.currencyType);
TextColumnBuilder<String> colaa = col.column("Unit Price", "unitprice2", type.stringType());
TextColumnBuilder<String> priceColumn99 = colaa
.setTitle("Price")
.setDataType(type.stringType());
TextColumnBuilder<BigDecimal> priceColumn = unitPriceColumn.multiply(quantityColumn)
.setTitle("Price")
.setDataType(Templates.currencyType);
//vat = price * tax
TextColumnBuilder<BigDecimal> vatColumn = priceColumn.multiply(data.getInvoice().getTax())
.setTitle("VAT")
.setDataType(Templates.currencyType);
TextColumnBuilder<BigDecimal> priceColumn1 = unitPriceColumn.multiply(quantityColumn)
.setTitle("Price")
.setDataType(Templates.currencyType);
//vat = price * tax
TextColumnBuilder<BigDecimal> vatColumn1 = priceColumn.multiply(data.getInvoice().getTax())
.setTitle("VAT")
.setDataType(Templates.currencyType);
TextColumnBuilder<BigDecimal> priceColumn2 = unitPriceColumn.multiply(quantityColumn)
.setTitle("Price")
.setDataType(Templates.currencyType);
//vat = price * tax
TextColumnBuilder<BigDecimal> vatColumn2 = priceColumn.multiply(data.getInvoice().getTax())
.setTitle("VAT")
.setDataType(Templates.currencyType);
int arrlength = 5;
TextColumnBuilder<BigDecimal>[] priceColumnarr = new TextColumnBuilder[arrlength];
TextColumnBuilder<BigDecimal>[] vatColumnarr = new TextColumnBuilder[arrlength];
for (int inum = 0; inum < arrlength; inum++) {
priceColumnarr[inum] = unitPriceColumn.multiply(quantityColumn)
.setTitle("Price")
.setDataType(Templates.currencyType);
vatColumnarr[inum] = priceColumn.multiply(data.getInvoice().getTax())
.setTitle("VAT")
.setDataType(Templates.currencyType);
}
//total = price + vat
ColumnTitleGroupBuilder totalColumn = grid.titleGroup("Total Price 1", priceColumn99, vatColumn);
ColumnTitleGroupBuilder totalColumn2 = grid.titleGroup("Total Price 2", priceColumn1, vatColumn1);
ColumnTitleGroupBuilder totalColumn3 = grid.titleGroup("Total Price 3", priceColumn2, vatColumn2);
ColumnTitleGroupBuilder[] totalColumnarr = new ColumnTitleGroupBuilder[arrlength];
for (int inum = 0; inum < arrlength; inum++) {
totalColumnarr[inum] = grid.titleGroup("Total Price " +inum, priceColumnarr[inum], vatColumnarr[inum]);
}
TextColumnBuilder<BigDecimal> priceColumn222 = unitPriceColumn.multiply(quantityColumn)
.setTitle("Price")
.setDataType(Templates.currencyType);
// TextColumnBuilder<BigDecimal> totalColumn = priceColumn.add(vatColumn)
TextColumnBuilder<BigDecimal> col1 = col.column("price", "price", Templates.currencyType)
.setHorizontalAlignment(HorizontalAlignment.CENTER);
// .setTitle("Total Price");
TextColumnBuilder<String> col5 = col.column("Column", "column", type.stringType());
TextColumnBuilder<String>[] columns = new TextColumnBuilder[arrlength];
report
.setTemplate(Templates.reportTemplate)
.setColumnStyle(columnStyle)
.setSubtotalStyle(subtotalStyle)
//columns
.columnGrid(
quantityColumn, unitPriceColumn, totalColumn,totalColumn2,totalColumn3)
.columns(
quantityColumn, unitPriceColumn,priceColumn99, vatColumn,priceColumn1, vatColumn1,priceColumn2, vatColumn2)
.summary(cmp.subreport(report5))
.title(
cmp.text(titlev).setStyle(Templates.bold12CenteredStyle),
cmp.horizontalList(
cmp.text("Payment terms: 30 days").setStyle(Templates.bold12CenteredStyle),
cmp.text(new TotalPaymentExpression()).setStyle(Templates.bold12CenteredStyle))
)
.pageFooter(
Templates.footerComponent)
.setDataSource(data.createDataSource());
return report;
}
private class TotalPaymentExpression extends AbstractSimpleExpression<String> {
private static final long serialVersionUID = 1L;
@Override
public String evaluate(ReportParameters reportParameters) {
// BigDecimal total = reportParameters.getValue(totalSum);
//
// BigDecimal shipping = total.add(data.getInvoice().getShipping());
//
// return "Total payment: " + Templates.currencyType.valueToString(shipping, reportParameters.getLocale());
return null;
}
}
public static void main(String[] args) {
InvoiceDesign design = new InvoiceDesign();
try {
JasperReportBuilder report = design.build();
report.show();
} catch (DRException e) {
e.printStackTrace();
}
}
}