private void build() {
    FontBuilder boldFont = stl.fontArialBold().setFontSize(12);

    TextColumnBuilder<Integer> xColumn = col.column("X", "x", type.integerType());
    TextColumnBuilder<Integer> yColumn = col.column("Y", "y", type.integerType());
    TextColumnBuilder<Integer> zColumn = col.column("Z", "z", type.integerType());

    try {
      report()
          .setTemplate(Templates.reportTemplate)
          .columns(xColumn, yColumn, zColumn)
          .title(Templates.createTitleComponent("XYBlockChart"))
          .summary(
              cht.xyBlockChart(0, 5, Color.WHITE)
                  .setTitle("XY block chart")
                  .setTitleFont(boldFont)
                  .setBlockAnchor(RectangleAnchor.BOTTOM_LEFT)
                  .paintScales(
                      cht.paintScale("Value 1", 1, Color.RED),
                      cht.paintScale("Value 2", 2, Color.GREEN),
                      cht.paintScale("Value 3", 3, Color.BLUE))
                  .setXValue(xColumn)
                  .series(cht.xyzSerie().setYValue(yColumn).setZValue(zColumn))
                  .setXAxisFormat(cht.axisFormat().setLabel("X"))
                  .setYAxisFormat(cht.axisFormat().setLabel("Y")))
          .pageFooter(Templates.footerComponent)
          .setDataSource(createDataSource())
          .show();
    } catch (DRException e) {
      e.printStackTrace();
    }
  }
  public void build() {
    FontBuilder boldFont = stl.fontArialBold().setFontSize(12);

    TextColumnBuilder<String> staffColumn = col.column("Staff", "staff", type.stringType());
    TextColumnBuilder<Integer> absentColumn =
        col.column("Absent days", "absent", type.integerType());
    TextColumnBuilder<Integer> presentColumn =
        col.column("Present days", "present", type.integerType());
    Orientation orientation = Orientation.VERTICAL;

    try {
      report()
          .setTemplate(Templates.reportTemplate)
          .columns(staffColumn, absentColumn, presentColumn)
          .title(Templates.createTitleComponent("Staff LineChart"))
          .summary(
              cht.lineChart()
                  //					cht.stackedBarChart()
                  .setTitle("Staff Attendance Report")
                  .setTitleFont(boldFont)
                  .setCategory(staffColumn)
                  .series(cht.serie(absentColumn), cht.serie(presentColumn))
                  .setCategoryAxisFormat(cht.axisFormat().setLabel("Staff")))
          .pageFooter(Templates.footerComponent)
          .setDataSource(createDataSource())
          .show();
    } catch (DRException e) {
      e.printStackTrace();
    }
  }
  private void build() {
    TextColumnBuilder<String> itemColumn = col.column("Item", "item", type.stringType());
    TextColumnBuilder<Integer> stock1Column = col.column("Stock 1", "stock1", type.integerType());
    TextColumnBuilder<Integer> stock2Column = col.column("Stock 2", "stock2", type.integerType());
    TextColumnBuilder<Integer> stock3Column = col.column("Stock 3", "stock3", type.integerType());

    BarChartBuilder barChart =
        cht.barChart()
            .setShowPercentages(true)
            .setShowValues(true)
            .setPercentValuePattern("#,##0")
            .setCategory(itemColumn)
            .series(cht.serie(stock1Column), cht.serie(stock2Column), cht.serie(stock3Column));
    StackedBarChartBuilder stackedBarChart =
        cht.stackedBarChart()
            .setShowPercentages(true)
            .setShowValues(true)
            .setCategory(itemColumn)
            .series(cht.serie(stock1Column), cht.serie(stock2Column), cht.serie(stock3Column));
    LineChartBuilder lineChart =
        cht.lineChart()
            .setShowPercentages(true)
            .setShowValues(true)
            .setCategory(itemColumn)
            .series(cht.serie(stock1Column), cht.serie(stock2Column), cht.serie(stock3Column));
    AreaChartBuilder areaChart =
        cht.areaChart()
            .setShowPercentages(true)
            .setShowValues(true)
            .setCategory(itemColumn)
            .series(cht.serie(stock1Column), cht.serie(stock2Column), cht.serie(stock3Column));
    StackedBar3DChartBuilder stackedBar3DChart =
        cht.stackedBar3DChart()
            .setShowPercentages(true)
            .setShowValues(true)
            .setCategory(itemColumn)
            .series(cht.serie(stock1Column), cht.serie(stock2Column), cht.serie(stock3Column));
    PieChartBuilder pieChart =
        cht.pieChart()
            .setShowPercentages(true)
            .setShowValues(true)
            .setKey(itemColumn)
            .series(cht.serie(stock1Column));

    try {
      report()
          .setTemplate(Templates.reportTemplate)
          .columns(itemColumn, stock1Column, stock2Column, stock3Column)
          .title(Templates.createTitleComponent("ChartShowPercentages"))
          .summary(
              cmp.horizontalList(barChart, stackedBarChart),
              cmp.horizontalList(lineChart, areaChart),
              cmp.horizontalList(stackedBar3DChart, pieChart))
          .pageFooter(Templates.footerComponent)
          .setDataSource(createDataSource())
          .show();
    } catch (DRException e) {
      e.printStackTrace();
    }
  }
  private void build() {
    FontBuilder boldFont = stl.fontArialBold().setFontSize(12);

    TextColumnBuilder<String> yearColumn = col.column("Year", "year", type.stringType());
    TextColumnBuilder<String> quarterColumn = col.column("Quarter", "quarter", type.stringType());
    TextColumnBuilder<Integer> stock1Column = col.column("Stock 1", "stock1", type.integerType());
    TextColumnBuilder<Integer> stock2Column = col.column("Stock 2", "stock2", type.integerType());
    TextColumnBuilder<Integer> stock3Column = col.column("Stock 3", "stock3", type.integerType());

    try {
      report()
          .setTemplate(Templates.reportTemplate)
          .columns(yearColumn, quarterColumn, stock1Column, stock2Column, stock3Column)
          .title(Templates.createTitleComponent("GroupedStackedBarChart"))
          .summary(
              cht.groupedStackedBarChart()
                  .setTitle("Grouped stacked bar chart")
                  .setTitleFont(boldFont)
                  .setCategory(yearColumn)
                  .series(
                      cht.groupedSerie(stock1Column).setGroup(quarterColumn),
                      cht.groupedSerie(stock2Column).setGroup(quarterColumn),
                      cht.groupedSerie(stock3Column).setGroup(quarterColumn)))
          .pageFooter(Templates.footerComponent)
          .setDataSource(createDataSource())
          .show();
    } catch (DRException e) {
      e.printStackTrace();
    }
  }
 public static void printGivingStatement(String lastName, String firstName) {
   final JasperReportBuilder statement = createGivingStatement(lastName, firstName);
   try {
     statement.print(true);
   } catch (DRException e) {
     e.printStackTrace();
   }
 }
 public static void main(String[] args) {
   DynamicReportDesign design = new DynamicReportDesign();
   try {
     JasperReportBuilder report = design.build();
     report.show();
   } catch (DRException e) {
     e.printStackTrace();
   }
 }
 public static void writeGivingStatement(String lastName, String firstName, File outputFile)
     throws IOException {
   final FileOutputStream os = new FileOutputStream(outputFile);
   try {
     final JasperReportBuilder statement = createGivingStatement(lastName, firstName);
     statement.toXlsx(os);
   } catch (DRException e) {
     JOptionPane.showMessageDialog(null, "Exception occurred writing report: " + e.getMessage());
     e.printStackTrace();
   } finally {
     os.flush();
     os.close();
   }
 }
 private void build() {
   try {
     report()
         .setTemplate(Templates.reportTemplate)
         .columns(
             col.column("Item", "item", type.stringType()),
             col.column("Quantity", "quantity", type.integerType()),
             col.column("Comments", "comments", type.listType()))
         .title(Templates.createTitleComponent("ColumnListDataType"))
         .pageFooter(Templates.footerComponent)
         .setDataSource(createDataSource())
         .show();
   } catch (DRException e) {
     e.printStackTrace();
   }
 }
  private void build() {
    ComponentBuilder<?, ?> cardComponent = createCardComponent();
    HorizontalListBuilder cards = cmp.horizontalFlowList();
    for (int i = 0; i < 10; i++) {
      cards.add(cardComponent);
    }

    try {
      report()
          .setTemplate(Templates.reportTemplate)
          .setTextStyle(stl.style())
          .setPageFormat(PageType.A5)
          .title(Templates.createTitleComponent("Card"), cards)
          .show();
    } catch (DRException e) {
      e.printStackTrace();
    }
  }
  private void build() {
    try {
      JasperHtmlExporterBuilder htmlExporter =
          export
              .htmlExporter("c:/report.html")
              .setImagesDirName("c:/images")
              .setOutputImagesToDir(true);

      report()
          .setTemplate(Templates.reportTemplate)
          .columns(
              col.column("Item", "item", type.stringType()),
              col.column("Quantity", "quantity", type.integerType()),
              col.column("Unit price", "unitprice", type.bigDecimalType()))
          .title(Templates.createTitleComponent("HtmlReport"))
          .pageFooter(Templates.footerComponent)
          .setDataSource(createDataSource())
          .toHtml(htmlExporter);
    } catch (DRException e) {
      e.printStackTrace();
    }
  }
  private void build() {
    FieldBuilder<Date> dateField = field("date", type.dateType());
    FieldBuilder<Integer> stock1Field = field("stock1", type.integerType());
    FieldBuilder<Integer> stock2Field = field("stock2", type.integerType());

    CategoryChartSerieBuilder stock1Serie = cht.serie(stock1Field).setLabel("Stock1");
    CategoryChartSerieBuilder stock2Serie = cht.serie(stock2Field).setLabel("Stock2");

    LineChartBuilder chart1 =
        cht.lineChart()
            .setCategory(new CategoryExpression())
            .series(stock1Serie)
            .setValueAxisFormat(cht.axisFormat().setLabel("Stock1"));

    BarChartBuilder chart2 =
        cht.barChart()
            .setCategory(new CategoryExpression())
            .series(stock2Serie)
            .setValueAxisFormat(cht.axisFormat().setLabel("Stock2"));

    try {
      report()
          .setTemplate(Templates.reportTemplate)
          .fields(dateField)
          .title(
              Templates.createTitleComponent("MultiAxisChart"),
              cht.multiAxisChart(chart1, chart2),
              cht.multiAxisChart()
                  .addChart(chart1, AxisPosition.LEFT_OR_TOP)
                  .addChart(chart2, AxisPosition.RIGHT_OR_BOTTOM))
          .pageFooter(Templates.footerComponent)
          .setDataSource(createDataSource())
          .show();
    } catch (DRException e) {
      e.printStackTrace();
    }
  }
  private void build() {
    boldCenteredStyle = stl.style().bold().setHorizontalAlignment(HorizontalAlignment.CENTER);
    StyleBuilder backgroundStyle =
        stl.style(boldCenteredStyle)
            .setVerticalAlignment(VerticalAlignment.MIDDLE)
            .setRotation(Rotation.LEFT);

    TextColumnBuilder<String> column1 = col.column("Column1", "column1", type.stringType());
    TextColumnBuilder<String> column2 = col.column("Column2", "column2", type.stringType());
    ColumnGroupBuilder columnGroup = grp.group(column1);

    try {
      report() // create new report design
          .setPageColumnsPerPage(2)
          .columns(column1, column2)
          .groupBy(columnGroup)

          // bands
          .title(createTextField("This is a title band"))
          .pageHeader(createTextField("This is a page header band"))
          .pageFooter(createTextField("This is a page footer band"))
          .columnHeader(createTextField("This is a column header band"))
          .columnFooter(createTextField("This is a column footer band"))
          .lastPageFooter(createTextField("This is a last page footer band"))
          .summary(createTextField("This is a summary band"))
          // .detailHeader(createTextField("This is a detail header band"))
          // .detailFooter(createTextField("This is a detail footer band"))
          .groupHeader(columnGroup, createTextField("This is a group header band"))
          .groupFooter(columnGroup, createTextField("This is a group footer band"))
          .background(
              createTextField("This is a background band").setHeight(800).setStyle(backgroundStyle))
          .setDataSource(createDataSource()) // set datasource
          .show(); // create and show report
    } catch (DRException e) {
      e.printStackTrace();
    }
  }
  @Test
  public void test() {
    try {
      ByteArrayOutputStream bos = new ByteArrayOutputStream();
      concatenatedReport.toCsv(bos);
      Assert.assertEquals(
          "concatenated report ", "text1\n1\ntext2\n1\ntext3\n1\n", new String(bos.toByteArray()));

      concatenatedReport.continuousPageNumbering();
      bos = new ByteArrayOutputStream();
      concatenatedReport.toCsv(bos);
      Assert.assertEquals(
          "concatenated report ", "text1\n1\ntext2\n2\ntext3\n3\n", new String(bos.toByteArray()));

      concatenatedReport.setContinuousPageNumbering(false);
      bos = new ByteArrayOutputStream();
      concatenatedReport.toCsv(bos);
      Assert.assertEquals(
          "concatenated report ", "text1\n1\ntext2\n1\ntext3\n1\n", new String(bos.toByteArray()));
    } catch (DRException e) {
      e.printStackTrace();
      Assert.fail(e.getMessage());
    }
  }
  private void build() {

    try {
      report()
          .setTemplate(Templates.reportTemplate)
          .ignorePageWidth()
          .columns(
              col.column("ID", "id", type.integerType()),
              col.column("Item", "item", type.stringType()),
              col.column("Quantity", "quantity", type.integerType()),
              col.column("Unit price", "unitprice", type.bigDecimalType()),
              col.column("Order date", "orderdate", type.dateType()),
              col.column("Order date", "orderdate", type.dateYearToFractionType()),
              col.column("Order year", "orderdate", type.dateYearType()),
              col.column("Order month", "orderdate", type.dateMonthType()),
              col.column("Order day", "orderdate", type.dateDayType()))
          .title(Templates.createTitleComponent("DynamicPageWidth"))
          .pageFooter(Templates.footerComponent)
          .setDataSource(createDataSource())
          .show();
    } catch (DRException e) {
      e.printStackTrace();
    }
  }