From 2b8fe7d44c013ee6f86b9e2ec9ab188f331d0846 Mon Sep 17 00:00:00 2001 From: Markus Kreth Date: Fri, 2 Nov 2018 19:24:13 +0100 Subject: [PATCH] Calendar with Content. --- .../ui/components/CalendarCreator.java | 63 ++++++++++++------- .../resources/jasper/calendar_month.jrxml | 13 +++- 2 files changed, 51 insertions(+), 25 deletions(-) diff --git a/src/main/java/de/kreth/vaadin/clubhelper/vaadinclubhelper/ui/components/CalendarCreator.java b/src/main/java/de/kreth/vaadin/clubhelper/vaadinclubhelper/ui/components/CalendarCreator.java index 90b0f46..b07b3de 100644 --- a/src/main/java/de/kreth/vaadin/clubhelper/vaadinclubhelper/ui/components/CalendarCreator.java +++ b/src/main/java/de/kreth/vaadin/clubhelper/vaadinclubhelper/ui/components/CalendarCreator.java @@ -24,51 +24,68 @@ import net.sf.jasperreports.view.JasperViewer; public class CalendarCreator { - private Date date; - private YearMonth yearMonthObject; - private int daysInMonth; +// private final Date date; + private final YearMonth yearMonthObject; public static JasperPrint createCalendar(Date date) throws JRException { return new CalendarCreator(date).createCalendar(); } CalendarCreator(Date date) { - this.date = date; +// this.date = date; - yearMonthObject = YearMonth.from(date.toInstant() - .atZone(ZoneId.systemDefault()) - .toLocalDate()); + yearMonthObject = YearMonth + .from(date.toInstant() + .atZone(ZoneId.systemDefault()) + .toLocalDate() + ); - daysInMonth = yearMonthObject.lengthOfMonth(); } JasperPrint createCalendar() throws JRException { Map parameters = new HashMap<>(); - Timestamp timestamp = new Timestamp(date.getTime()); + Timestamp timestamp = new Timestamp(yearMonthObject.atDay(1).atStartOfDay().atZone(ZoneId.systemDefault()).toInstant().toEpochMilli()); + parameters.put("Date", timestamp); InputStream jrxmlResource = CalendarCreator.class.getResourceAsStream("/jasper/calendar_month.jrxml"); JasperReport report = JasperCompileManager .compileReport(jrxmlResource); + Map values = createValues(); JasperPrint print = JasperFillManager.fillReport(report, - parameters, new CalendarSource(yearMonthObject.atDay(1).getDayOfWeek().getValue() -1, daysInMonth)); + parameters, new CalendarSource(yearMonthObject, values )); return print; } + private Map createValues() { + Map values = new HashMap<>(); + for (int i=1; i<33; i++) { + values.put(i -1, "Termine Tag " + i); + } + return values; + } + private static class CalendarSource implements JRDataSource { - + private final List days; + private final Map dayContent; private int index = -1; + private int prefix; - public CalendarSource(int prefix, int daysInMonth) { + public CalendarSource(YearMonth yearMonthObject, Map dayContent) { + days = new ArrayList<>(); + this.dayContent = dayContent; + prefix = yearMonthObject.atDay(1).getDayOfWeek().getValue() -1; + int daysInMonth = yearMonthObject.lengthOfMonth(); + for (int i=0, limit = daysInMonth + prefix; i0) { + return dayContent.get(index - prefix); + } else { + return ""; + } } } @@ -91,13 +113,9 @@ public class CalendarCreator { Locale.setDefault(Locale.GERMANY); - Calendar cal = new GregorianCalendar(2018, Calendar.AUGUST, 1); + Calendar cal = new GregorianCalendar(2018, Calendar.OCTOBER, 1); JasperViewer v1 = new JasperViewer(createCalendar(cal.getTime())); v1.setVisible(true); - - cal = new GregorianCalendar(2018, Calendar.SEPTEMBER, 1); - JasperViewer v2 = new JasperViewer(createCalendar(cal.getTime())); - v2.setVisible(true); cal = new GregorianCalendar(2018, Calendar.FEBRUARY, 1); JasperViewer v3 = new JasperViewer(createCalendar(cal.getTime())); @@ -132,12 +150,11 @@ public class CalendarCreator { date.set(Calendar.DAY_OF_MONTH, 1); dow = date.get(Calendar.DAY_OF_WEEK); -// dow =new Date(date.getYear(), date.getMonth(), 1).getDay(); dom = date.get(Calendar.MONTH) + 1; doy = date.get(Calendar.YEAR); days = YearMonth.of(doy, dom).lengthOfMonth(); - cells = dow-1+days; - limit = cells>28?(cells>35?42:35):28; + cells = dow - 1 + days; + limit = cells > 28 ? (cells>35?42:35) : 28; } /** diff --git a/src/main/resources/jasper/calendar_month.jrxml b/src/main/resources/jasper/calendar_month.jrxml index 56c73be..10c174c 100644 --- a/src/main/resources/jasper/calendar_month.jrxml +++ b/src/main/resources/jasper/calendar_month.jrxml @@ -170,16 +170,25 @@ - + 0&&$V{Date}.intValue()<=$P{Days}.intValue()]]> + + + + + + + - + + 0&&$V{Date}.intValue()<=$P{Days}.intValue()]]> +