From 82902993cc1bc55e456cb1c502ff01318771f7d3 Mon Sep 17 00:00:00 2001 From: Markus Kreth Date: Mon, 14 Jan 2019 02:10:48 +0100 Subject: [PATCH] Startpass in person table optional edit button. --- .settings/org.eclipse.core.resources.prefs | 1 - .../vaadinclubhelper/data/Person.java | 2 +- .../vaadinclubhelper/data/Startpass.java | 27 +++++++++------ .../vaadinclubhelper/ui/HeadView.java | 11 +++++- .../vaadinclubhelper/ui/MainUi.java | 1 + .../vaadinclubhelper/ui/MainView.java | 8 ----- .../vaadinclubhelper/ui/PersonEditView.java | 34 +++++++++++++++++++ .../ui/components/PersonGrid.java | 13 ++++++- .../ui/components/SingleEventView.java | 2 +- 9 files changed, 75 insertions(+), 24 deletions(-) create mode 100644 src/main/java/de/kreth/vaadin/clubhelper/vaadinclubhelper/ui/PersonEditView.java diff --git a/.settings/org.eclipse.core.resources.prefs b/.settings/org.eclipse.core.resources.prefs index 6d88dab..f004f42 100644 --- a/.settings/org.eclipse.core.resources.prefs +++ b/.settings/org.eclipse.core.resources.prefs @@ -5,5 +5,4 @@ encoding//src/main/resources/jasper/calendar_month.jrxml=UTF-8 encoding//src/main/resources/jasper/calendar_year.jrxml=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/data/Person.java b/src/main/java/de/kreth/vaadin/clubhelper/vaadinclubhelper/data/Person.java index f899c08..8143443 100644 --- a/src/main/java/de/kreth/vaadin/clubhelper/vaadinclubhelper/data/Person.java +++ b/src/main/java/de/kreth/vaadin/clubhelper/vaadinclubhelper/data/Person.java @@ -47,7 +47,7 @@ public class Person extends BaseEntity implements Serializable { private String username; - @OneToOne + @OneToOne(mappedBy = "person") private Startpass startpass; // bi-directional many-to-one association to Adress diff --git a/src/main/java/de/kreth/vaadin/clubhelper/vaadinclubhelper/data/Startpass.java b/src/main/java/de/kreth/vaadin/clubhelper/vaadinclubhelper/data/Startpass.java index 96d1da8..018bb45 100644 --- a/src/main/java/de/kreth/vaadin/clubhelper/vaadinclubhelper/data/Startpass.java +++ b/src/main/java/de/kreth/vaadin/clubhelper/vaadinclubhelper/data/Startpass.java @@ -7,36 +7,36 @@ import javax.persistence.Column; import javax.persistence.Entity; import javax.persistence.Inheritance; import javax.persistence.InheritanceType; -import javax.persistence.ManyToOne; +import javax.persistence.JoinColumn; import javax.persistence.NamedQuery; import javax.persistence.OneToMany; +import javax.persistence.OneToOne; import javax.persistence.Table; - /** * The persistent class for the startpaesse database table. * */ @Entity -@Table(name="startpaesse") +@Table(name = "startpaesse") @Inheritance(strategy = InheritanceType.SINGLE_TABLE) -@NamedQuery(name="Startpaesse.findAll", query="SELECT s FROM Startpaesse s") -public class Startpaesse extends BaseEntity implements Serializable { +@NamedQuery(name = "Startpass.findAll", query = "SELECT s FROM Startpass s") +public class Startpass extends BaseEntity implements Serializable { private static final long serialVersionUID = 1464510869007022357L; - @Column(name="startpass_nr") + @Column(name = "startpass_nr") private String startpassNr; - //bi-directional many-to-one association to Person - @ManyToOne + @OneToOne + @JoinColumn(name = "person_id") private Person person; - //bi-directional many-to-one association to StartpassStartrechte - @OneToMany(mappedBy="startpaesse") + // bi-directional many-to-one association to StartpassStartrechte + @OneToMany(mappedBy = "startpaesse") private List startpassStartrechtes; - public Startpaesse() { + public Startpass() { } public String getStartpassNr() { @@ -77,4 +77,9 @@ public class Startpaesse extends BaseEntity implements Serializable { return startpassStartrechte; } + @Override + public String toString() { + return "Startpass [startpassNr=" + startpassNr + "]"; + } + } \ No newline at end of file diff --git a/src/main/java/de/kreth/vaadin/clubhelper/vaadinclubhelper/ui/HeadView.java b/src/main/java/de/kreth/vaadin/clubhelper/vaadinclubhelper/ui/HeadView.java index da0e3e6..25fd999 100644 --- a/src/main/java/de/kreth/vaadin/clubhelper/vaadinclubhelper/ui/HeadView.java +++ b/src/main/java/de/kreth/vaadin/clubhelper/vaadinclubhelper/ui/HeadView.java @@ -32,6 +32,7 @@ import com.vaadin.ui.Notification; import com.vaadin.ui.Window; import de.kreth.vaadin.clubhelper.vaadinclubhelper.data.ClubEvent; +import de.kreth.vaadin.clubhelper.vaadinclubhelper.data.Person; import de.kreth.vaadin.clubhelper.vaadinclubhelper.jasper.CalendarCreator; import de.kreth.vaadin.clubhelper.vaadinclubhelper.ui.components.CalendarComponent.ClubEventProvider; import net.sf.jasperreports.engine.JRException; @@ -90,12 +91,20 @@ public class HeadView extends HorizontalLayout { private void openPopupMenu(ClickEvent ev) { Button button = ev.getButton(); + Person loggedinPerson = (Person) getSession().getAttribute(Person.SESSION_LOGIN); ContextMenu contextMenu = new ContextMenu(button, true); monthItemId = contextMenu.addItem("Export Monat", ev1 -> calendarExport(ev1)).getId(); - contextMenu.addItem("Export Jahr", ev1 -> calendarExport(ev1)).getId(); + contextMenu.addItem("Export Jahr", ev1 -> calendarExport(ev1)); + if (loggedinPerson != null) { + contextMenu.addItem("Personen verwalten", ev1 -> switchToPersonEditUi()); + } contextMenu.open(50, 50); } + private void switchToPersonEditUi() { + + } + private void calendarExport(MenuItem ev1) { boolean monthOnly = ev1.getId() == monthItemId; diff --git a/src/main/java/de/kreth/vaadin/clubhelper/vaadinclubhelper/ui/MainUi.java b/src/main/java/de/kreth/vaadin/clubhelper/vaadinclubhelper/ui/MainUi.java index 9e12857..4fcc57e 100644 --- a/src/main/java/de/kreth/vaadin/clubhelper/vaadinclubhelper/ui/MainUi.java +++ b/src/main/java/de/kreth/vaadin/clubhelper/vaadinclubhelper/ui/MainUi.java @@ -48,6 +48,7 @@ public class MainUi extends UI { // Create and register the views navigator.addView(MainView.VIEW_NAME, new MainView(personDao, groupDao, eventBusiness)); navigator.addView(LoginUI.VIEW_NAME, new LoginUI(personDao)); + navigator.addView(PersonEditView.VIEW_NAME, new PersonEditView(groupDao, personDao)); navigator.navigateTo(MainView.VIEW_NAME); } diff --git a/src/main/java/de/kreth/vaadin/clubhelper/vaadinclubhelper/ui/MainView.java b/src/main/java/de/kreth/vaadin/clubhelper/vaadinclubhelper/ui/MainView.java index 552d456..50a1993 100644 --- a/src/main/java/de/kreth/vaadin/clubhelper/vaadinclubhelper/ui/MainView.java +++ b/src/main/java/de/kreth/vaadin/clubhelper/vaadinclubhelper/ui/MainView.java @@ -24,7 +24,6 @@ import de.kreth.vaadin.clubhelper.vaadinclubhelper.data.ClubEvent; import de.kreth.vaadin.clubhelper.vaadinclubhelper.data.Person; import de.kreth.vaadin.clubhelper.vaadinclubhelper.ui.components.CalendarComponent; import de.kreth.vaadin.clubhelper.vaadinclubhelper.ui.components.CalendarComponent.ClubEventProvider; -import de.kreth.vaadin.clubhelper.vaadinclubhelper.ui.components.PersonEditDialog; import de.kreth.vaadin.clubhelper.vaadinclubhelper.ui.components.PersonGrid; import de.kreth.vaadin.clubhelper.vaadinclubhelper.ui.components.SingleEventView; @@ -82,11 +81,9 @@ public class MainView extends BorderLayout implements View { eventView.setVisible(false); personGrid = new PersonGrid(groupDao, personDao); - personGrid.setId("main.person"); personGrid.setCaption("Personen"); personGrid.onClosedFunction(() -> detailClosed()); personGrid.onPersonSelect(ev -> personSelectionChange(ev)); - personGrid.onPersonEdit(p -> onPersonEdit(p)); personGrid.setVisible(false); VerticalLayout eastLayout = new VerticalLayout(); @@ -121,11 +118,6 @@ public class MainView extends BorderLayout implements View { exec.shutdown(); } - private void onPersonEdit(Person p) { - PersonEditDialog dlg = new PersonEditDialog(groupDao.listAll(), p, personDao); - getUI().addWindow(dlg); - } - private void personSelectionChange(SelectionEvent ev) { Set selected = ev.getAllSelectedItems(); LOGGER.debug("Selection changed to: {}", selected); diff --git a/src/main/java/de/kreth/vaadin/clubhelper/vaadinclubhelper/ui/PersonEditView.java b/src/main/java/de/kreth/vaadin/clubhelper/vaadinclubhelper/ui/PersonEditView.java new file mode 100644 index 0000000..961cb16 --- /dev/null +++ b/src/main/java/de/kreth/vaadin/clubhelper/vaadinclubhelper/ui/PersonEditView.java @@ -0,0 +1,34 @@ +package de.kreth.vaadin.clubhelper.vaadinclubhelper.ui; + +import com.vaadin.navigator.View; +import com.vaadin.ui.HorizontalLayout; + +import de.kreth.vaadin.clubhelper.vaadinclubhelper.dao.GroupDao; +import de.kreth.vaadin.clubhelper.vaadinclubhelper.dao.PersonDao; +import de.kreth.vaadin.clubhelper.vaadinclubhelper.data.Person; +import de.kreth.vaadin.clubhelper.vaadinclubhelper.ui.components.PersonEditDialog; +import de.kreth.vaadin.clubhelper.vaadinclubhelper.ui.components.PersonGrid; + +public class PersonEditView extends HorizontalLayout implements View { + + public static final String VIEW_NAME = "PersonEditView"; + private static final long serialVersionUID = 1770993670570422036L; + + private PersonGrid personGrid; + private PersonDao personDao; + private GroupDao groupDao; + + public PersonEditView(GroupDao groupDao, PersonDao personDao) { + this.groupDao = groupDao; + this.personDao = personDao; + personGrid = new PersonGrid(groupDao, personDao); + personGrid.onPersonEdit(p -> onPersonEdit(p)); + addComponent(personGrid); + } + + private void onPersonEdit(Person p) { + PersonEditDialog dlg = new PersonEditDialog(groupDao.listAll(), p, personDao); + getUI().addWindow(dlg); + } + +} diff --git a/src/main/java/de/kreth/vaadin/clubhelper/vaadinclubhelper/ui/components/PersonGrid.java b/src/main/java/de/kreth/vaadin/clubhelper/vaadinclubhelper/ui/components/PersonGrid.java index 96975b1..5291a57 100644 --- a/src/main/java/de/kreth/vaadin/clubhelper/vaadinclubhelper/ui/components/PersonGrid.java +++ b/src/main/java/de/kreth/vaadin/clubhelper/vaadinclubhelper/ui/components/PersonGrid.java @@ -20,6 +20,7 @@ import com.vaadin.ui.Button; import com.vaadin.ui.CheckBox; import com.vaadin.ui.ComboBox; import com.vaadin.ui.Grid; +import com.vaadin.ui.Grid.Column; import com.vaadin.ui.Grid.SelectionMode; import com.vaadin.ui.HorizontalLayout; import com.vaadin.ui.Layout; @@ -32,6 +33,7 @@ import de.kreth.vaadin.clubhelper.vaadinclubhelper.dao.PersonDao; import de.kreth.vaadin.clubhelper.vaadinclubhelper.data.ClubEvent; import de.kreth.vaadin.clubhelper.vaadinclubhelper.data.GroupDef; import de.kreth.vaadin.clubhelper.vaadinclubhelper.data.Person; +import de.kreth.vaadin.clubhelper.vaadinclubhelper.data.Startpass; public class PersonGrid extends VerticalLayout { @@ -53,9 +55,12 @@ public class PersonGrid extends VerticalLayout { private List allGroups; private PersonFilter filter; private ClubEvent currentEvent; + private Column startpassColumn; + private Column editButtonColumn; public PersonGrid(GroupDao groupDao, PersonDao personDao) { + setId("main.person"); setCaption("Teilnehmer"); addStyleName("bold-caption"); @@ -96,8 +101,12 @@ public class PersonGrid extends VerticalLayout { grid.addColumn(Person::getPrename).setCaption("Vorname"); grid.addColumn(Person::getSurname).setCaption("Nachname"); grid.addColumn(Person::getBirth, b -> b != null ? birthFormat.format(b) : "").setCaption("Geburtstag"); - grid.addComponentColumn(this::buildPersonEditButton); + startpassColumn = grid.addColumn(Person::getStartpass).setCaption("Startpass Nr."); + editButtonColumn = grid.addComponentColumn(this::buildPersonEditButton); grid.setSelectionMode(SelectionMode.MULTI); + + startpassColumn.setHidden(false); + editButtonColumn.setHidden(true); } private Layout setupFilterComponents() { @@ -195,6 +204,8 @@ public class PersonGrid extends VerticalLayout { public void onPersonEdit(Consumer function) { this.onPersonEdit = function; + startpassColumn.setHidden(true); + editButtonColumn.setHidden(false); } public void setEvent(ClubEvent ev) { diff --git a/src/main/java/de/kreth/vaadin/clubhelper/vaadinclubhelper/ui/components/SingleEventView.java b/src/main/java/de/kreth/vaadin/clubhelper/vaadinclubhelper/ui/components/SingleEventView.java index d2af003..237a2cd 100644 --- a/src/main/java/de/kreth/vaadin/clubhelper/vaadinclubhelper/ui/components/SingleEventView.java +++ b/src/main/java/de/kreth/vaadin/clubhelper/vaadinclubhelper/ui/components/SingleEventView.java @@ -24,7 +24,7 @@ public class SingleEventView extends CustomComponent { public SingleEventView() { setCaption("Gewählte Veranstaltung"); addStyleName("bold-caption"); - setWidth(40.0f, Unit.PERCENTAGE); + setWidth(50.0f, Unit.PERCENTAGE); textTitle = new TextField(); textTitle.setId("event.title");