Month events presented.

master
Markus Kreth 7 years ago
parent 2b8fe7d44c
commit d7d1c4b2e4
  1. 1
      .settings/org.eclipse.core.resources.prefs
  2. 27
      src/main/java/de/kreth/vaadin/clubhelper/vaadinclubhelper/ui/components/CalendarComponent.java
  3. 37
      src/main/java/de/kreth/vaadin/clubhelper/vaadinclubhelper/ui/components/CalendarCreator.java
  4. 4
      src/main/resources/jasper/calendar_month.jrxml

@ -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/<project>=UTF-8

@ -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<ClubEvent> items = dataProvider.getItems(start, end);
Map<Integer, StringBuilder> 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);

@ -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());
}
CalendarCreator(Date date) {
// this.date = date;
public static <T extends CharSequence> JasperPrint createCalendar(Date date, Map<Integer, T> values) throws JRException {
return new CalendarCreator(date).createCalendar(values);
}
CalendarCreator(Date date) {
yearMonthObject = YearMonth
.from(date.toInstant()
.atZone(ZoneId.systemDefault())
@ -42,7 +44,7 @@ public class CalendarCreator {
}
JasperPrint createCalendar() throws JRException {
<T extends CharSequence> JasperPrint createCalendar(Map<Integer, T> values) throws JRException {
Map<String, Object> 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<Integer, String> values = createValues();
JasperPrint print = JasperFillManager.fillReport(report,
parameters, new CalendarSource(yearMonthObject, values ));
parameters, new CalendarSource<>(yearMonthObject, values));
return print;
}
private Map<Integer, String> createValues() {
Map<Integer, String> 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<T extends CharSequence> implements JRDataSource {
private final List<Integer> days;
private final Map<Integer, String> dayContent;
private final Map<Integer, T> dayContent;
private int index = -1;
private int prefix;
public CalendarSource(YearMonth yearMonthObject, Map<Integer, String> dayContent) {
public CalendarSource(YearMonth yearMonthObject, Map<Integer, T> 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 "";
}

@ -175,9 +175,9 @@
</reportElement>
<box>
<topPen lineWidth="0.0" lineStyle="Solid" lineColor="#000000"/>
<leftPen lineWidth="1.0" lineStyle="Solid" lineColor="#050505"/>
<leftPen lineWidth="0.0" lineStyle="Solid" lineColor="#000000"/>
<bottomPen lineWidth="0.0" lineStyle="Solid" lineColor="#000000"/>
<rightPen lineWidth="1.0" lineStyle="Solid" lineColor="#050505"/>
<rightPen lineWidth="0.0" lineStyle="Solid" lineColor="#000000"/>
</box>
<textElement textAlignment="Right">
<font size="16" isBold="true"/>

Loading…
Cancel
Save