Started csv export

master
Markus Kreth 7 years ago
parent d58aed3e23
commit 5a07f6782f
  1. 5
      pom.xml
  2. 17
      src/main/java/de/kreth/vaadin/clubhelper/vaadinclubhelper/business/CsvExporter.java
  3. 48
      src/main/java/de/kreth/vaadin/clubhelper/vaadinclubhelper/ui/components/EventGrid.java
  4. 34
      src/main/java/de/kreth/vaadin/clubhelper/vaadinclubhelper/ui/navigation/HeadView.java

@ -261,6 +261,11 @@
<groupId>org.junit.platform</groupId> <groupId>org.junit.platform</groupId>
<artifactId>junit-platform-launcher</artifactId> <artifactId>junit-platform-launcher</artifactId>
</dependency> </dependency>
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-csv</artifactId>
<version>1.7</version>
</dependency>
</dependencies> </dependencies>
<dependencyManagement> <dependencyManagement>

@ -0,0 +1,17 @@
package de.kreth.vaadin.clubhelper.vaadinclubhelper.business;
import org.apache.commons.csv.CSVFormat;
public class CsvExporter {
private static final String HEAD_DATUM = "Datum";
private static final String HEAD_CAPTION = "Datum";
private static final String HEAD_ORT = "Ort";
private static final String[] HEAD = { HEAD_DATUM, HEAD_CAPTION, HEAD_ORT };
private final CSVFormat format = CSVFormat.RFC4180.withDelimiter(',')
.withHeader(HEAD);
}

@ -1,24 +1,68 @@
package de.kreth.vaadin.clubhelper.vaadinclubhelper.ui.components; package de.kreth.vaadin.clubhelper.vaadinclubhelper.ui.components;
import java.time.ZonedDateTime;
import java.time.format.DateTimeFormatter; import java.time.format.DateTimeFormatter;
import java.time.format.FormatStyle; import java.time.format.FormatStyle;
import java.util.List;
import org.basilbourque.timecolumnrenderers.ZonedDateTimeRenderer;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import com.vaadin.data.provider.ConfigurableFilterDataProvider;
import com.vaadin.data.provider.DataProvider;
import com.vaadin.server.SerializablePredicate;
import com.vaadin.ui.Grid; import com.vaadin.ui.Grid;
import com.vaadin.ui.Label;
import de.kreth.vaadin.clubhelper.vaadinclubhelper.business.EventBusiness;
import de.kreth.vaadin.clubhelper.vaadinclubhelper.data.ClubEvent; import de.kreth.vaadin.clubhelper.vaadinclubhelper.data.ClubEvent;
@Component
public class EventGrid extends Grid<ClubEvent> { public class EventGrid extends Grid<ClubEvent> {
private static final long serialVersionUID = -5435770187868470290L; private static final long serialVersionUID = -5435770187868470290L;
private transient final DateTimeFormatter df = DateTimeFormatter.ofLocalizedDate(FormatStyle.MEDIUM);
public EventGrid() { private final transient DateTimeFormatter df = DateTimeFormatter.ofLocalizedDate(FormatStyle.MEDIUM);
private ConfigurableFilterDataProvider<ClubEvent, Void, SerializablePredicate<ClubEvent>> eventDataProvider;
private transient EventBusiness business;
public EventGrid(@Autowired EventBusiness eventBusiness) {
this.business = eventBusiness;
setCaption("Veranstaltungen");
setSizeFull();
setSelectionMode(SelectionMode.NONE);
addColumn(ClubEvent::getStart, dt -> { addColumn(ClubEvent::getStart, dt -> {
return dt != null ? df.format(dt) : ""; return dt != null ? df.format(dt) : "";
}).setCaption("Start"); }).setCaption("Start");
addComponentColumn(ev -> {
Label l = new Label();
l.setHeight("15px");
l.setWidth("15px");
l.addStyleName(ev.getOrganizerDisplayName());
return l;
}).setSortable(true).setHidable(false);
addColumn(ClubEvent::getStart).setCaption("Start")
.setRenderer(new ZonedDateTimeRenderer(DateTimeFormatter.ofLocalizedDate(FormatStyle.MEDIUM)))
.setSortable(true).setHidable(true);
addColumn(ClubEvent::getCaption).setCaption("Bezeichnung"); addColumn(ClubEvent::getCaption).setCaption("Bezeichnung");
addColumn(ClubEvent::getLocation).setCaption("Ort"); addColumn(ClubEvent::getLocation).setCaption("Ort");
List<ClubEvent> loadEvents = business.loadEvents();
eventDataProvider = DataProvider
.ofCollection(loadEvents).withConfigurableFilter();
eventDataProvider.setFilter(this::filter);
setDataProvider(eventDataProvider);
}
private boolean filter(ClubEvent ev) {
return ev.getStart().isAfter(ZonedDateTime.now().minusMonths(1).withDayOfMonth(1));
} }
} }

@ -16,6 +16,9 @@ import java.util.function.Function;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
import org.springframework.beans.BeansException;
import org.springframework.context.ApplicationContext;
import org.springframework.context.ApplicationContextAware;
import com.vaadin.contextmenu.ContextMenu; import com.vaadin.contextmenu.ContextMenu;
import com.vaadin.icons.VaadinIcons; import com.vaadin.icons.VaadinIcons;
@ -30,23 +33,28 @@ import com.vaadin.ui.HorizontalLayout;
import com.vaadin.ui.Label; import com.vaadin.ui.Label;
import com.vaadin.ui.MenuBar.MenuItem; import com.vaadin.ui.MenuBar.MenuItem;
import com.vaadin.ui.Notification; import com.vaadin.ui.Notification;
import com.vaadin.ui.VerticalLayout;
import com.vaadin.ui.Window; import com.vaadin.ui.Window;
import de.kreth.vaadin.clubhelper.vaadinclubhelper.business.EventBusiness;
import de.kreth.vaadin.clubhelper.vaadinclubhelper.data.ClubEvent; import de.kreth.vaadin.clubhelper.vaadinclubhelper.data.ClubEvent;
import de.kreth.vaadin.clubhelper.vaadinclubhelper.data.Person; import de.kreth.vaadin.clubhelper.vaadinclubhelper.data.Person;
import de.kreth.vaadin.clubhelper.vaadinclubhelper.jasper.CalendarCreator; import de.kreth.vaadin.clubhelper.vaadinclubhelper.jasper.CalendarCreator;
import de.kreth.vaadin.clubhelper.vaadinclubhelper.security.SecurityGroups; import de.kreth.vaadin.clubhelper.vaadinclubhelper.security.SecurityGroups;
import de.kreth.vaadin.clubhelper.vaadinclubhelper.security.SecurityVerifier; import de.kreth.vaadin.clubhelper.vaadinclubhelper.security.SecurityVerifier;
import de.kreth.vaadin.clubhelper.vaadinclubhelper.ui.components.CalendarComponent.ClubEventProvider; import de.kreth.vaadin.clubhelper.vaadinclubhelper.ui.components.CalendarComponent.ClubEventProvider;
import de.kreth.vaadin.clubhelper.vaadinclubhelper.ui.components.EventGrid;
import de.kreth.vaadin.clubhelper.vaadinclubhelper.ui.navigation.ClubhelperNavigation.ClubNavigator; import de.kreth.vaadin.clubhelper.vaadinclubhelper.ui.navigation.ClubhelperNavigation.ClubNavigator;
import net.sf.jasperreports.engine.JRException; import net.sf.jasperreports.engine.JRException;
import net.sf.jasperreports.engine.JasperExportManager; import net.sf.jasperreports.engine.JasperExportManager;
import net.sf.jasperreports.engine.JasperPrint; import net.sf.jasperreports.engine.JasperPrint;
public class HeadView extends HorizontalLayout { public class HeadView extends HorizontalLayout implements ApplicationContextAware {
private static final long serialVersionUID = -7915475211371903028L; private static final long serialVersionUID = -7915475211371903028L;
private static ApplicationContext context;
protected transient final Logger log = LoggerFactory.getLogger(getClass()); protected transient final Logger log = LoggerFactory.getLogger(getClass());
protected transient DateTimeFormatter dfMonth = DateTimeFormatter.ofPattern("MMMM uuuu"); protected transient DateTimeFormatter dfMonth = DateTimeFormatter.ofPattern("MMMM uuuu");
@ -123,6 +131,7 @@ public class HeadView extends HorizontalLayout {
MenuItem menuItem = contextMenu.addItem("Export Monat", ev1 -> calendarExport(button, ev1)); MenuItem menuItem = contextMenu.addItem("Export Monat", ev1 -> calendarExport(button, ev1));
monthItemId = menuItem.getId(); monthItemId = menuItem.getId();
contextMenu.addItem("Export Jahr", ev1 -> calendarExport(button, ev1)); contextMenu.addItem("Export Jahr", ev1 -> calendarExport(button, ev1));
contextMenu.addItem("Export Termintaabelle", ev1 -> calendarCsv(button, ev1));
if (securityVerifier.isLoggedin() if (securityVerifier.isLoggedin()
&& securityVerifier.isPermitted(SecurityGroups.ADMIN, SecurityGroups.UEBUNGSLEITER)) { && securityVerifier.isPermitted(SecurityGroups.ADMIN, SecurityGroups.UEBUNGSLEITER)) {
contextMenu.addItem("Personen verwalten", contextMenu.addItem("Personen verwalten",
@ -151,6 +160,24 @@ public class HeadView extends HorizontalLayout {
} }
private void calendarCsv(Button button, MenuItem ev1) {
EventBusiness eventBusiness = context.getBean(EventBusiness.class);
EventGrid grid = new EventGrid(eventBusiness);
VerticalLayout layout = new VerticalLayout();
layout.addComponents(grid);
Window window = new Window();
window.setCaption("Veranstaltungen");
window.setContent(layout);
window.setModal(true);
window.setWidth("50%");
window.setHeight("90%");
button.getUI().addWindow(window);
}
private void calendarExport(Button source, MenuItem ev1) { private void calendarExport(Button source, MenuItem ev1) {
boolean monthOnly = ev1.getId() == monthItemId; boolean monthOnly = ev1.getId() == monthItemId;
@ -269,4 +296,9 @@ public class HeadView extends HorizontalLayout {
return c; return c;
} }
@Override
public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {
this.context = applicationContext;
}
} }

Loading…
Cancel
Save