diff --git a/jasperreports-parent/jasperreports-examples/pom.xml b/jasperreports-parent/jasperreports-examples/pom.xml index ebeb35421c..0578683bf4 100644 --- a/jasperreports-parent/jasperreports-examples/pom.xml +++ b/jasperreports-parent/jasperreports-examples/pom.xml @@ -17,7 +17,7 @@ JasperReports integration components and resources for Wicket. - ${project.build.sourceDirectory}/../webapp/reports + ${project.build.directory}/reports true true true @@ -62,6 +62,22 @@ org.slf4j slf4j-reload4j - + + + + org.eclipse.jetty + jetty-maven-plugin + + + ${jasperreportsDirectory} + + + src/main/webapp + ${jasperreportsDirectory} + + + + + diff --git a/jasperreports-parent/jasperreports-examples/src/main/java/org/wicketstuff/jasperreports/examples/JasperReportsApplication.java b/jasperreports-parent/jasperreports-examples/src/main/java/org/wicketstuff/jasperreports/examples/JasperReportsApplication.java index ad89bb6000..1236323cf2 100644 --- a/jasperreports-parent/jasperreports-examples/src/main/java/org/wicketstuff/jasperreports/examples/JasperReportsApplication.java +++ b/jasperreports-parent/jasperreports-examples/src/main/java/org/wicketstuff/jasperreports/examples/JasperReportsApplication.java @@ -1,14 +1,14 @@ /* * $Id$ * $Revision$ $Date$ - * + * * ==================================================================== Licensed * under the Apache License, Version 2.0 (the "License"); you may not use this * file except in compliance with the License. You may obtain a copy of the * License at - * + * * http://www.apache.org/licenses/LICENSE-2.0 - * + * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the @@ -17,6 +17,10 @@ */ package org.wicketstuff.jasperreports.examples; +import java.io.File; +import java.io.InputStream; +import java.nio.file.Files; +import java.nio.file.StandardCopyOption; import java.time.Duration; import org.apache.wicket.Page; @@ -24,33 +28,50 @@ /** * Wicket application class for jasper reports example. - * + * * @author Eelco Hillenius */ -public class JasperReportsApplication extends WebApplication -{ +public class JasperReportsApplication extends WebApplication { /** * Constructor. */ - public JasperReportsApplication() - { + public JasperReportsApplication() { } /** * @see org.apache.wicket.protocol.http.WebApplication#init() */ @Override - protected void init() - { + protected void init() { + getCspSettings().blocking().disabled(); getResourceSettings().setResourcePollFrequency(Duration.ofSeconds(1)); + + final File base = new File(System.getProperty("jasperreportsDirectory")); + final File reportFile = new File(base, "WebappReport.jasper"); + try { + if (!base.exists()) { + base.mkdirs(); + } + try (InputStream rep = getClass().getResourceAsStream("/jasperreports/WebappReport.jasper")) { + Files.copy(rep, reportFile.toPath(), StandardCopyOption.REPLACE_EXISTING); + } + final File images = new File(base, "../images"); + if (!images.exists()) { + images.mkdirs(); + } + try (InputStream rep = getClass().getResourceAsStream("/jasperreports/jasperreports.gif")) { + Files.copy(rep, new File(images, "jasperreports.gif").toPath(), StandardCopyOption.REPLACE_EXISTING); + } + } catch (Exception e) { + throw new RuntimeException(e); + } } /** * @see org.apache.wicket.Application#getHomePage() */ @Override - public Class getHomePage() - { + public Class getHomePage() { return Index.class; } } diff --git a/jasperreports-parent/jasperreports-examples/src/main/java/org/wicketstuff/jasperreports/examples/ReportLinksPage.html b/jasperreports-parent/jasperreports-examples/src/main/java/org/wicketstuff/jasperreports/examples/ReportLinksPage.html index 2653647f81..79c150533c 100644 --- a/jasperreports-parent/jasperreports-examples/src/main/java/org/wicketstuff/jasperreports/examples/ReportLinksPage.html +++ b/jasperreports-parent/jasperreports-examples/src/main/java/org/wicketstuff/jasperreports/examples/ReportLinksPage.html @@ -25,6 +25,9 @@
  • display CSV report
  • +
  • + display XLS report +
  • diff --git a/jasperreports-parent/jasperreports-examples/src/main/java/org/wicketstuff/jasperreports/examples/ReportLinksPage.java b/jasperreports-parent/jasperreports-examples/src/main/java/org/wicketstuff/jasperreports/examples/ReportLinksPage.java index 31c56381b1..db535f4046 100644 --- a/jasperreports-parent/jasperreports-examples/src/main/java/org/wicketstuff/jasperreports/examples/ReportLinksPage.java +++ b/jasperreports-parent/jasperreports-examples/src/main/java/org/wicketstuff/jasperreports/examples/ReportLinksPage.java @@ -12,15 +12,11 @@ */ package org.wicketstuff.jasperreports.examples; -import jakarta.servlet.ServletContext; - import java.io.File; -import java.util.HashMap; import java.util.Map; import org.apache.wicket.markup.html.WebPage; import org.apache.wicket.markup.html.link.ResourceLink; -import org.apache.wicket.protocol.http.WebApplication; import org.wicketstuff.jasperreports.JRConcreteResource; import org.wicketstuff.jasperreports.JRImageResource; import org.wicketstuff.jasperreports.JRResource; @@ -29,63 +25,65 @@ import org.wicketstuff.jasperreports.handlers.PdfResourceHandler; import org.wicketstuff.jasperreports.handlers.RtfResourceHandler; import org.wicketstuff.jasperreports.handlers.TextResourceHandler; +import org.wicketstuff.jasperreports.handlers.XlsResourceHandler; /** * Simple Jasper reports example with PDF output and a jasper reports panel.. - * + * * @author Eelco Hillenius */ -public class ReportLinksPage extends WebPage -{ +public class ReportLinksPage extends WebPage { private static final long serialVersionUID = 1L; /** * Constructor. */ - public ReportLinksPage() - { - ServletContext context = ((WebApplication)getApplication()).getServletContext(); - final File reportFile = new File(context.getRealPath("/reports/WebappReport.jasper")); + public ReportLinksPage() { + final File base = new File(System.getProperty("jasperreportsDirectory")); + final File reportFile = new File(base, "WebappReport.jasper"); - final Map parameters = new HashMap(); - parameters.put("BaseDir", new File(context.getRealPath("/reports"))); + final Map parameters = Map.of("BaseDir", base); JRResource pdfResource = new JRConcreteResource(reportFile, - new PdfResourceHandler()).setReportParameters(parameters).setReportDataSource( - new WebappDataSource()); + new PdfResourceHandler()).setReportParameters(parameters).setReportDataSource( + new WebappDataSource()); add(new ResourceLink("linkToPdf", pdfResource)); JRResource rtfResource = new JRConcreteResource(reportFile, - new RtfResourceHandler()).setReportParameters(parameters).setReportDataSource( - new WebappDataSource()); + new RtfResourceHandler()).setReportParameters(parameters).setReportDataSource( + new WebappDataSource()); add(new ResourceLink("linkToRtf", rtfResource)); JRResource htmlResource = new JRConcreteResource(reportFile, - new HtmlResourceHandler()).setReportParameters(parameters).setReportDataSource( - new WebappDataSource()); + new HtmlResourceHandler()).setReportParameters(parameters).setReportDataSource( + new WebappDataSource()); add(new ResourceLink("linkToHtml", htmlResource)); JRResource textResource = new JRConcreteResource(reportFile, - new TextResourceHandler()).setReportParameters(parameters).setReportDataSource( - new WebappDataSource()); + new TextResourceHandler()).setReportParameters(parameters).setReportDataSource( + new WebappDataSource()); add(new ResourceLink("linkToText", textResource)); JRResource imageResource = new JRImageResource(reportFile).setReportParameters(parameters) - .setReportDataSource(new WebappDataSource()); + .setReportDataSource(new WebappDataSource()); add(new ResourceLink("linkToImage", imageResource)); JRResource csvResource = new JRConcreteResource(reportFile, - new CsvResourceHandler()).setReportParameters(parameters).setReportDataSource( - new WebappDataSource()); + new CsvResourceHandler()).setReportParameters(parameters).setReportDataSource( + new WebappDataSource()); add(new ResourceLink("linkToCsv", csvResource)); + + JRResource xlsResource = new JRConcreteResource(reportFile, + new XlsResourceHandler()).setReportParameters(parameters).setReportDataSource( + new WebappDataSource()); + add(new ResourceLink("linkToXls", xlsResource)); } /** * @see org.apache.wicket.Component#isVersioned() */ @Override - public boolean isVersioned() - { + public boolean isVersioned() { return false; } } \ No newline at end of file diff --git a/jasperreports-parent/jasperreports-examples/src/main/java/org/wicketstuff/jasperreports/examples/SimplePdfPage.html b/jasperreports-parent/jasperreports-examples/src/main/java/org/wicketstuff/jasperreports/examples/SimplePdfPage.html index dca6c4989b..457fdf2a18 100644 --- a/jasperreports-parent/jasperreports-examples/src/main/java/org/wicketstuff/jasperreports/examples/SimplePdfPage.html +++ b/jasperreports-parent/jasperreports-examples/src/main/java/org/wicketstuff/jasperreports/examples/SimplePdfPage.html @@ -3,14 +3,19 @@ xml:lang="en" lang="en"> WicketStuff JasperReports Integration - Embedded PDF +
    Before
    - - - +
    After diff --git a/jasperreports-parent/jasperreports-examples/src/main/java/org/wicketstuff/jasperreports/examples/SimplePdfPage.java b/jasperreports-parent/jasperreports-examples/src/main/java/org/wicketstuff/jasperreports/examples/SimplePdfPage.java index 9478dbe715..5d332dd519 100644 --- a/jasperreports-parent/jasperreports-examples/src/main/java/org/wicketstuff/jasperreports/examples/SimplePdfPage.java +++ b/jasperreports-parent/jasperreports-examples/src/main/java/org/wicketstuff/jasperreports/examples/SimplePdfPage.java @@ -12,14 +12,10 @@ */ package org.wicketstuff.jasperreports.examples; -import jakarta.servlet.ServletContext; - import java.io.File; -import java.util.HashMap; import java.util.Map; import org.apache.wicket.markup.html.WebPage; -import org.apache.wicket.protocol.http.WebApplication; import org.wicketstuff.jasperreports.EmbeddedJRReport; import org.wicketstuff.jasperreports.JRConcreteResource; import org.wicketstuff.jasperreports.JRResource; @@ -27,26 +23,22 @@ /** * Simple Jasper reports example with PDF output and a jasper reports panel.. - * + * * @author Eelco Hillenius */ -public class SimplePdfPage extends WebPage -{ +public class SimplePdfPage extends WebPage { private static final long serialVersionUID = 1L; /** * Constructor. */ - public SimplePdfPage() - { - ServletContext context = ((WebApplication)getApplication()).getServletContext(); - final File reportFile = new File(context.getRealPath("/reports/WebappReport.jasper")); + public SimplePdfPage() { + final File base = new File(System.getProperty("jasperreportsDirectory")); + final File reportFile = new File(base, "WebappReport.jasper"); - final Map parameters = new HashMap(); - parameters.put("BaseDir", new File(context.getRealPath("/reports"))); - JRResource pdfResource = new JRConcreteResource(reportFile, - new PdfResourceHandler()).setReportParameters(parameters).setReportDataSource( - new WebappDataSource()); + JRResource pdfResource = new JRConcreteResource(reportFile, new PdfResourceHandler()) + .setReportParameters(Map.of("BaseDir", base)) + .setReportDataSource(new WebappDataSource()); add(new EmbeddedJRReport("report", pdfResource)); } @@ -54,8 +46,7 @@ public SimplePdfPage() * @see org.apache.wicket.Component#isVersioned() */ @Override - public boolean isVersioned() - { + public boolean isVersioned() { return false; } } \ No newline at end of file diff --git a/jasperreports-parent/jasperreports-examples/src/main/java/org/wicketstuff/jasperreports/examples/WebappDataSource.java b/jasperreports-parent/jasperreports-examples/src/main/java/org/wicketstuff/jasperreports/examples/WebappDataSource.java index 9a3f4119c9..56522dff54 100644 --- a/jasperreports-parent/jasperreports-examples/src/main/java/org/wicketstuff/jasperreports/examples/WebappDataSource.java +++ b/jasperreports-parent/jasperreports-examples/src/main/java/org/wicketstuff/jasperreports/examples/WebappDataSource.java @@ -5,21 +5,21 @@ * * JasperReports - Free Java report-generating library. * Copyright (C) 2001-2009 JasperSoft Corporation http://www.jaspersoft.com - * + * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. - * + * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. - * + * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA. - * + * * JasperSoft Corporation * 539 Bryant Street, Suite 100 * San Francisco, CA 94107 @@ -33,101 +33,84 @@ import net.sf.jasperreports.engine.JRException; import net.sf.jasperreports.engine.JRField; - /** * @author Teodor Danciu (teodord@users.sourceforge.net) * @version $Id: WebappDataSource.java 2692 2009-03-24 17:17:32Z teodord $ */ -public class WebappDataSource implements Serializable, JRDataSource -{ - - +public class WebappDataSource implements Serializable, JRDataSource { private static final long serialVersionUID = 1L; /** * */ - private Object[][] data = { { "Berne", new Integer(22), "Bill Ott", "250 - 20th Ave." }, - { "Berne", new Integer(9), "James Schneider", "277 Seventh Av." }, - { "Boston", new Integer(32), "Michael Ott", "339 College Av." }, - { "Boston", new Integer(23), "Julia Heiniger", "358 College Av." }, - { "Chicago", new Integer(39), "Mary Karsen", "202 College Av." }, - { "Chicago", new Integer(35), "George Karsen", "412 College Av." }, - { "Chicago", new Integer(11), "Julia White", "412 Upland Pl." }, - { "Dallas", new Integer(47), "Janet Fuller", "445 Upland Pl." }, - { "Dallas", new Integer(43), "Susanne Smith", "2 Upland Pl." }, - { "Dallas", new Integer(40), "Susanne Miller", "440 - 20th Ave." }, - { "Dallas", new Integer(36), "John Steel", "276 Upland Pl." }, - { "Dallas", new Integer(37), "Michael Clancy", "19 Seventh Av." }, - { "Dallas", new Integer(19), "Susanne Heiniger", "86 - 20th Ave." }, - { "Dallas", new Integer(10), "Anne Fuller", "135 Upland Pl." }, - { "Dallas", new Integer(4), "Sylvia Ringer", "365 College Av." }, - { "Dallas", new Integer(0), "Laura Steel", "429 Seventh Av." }, - { "Lyon", new Integer(38), "Andrew Heiniger", "347 College Av." }, - { "Lyon", new Integer(28), "Susanne White", "74 - 20th Ave." }, - { "Lyon", new Integer(17), "Laura Ott", "443 Seventh Av." }, - { "Lyon", new Integer(2), "Anne Miller", "20 Upland Pl." }, - { "New York", new Integer(46), "Andrew May", "172 Seventh Av." }, - { "New York", new Integer(44), "Sylvia Ott", "361 College Av." }, - { "New York", new Integer(41), "Bill King", "546 College Av." }, - { "Oslo", new Integer(45), "Janet May", "396 Seventh Av." }, - { "Oslo", new Integer(42), "Robert Ott", "503 Seventh Av." }, - { "Paris", new Integer(25), "Sylvia Steel", "269 College Av." }, - { "Paris", new Integer(18), "Sylvia Fuller", "158 - 20th Ave." }, - { "Paris", new Integer(5), "Laura Miller", "294 Seventh Av." }, - { "San Francisco", new Integer(48), "Robert White", "549 Seventh Av." }, - { "San Francisco", new Integer(7), "James Peterson", "231 Upland Pl." } }; + private Object[][] data = { { "Berne", Integer.valueOf(22), "Bill Ott", "250 - 20th Ave." }, + { "Berne", Integer.valueOf(9), "James Schneider", "277 Seventh Av." }, + { "Boston", Integer.valueOf(32), "Michael Ott", "339 College Av." }, + { "Boston", Integer.valueOf(23), "Julia Heiniger", "358 College Av." }, + { "Chicago", Integer.valueOf(39), "Mary Karsen", "202 College Av." }, + { "Chicago", Integer.valueOf(35), "George Karsen", "412 College Av." }, + { "Chicago", Integer.valueOf(11), "Julia White", "412 Upland Pl." }, + { "Dallas", Integer.valueOf(47), "Janet Fuller", "445 Upland Pl." }, + { "Dallas", Integer.valueOf(43), "Susanne Smith", "2 Upland Pl." }, + { "Dallas", Integer.valueOf(40), "Susanne Miller", "440 - 20th Ave." }, + { "Dallas", Integer.valueOf(36), "John Steel", "276 Upland Pl." }, + { "Dallas", Integer.valueOf(37), "Michael Clancy", "19 Seventh Av." }, + { "Dallas", Integer.valueOf(19), "Susanne Heiniger", "86 - 20th Ave." }, + { "Dallas", Integer.valueOf(10), "Anne Fuller", "135 Upland Pl." }, + { "Dallas", Integer.valueOf(4), "Sylvia Ringer", "365 College Av." }, + { "Dallas", Integer.valueOf(0), "Laura Steel", "429 Seventh Av." }, + { "Lyon", Integer.valueOf(38), "Andrew Heiniger", "347 College Av." }, + { "Lyon", Integer.valueOf(28), "Susanne White", "74 - 20th Ave." }, + { "Lyon", Integer.valueOf(17), "Laura Ott", "443 Seventh Av." }, + { "Lyon", Integer.valueOf(2), "Anne Miller", "20 Upland Pl." }, + { "New York", Integer.valueOf(46), "Andrew May", "172 Seventh Av." }, + { "New York", Integer.valueOf(44), "Sylvia Ott", "361 College Av." }, + { "New York", Integer.valueOf(41), "Bill King", "546 College Av." }, + { "Oslo", Integer.valueOf(45), "Janet May", "396 Seventh Av." }, + { "Oslo", Integer.valueOf(42), "Robert Ott", "503 Seventh Av." }, + { "Paris", Integer.valueOf(25), "Sylvia Steel", "269 College Av." }, + { "Paris", Integer.valueOf(18), "Sylvia Fuller", "158 - 20th Ave." }, + { "Paris", Integer.valueOf(5), "Laura Miller", "294 Seventh Av." }, + { "San Francisco", Integer.valueOf(48), "Robert White", "549 Seventh Av." }, + { "San Francisco", Integer.valueOf(7), "James Peterson", "231 Upland Pl." } }; private int index = -1; - /** * */ - public WebappDataSource() - { + public WebappDataSource() { } - /** * */ - public boolean next() throws JRException - { + @Override + public boolean next() throws JRException { index++; return (index < data.length); } - /** * */ - public Object getFieldValue(JRField field) throws JRException - { + @Override + public Object getFieldValue(JRField field) throws JRException { Object value = null; String fieldName = field.getName(); - if ("City".equals(fieldName)) - { + if ("City".equals(fieldName)) { value = data[index][0]; - } - else if ("Id".equals(fieldName)) - { + } else if ("Id".equals(fieldName)) { value = data[index][1]; - } - else if ("Name".equals(fieldName)) - { + } else if ("Name".equals(fieldName)) { value = data[index][2]; - } - else if ("Street".equals(fieldName)) - { + } else if ("Street".equals(fieldName)) { value = data[index][3]; } return value; } - - } diff --git a/jasperreports-parent/jasperreports-examples/src/main/resources/jasperreports/WebappReport.jasper b/jasperreports-parent/jasperreports-examples/src/main/resources/jasperreports/WebappReport.jasper new file mode 100644 index 0000000000..1768ab2b7b Binary files /dev/null and b/jasperreports-parent/jasperreports-examples/src/main/resources/jasperreports/WebappReport.jasper differ diff --git a/jasperreports-parent/jasperreports-examples/src/main/resources/jasperreports/WebappReport.jrxml b/jasperreports-parent/jasperreports-examples/src/main/resources/jasperreports/WebappReport.jrxml new file mode 100644 index 0000000000..28a3dc8a09 --- /dev/null +++ b/jasperreports-parent/jasperreports-examples/src/main/resources/jasperreports/WebappReport.jrxml @@ -0,0 +1,88 @@ + + +