diff --git a/.settings/org.eclipse.core.resources.prefs b/.settings/org.eclipse.core.resources.prefs index 19a8b35..29abf99 100644 --- a/.settings/org.eclipse.core.resources.prefs +++ b/.settings/org.eclipse.core.resources.prefs @@ -3,5 +3,4 @@ encoding//src/main/java=UTF-8 encoding//src/main/resources=UTF-8 encoding//src/test/java=UTF-8 encoding//src/test/resources=UTF-8 -encoding//target/generated-resources/gwt=UTF-8 encoding/=UTF-8 diff --git a/src/main/java/de/kreth/vaadin/clubhelper/vaadinclubhelper/ui/components/CalendarComponent.java b/src/main/java/de/kreth/vaadin/clubhelper/vaadinclubhelper/ui/components/CalendarComponent.java index 4ca0428..2cc2862 100644 --- a/src/main/java/de/kreth/vaadin/clubhelper/vaadinclubhelper/ui/components/CalendarComponent.java +++ b/src/main/java/de/kreth/vaadin/clubhelper/vaadinclubhelper/ui/components/CalendarComponent.java @@ -9,6 +9,9 @@ import java.time.ZonedDateTime; import java.time.format.DateTimeFormatter; import java.util.Collection; import java.util.Date; +import java.util.HashMap; +import java.util.List; +import java.util.Map; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; @@ -84,8 +87,30 @@ public class CalendarComponent extends CustomComponent { private void calendarExport(MenuItem ev1) { + ZonedDateTime start = calendar.getStartDate(); + ZonedDateTime end = calendar.getEndDate(); + List items = dataProvider.getItems(start, end); + Map values = new HashMap<>(); + + for (ClubEvent ev : items) { + StringBuilder content; + int dayOfMonth = ev.getStart().getDayOfMonth(); + int endDayOfMonth = ev.getEnd().getDayOfMonth(); + for (;dayOfMonth<=endDayOfMonth; dayOfMonth++) { + + if (values.containsKey(dayOfMonth)) { + content = values.get(dayOfMonth); + content.append("\n"); + } else { + content = new StringBuilder(); + values.put(dayOfMonth, content); + } + content.append(ev.getCaption()); + } + } + try { - JasperPrint print = CalendarCreator.createCalendar(new Date()); + JasperPrint print = CalendarCreator.createCalendar(new Date(start.toInstant().toEpochMilli()), values); Window window = new Window(); window.setCaption("View PDF"); AbstractComponent e = createEmbedded(print); 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 b07b3de..6fab551 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 @@ -6,6 +6,7 @@ import java.time.YearMonth; import java.time.ZoneId; import java.util.ArrayList; import java.util.Calendar; +import java.util.Collections; import java.util.Date; import java.util.GregorianCalendar; import java.util.HashMap; @@ -24,16 +25,17 @@ import net.sf.jasperreports.view.JasperViewer; public class CalendarCreator { -// private final Date date; private final YearMonth yearMonthObject; public static JasperPrint createCalendar(Date date) throws JRException { - return new CalendarCreator(date).createCalendar(); + return new CalendarCreator(date).createCalendar(Collections.emptyMap()); + } + + public static JasperPrint createCalendar(Date date, Map values) throws JRException { + return new CalendarCreator(date).createCalendar(values); } CalendarCreator(Date date) { -// this.date = date; - yearMonthObject = YearMonth .from(date.toInstant() .atZone(ZoneId.systemDefault()) @@ -42,7 +44,7 @@ public class CalendarCreator { } - JasperPrint createCalendar() throws JRException { + JasperPrint createCalendar(Map values) throws JRException { Map parameters = new HashMap<>(); Timestamp timestamp = new Timestamp(yearMonthObject.atDay(1).atStartOfDay().atZone(ZoneId.systemDefault()).toInstant().toEpochMilli()); @@ -52,29 +54,21 @@ public class CalendarCreator { 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, values )); + 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 static class CalendarSource implements JRDataSource { private final List days; - private final Map dayContent; + private final Map dayContent; private int index = -1; private int prefix; - public CalendarSource(YearMonth yearMonthObject, Map dayContent) { + public CalendarSource(YearMonth yearMonthObject, Map dayContent) { days = new ArrayList<>(); this.dayContent = dayContent; @@ -101,7 +95,12 @@ public class CalendarCreator { if (jrField.getName().equals("id")) { return days.get(index); } else if (jrField.getName().equals("Field_Value") && days.get(index)>0) { - return dayContent.get(index - prefix); + T content = dayContent.get(index - prefix); + if (content != null) { + return content.toString(); + } else { + return ""; + } } else { return ""; } diff --git a/src/main/resources/jasper/calendar_month.jrxml b/src/main/resources/jasper/calendar_month.jrxml index 10c174c..4187981 100644 --- a/src/main/resources/jasper/calendar_month.jrxml +++ b/src/main/resources/jasper/calendar_month.jrxml @@ -175,9 +175,9 @@ - + - +