Altersgruppen and pflicht implemented for Events.

master
Markus Kreth 7 years ago
parent ba7daf5e82
commit 20e2afaf76
  1. 37
      src/main/java/de/kreth/vaadin/clubhelper/vaadinclubhelper/ausschreibung/Altersgruppen.java
  2. 7
      src/main/java/de/kreth/vaadin/clubhelper/vaadinclubhelper/dao/PflichtenDao.java
  3. 16
      src/main/java/de/kreth/vaadin/clubhelper/vaadinclubhelper/dao/PflichtenDaoImpl.java
  4. 120
      src/main/java/de/kreth/vaadin/clubhelper/vaadinclubhelper/data/Altersgruppe.java
  5. 17
      src/main/java/de/kreth/vaadin/clubhelper/vaadinclubhelper/data/ClubEvent.java
  6. 70
      src/main/java/de/kreth/vaadin/clubhelper/vaadinclubhelper/data/Pflicht.java
  7. 6
      src/main/java/de/kreth/vaadin/clubhelper/vaadinclubhelper/ui/MainUi.java
  8. 7
      src/main/resources/schema/ClubEvent.hbm.xml
  9. 53
      src/main/resources/schema/version1.sql
  10. 12
      src/main/resources/simplelogger.properties
  11. 20
      src/test/java/de/kreth/vaadin/clubhelper/HibernateHolder.java
  12. 107
      src/test/java/de/kreth/vaadin/clubhelper/vaadinclubhelper/ausschreibung/AltersgruppenParserTest.java
  13. 47
      src/test/java/de/kreth/vaadin/clubhelper/vaadinclubhelper/ui/tests/TestPflichten.java

@ -0,0 +1,37 @@
package de.kreth.vaadin.clubhelper.vaadinclubhelper.ausschreibung;
import java.util.ArrayList;
import java.util.List;
import java.util.stream.Collectors;
import de.kreth.vaadin.clubhelper.vaadinclubhelper.data.Altersgruppe;
public class Altersgruppen {
private List<Altersgruppe> values;
public Altersgruppen() {
this.values = new ArrayList<>();
}
public static Altersgruppen parse(boolean hasCaption, String inputText) {
Altersgruppen result = new Altersgruppen();
List<String> lines = inputText.lines().collect(Collectors.toList());
if (hasCaption) {
lines.remove(0);
}
for (String line : lines) {
Altersgruppe g = new Altersgruppe();
g.setBezeichnung(line);
result.getValues().add(g);
}
return result;
}
public List<Altersgruppe> getValues() {
return values;
}
}

@ -0,0 +1,7 @@
package de.kreth.vaadin.clubhelper.vaadinclubhelper.dao;
import de.kreth.vaadin.clubhelper.vaadinclubhelper.data.Pflicht;
public interface PflichtenDao extends IDao<Pflicht> {
}

@ -0,0 +1,16 @@
package de.kreth.vaadin.clubhelper.vaadinclubhelper.dao;
import org.springframework.stereotype.Repository;
import org.springframework.transaction.annotation.Transactional;
import de.kreth.vaadin.clubhelper.vaadinclubhelper.data.Pflicht;
@Repository
@Transactional
public class PflichtenDaoImpl extends AbstractDaoImpl<Pflicht> implements PflichtenDao {
public PflichtenDaoImpl() {
super(Pflicht.class);
}
}

@ -0,0 +1,120 @@
package de.kreth.vaadin.clubhelper.vaadinclubhelper.data;
import java.io.Serializable;
import javax.persistence.Entity;
import javax.persistence.Inheritance;
import javax.persistence.InheritanceType;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.NamedQuery;
import javax.persistence.Table;
@Entity
@Table(name = "altersgruppe")
@Inheritance(strategy = InheritanceType.SINGLE_TABLE)
@NamedQuery(name = "Altersgruppe.findAll", query = "SELECT a FROM Altersgruppe a")
public class Altersgruppe extends BaseEntity implements Serializable {
private static final long serialVersionUID = 126215772910869273L;
private String bezeichnung;
private int start;
private int end;
private Pflicht pflicht;
@ManyToOne
@JoinColumn(name = "event_id")
private ClubEvent clubEvent;
public String getBezeichnung() {
return bezeichnung;
}
public void setBezeichnung(String bezeichnung) {
this.bezeichnung = bezeichnung;
}
public int getStart() {
return start;
}
public void setStart(int start) {
this.start = start;
}
public int getEnd() {
return end;
}
public void setEnd(int end) {
this.end = end;
}
public Pflicht getPflicht() {
return pflicht;
}
public void setPflicht(Pflicht pflicht) {
this.pflicht = pflicht;
}
public ClubEvent getClubEvent() {
return clubEvent;
}
public void setClubEvent(ClubEvent clubEvent) {
this.clubEvent = clubEvent;
}
@Override
public int hashCode() {
final int prime = 31;
int result = super.hashCode();
result = prime * result + ((bezeichnung == null) ? 0 : bezeichnung.hashCode());
result = prime * result + end;
result = prime * result + ((pflicht == null) ? 0 : pflicht.hashCode());
result = prime * result + start;
return result;
}
@Override
public boolean equals(Object obj) {
if (this == obj) {
return true;
}
if (!super.equals(obj)) {
return false;
}
if (getClass() != obj.getClass()) {
return false;
}
Altersgruppe other = (Altersgruppe) obj;
if (bezeichnung == null) {
if (other.bezeichnung != null) {
return false;
}
} else if (!bezeichnung.equals(other.bezeichnung)) {
return false;
}
if (end != other.end) {
return false;
}
if (pflicht == null) {
if (other.pflicht != null) {
return false;
}
} else if (!pflicht.equals(other.pflicht)) {
return false;
}
if (start != other.start) {
return false;
}
return true;
}
@Override
public String toString() {
return "Altersgruppe [bezeichnung=" + bezeichnung + ", pflicht=" + pflicht + ", jahre=" + start + " - " + end
+ "]";
}
}

@ -7,19 +7,26 @@ import java.util.Date;
import java.util.HashSet;
import java.util.Set;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.Transient;
import org.vaadin.addon.calendar.item.BasicItem;
// Entity must not be used, this class is persisted by ClubEvent.hbm.xml
@Entity
public class ClubEvent extends BasicItem {
private static final long serialVersionUID = -3600971939167437577L;
@Id
private String id;
private String location;
private String iCalUID;
private String id;
private String organizerDisplayName;
private Set<Person> persons;
private Set<Altersgruppe> altersgruppen;
ClubEvent() {
}
@ -111,6 +118,14 @@ public class ClubEvent extends BasicItem {
person.remove(this);
}
public Set<Altersgruppe> getAltersgruppen() {
return altersgruppen;
}
public void setAltersgruppen(Set<Altersgruppe> altersgruppen) {
this.altersgruppen = altersgruppen;
}
@Transient
public String toDisplayString() {
return "ClubEvent [Caption=" + getCaption() + ", Start=" + getStart() + ", location=" + location + "]";

@ -0,0 +1,70 @@
package de.kreth.vaadin.clubhelper.vaadinclubhelper.data;
import java.io.Serializable;
import javax.persistence.Entity;
import javax.persistence.Inheritance;
import javax.persistence.InheritanceType;
import javax.persistence.NamedQuery;
import javax.persistence.Table;
@Entity
@Table(name = "pflichten")
@Inheritance(strategy = InheritanceType.SINGLE_TABLE)
@NamedQuery(name = "Pflicht.findAll", query = "SELECT p FROM Pflicht p")
public class Pflicht extends BaseEntity implements Serializable {
private static final long serialVersionUID = -1309514158086518524L;
private String name;
private boolean fixed;
private int ordered;
private String comment;
public Pflicht() {
}
public Pflicht(String name, boolean fixed, int ordered, String comment) {
this.name = name;
this.fixed = fixed;
this.ordered = ordered;
this.comment = comment;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public boolean isFixed() {
return fixed;
}
public void setFixed(boolean fixed) {
this.fixed = fixed;
}
public int getOrdered() {
return ordered;
}
public void setOrdered(int order) {
this.ordered = order;
}
public String getComment() {
return comment;
}
public void setComment(String comment) {
this.comment = comment;
}
@Override
public String toString() {
return name;
}
}

@ -16,6 +16,7 @@ import com.vaadin.ui.UI;
import de.kreth.vaadin.clubhelper.vaadinclubhelper.business.EventBusiness;
import de.kreth.vaadin.clubhelper.vaadinclubhelper.dao.GroupDao;
import de.kreth.vaadin.clubhelper.vaadinclubhelper.dao.PersonDao;
import de.kreth.vaadin.clubhelper.vaadinclubhelper.dao.PflichtenDao;
@Theme("vaadin-clubhelpertheme")
@SpringUI
@ -35,6 +36,9 @@ public class MainUi extends UI {
@Autowired
EventBusiness eventBusiness;
@Autowired
PflichtenDao pflichtenDao;
@Override
protected void init(VaadinRequest request) {
@ -48,7 +52,7 @@ public class MainUi extends UI {
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.addView(EventDetails.VIEW_NAME, new EventDetails(personDao, groupDao, eventBusiness));
navigator.addView(EventDetails.VIEW_NAME, new EventDetails(personDao, groupDao, eventBusiness, pflichtenDao));
navigator.navigateTo(MainView.VIEW_NAME);
}

@ -24,11 +24,16 @@
</property>
<property column="organizerDisplayName" generated="never"
lazy="false" name="organizerDisplayName" type="string" />
<set name="persons" table="clubevent_has_person" lazy="false">
<key column="clubevent_id"/>
<many-to-many column="person_id" class="de.kreth.vaadin.clubhelper.vaadinclubhelper.data.Person" />
</set>
<set name="altersgruppen" table="altersgruppe" lazy="false">
<key>
<column name="clubevent_id" not-null="true" />
</key>
<one-to-many class="de.kreth.vaadin.clubhelper.vaadinclubhelper.data.Altersgruppe" />
</set>
</class>
<query name="ClubEvent.findAll">
<![CDATA[from ClubEvent]]>

@ -0,0 +1,53 @@
CREATE TABLE `pflichten` (
`id` INT NOT NULL AUTO_INCREMENT,
`name` VARCHAR(45) NOT NULL,
`fixed` TINYINT NULL,
`ordered` INT NOT NULL,
`comment` VARCHAR(500) NULL,
`changed` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
`created` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
`deleted` DATETIME NULL DEFAULT NULL,
PRIMARY KEY (`id`),
UNIQUE INDEX `name_UNIQUE` (`name` ASC) VISIBLE);
CREATE TABLE `altersgruppe` (
`id` INT NOT NULL AUTO_INCREMENT,
`event_id` VARCHAR(250) NOT NULL,
`pflicht_id` INT NULL,
`bezeichnung` VARCHAR(100) NOT NULL,
`start` INT NULL,
`end` VARCHAR(45) NULL,
`changed` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
`created` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
`deleted` DATETIME NULL DEFAULT NULL,
PRIMARY KEY (`id`),
INDEX `fk_altersgruppe_pflicht_idx` (`pflicht_id` ASC) VISIBLE,
INDEX `fk_altersgruppe_event_idx` (`event_id` ASC) VISIBLE,
CONSTRAINT `fk_altersgruppe_pflicht`
FOREIGN KEY (`pflicht_id`)
REFERENCES `pflichten` (`id`)
ON DELETE NO ACTION
ON UPDATE NO ACTION),
CONSTRAINT `fk_altersgruppe_event`
FOREIGN KEY (`event_id`)
REFERENCES `clubhelper`.`clubevent` (`id`)
ON DELETE NO ACTION
ON UPDATE NO ACTION;
CREATE TABLE `event_has_altersgruppe` (
`id` INT NOT NULL AUTO_INCREMENT,
`event_id` VARCHAR(250) NOT NULL,
`altersgruppe_id` INT NOT NULL,
PRIMARY KEY (`id`),
INDEX `fk_event_has_altersgruppe_event_idx` (`event_id` ASC) VISIBLE,
INDEX `fk_event_has_altersgruppe_altersgruppe_idx` (`altersgruppe_id` ASC) VISIBLE,
CONSTRAINT `fk_event_has_altersgruppe_event`
FOREIGN KEY (`event_id`)
REFERENCES `clubevent` (`id`)
ON DELETE NO ACTION
ON UPDATE NO ACTION,
CONSTRAINT `fk_event_has_altersgruppe_altersgruppe`
FOREIGN KEY (`altersgruppe_id`)
REFERENCES `altersgruppe` (`id`)
ON DELETE NO ACTION
ON UPDATE NO ACTION);

@ -1,4 +1,8 @@
org.slf4j.simpleLogger.defaultLogLevel = debug
log4j.logger.de.kreth.vaadin.clubhelper=trace
log4j.logger.org.hibernate.type=warn
log4j.logger.org.jboss.logging=warn
org.slf4j.simpleLogger.defaultLogLevel=trace
org.slf4j.simpleLogger.logFile=System.err
org.slf4j.simpleLogger.showThreadName=false
org.slf4j.simpleLogger.log.de.kreth.vaadin.clubhelper=trace
org.slf4j.simpleLogger.log.org.hibernate=info
org.slf4j.simpleLogger.log.com.zaxxer.hikari=info
org.slf4j.simpleLogger.log.com.mysql=info

@ -5,6 +5,7 @@ import java.io.File;
import org.hibernate.cfg.Configuration;
import de.kreth.vaadin.clubhelper.vaadinclubhelper.data.Adress;
import de.kreth.vaadin.clubhelper.vaadinclubhelper.data.Altersgruppe;
import de.kreth.vaadin.clubhelper.vaadinclubhelper.data.Attendance;
import de.kreth.vaadin.clubhelper.vaadinclubhelper.data.ClubeventHasPerson;
import de.kreth.vaadin.clubhelper.vaadinclubhelper.data.Contact;
@ -12,6 +13,7 @@ import de.kreth.vaadin.clubhelper.vaadinclubhelper.data.DeletedEntry;
import de.kreth.vaadin.clubhelper.vaadinclubhelper.data.GroupDef;
import de.kreth.vaadin.clubhelper.vaadinclubhelper.data.Person;
import de.kreth.vaadin.clubhelper.vaadinclubhelper.data.Persongroup;
import de.kreth.vaadin.clubhelper.vaadinclubhelper.data.Pflicht;
import de.kreth.vaadin.clubhelper.vaadinclubhelper.data.Relative;
import de.kreth.vaadin.clubhelper.vaadinclubhelper.data.Startpass;
import de.kreth.vaadin.clubhelper.vaadinclubhelper.data.StartpassStartrechte;
@ -25,12 +27,14 @@ public enum HibernateHolder {
private org.hibernate.cfg.Configuration createConfig() {
Configuration configuration = new Configuration();
configuration.addAnnotatedClass(Adress.class);
configuration.addAnnotatedClass(Altersgruppe.class);
configuration.addAnnotatedClass(Attendance.class);
configuration.addAnnotatedClass(Contact.class);
configuration.addAnnotatedClass(DeletedEntry.class);
configuration.addAnnotatedClass(GroupDef.class);
configuration.addAnnotatedClass(Person.class);
configuration.addAnnotatedClass(Persongroup.class);
configuration.addAnnotatedClass(Pflicht.class);
configuration.addAnnotatedClass(Relative.class);
configuration.addAnnotatedClass(Startpass.class);
configuration.addAnnotatedClass(StartpassStartrechte.class);
@ -38,13 +42,13 @@ public enum HibernateHolder {
configuration.addInputStream(getClass().getResourceAsStream("/schema/ClubEvent.hbm.xml"));
configuration.addAnnotatedClass(ClubeventHasPerson.class);
// mysqlTest(configuration);
// mysqlLocal(configuration);
h2Memory(configuration);
return configuration;
}
public void h2File(Configuration configuration) {
void h2File(Configuration configuration) {
File f = new File("./database");
System.out.println("Databasepath: " + f.getAbsolutePath());
configuration.setProperty("hibernate.dialect", "org.hibernate.dialect.H2Dialect");
@ -53,7 +57,7 @@ public enum HibernateHolder {
configuration.setProperty("hibernate.hbm2ddl.auto", "create");
}
public void mysqlTest(Configuration configuration) {
void mysqlTest(Configuration configuration) {
configuration.setProperty("hibernate.dialect", "org.hibernate.dialect.MySQL8Dialect");
// configuration.setProperty("hibernate.connection.driver_class", "com.mysql.jdbc.Driver");
configuration.setProperty("hibernate.connection.url",
@ -64,7 +68,15 @@ public enum HibernateHolder {
configuration.setProperty("spring.jpa.hibernate.ddl-auto", "update");
}
public void h2Memory(Configuration configuration) {
void mysqlLocal(Configuration configuration) {
configuration.setProperty("hibernate.dialect", "org.hibernate.dialect.MySQL8Dialect");
configuration.setProperty("hibernate.connection.url",
"jdbc:mysql://localhost/clubhelper?useUnicode=yes&characterEncoding=utf8&serverTimezone=Europe/Berlin");
configuration.setProperty("hibernate.connection.username", "markus");
configuration.setProperty("hibernate.connection.password", "0773");
}
void h2Memory(Configuration configuration) {
configuration.setProperty("hibernate.dialect", "org.hibernate.dialect.H2Dialect");
configuration.setProperty("hibernate.connection.driver_class", "org.h2.Driver");

@ -0,0 +1,107 @@
package de.kreth.vaadin.clubhelper.vaadinclubhelper.ausschreibung;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotNull;
import static org.mockito.Mockito.when;
import java.util.List;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import org.mockito.Mock;
import org.mockito.MockitoAnnotations;
import de.kreth.vaadin.clubhelper.vaadinclubhelper.dao.PflichtenDao;
import de.kreth.vaadin.clubhelper.vaadinclubhelper.data.Altersgruppe;
import de.kreth.vaadin.clubhelper.vaadinclubhelper.ui.tests.TestPflichten;
class AltersgruppenParserTest {
@Mock
private PflichtenDao dao;
@BeforeEach
void setUp() throws Exception {
MockitoAnnotations.initMocks(this);
when(dao.listAll()).thenReturn(TestPflichten.getFixedPflichten());
}
@Test
void testBezirksDMT2019() {
Altersgruppen bezDmt = Altersgruppen.parse(true, bezirksDMT2019());
assertNotNull(bezDmt);
List<Altersgruppe> gruppen = bezDmt.getValues();
assertEquals(7, gruppen.size());
}
public String bezirksDMT2019() {
return "Klasse Alter Jahrgang\r\n"
+ "Schüler – innen F 8 u. Jünger 2011 und jünger\r\n"
+ "Schüler – innen E 9-10 2009 - 2010\r\n"
+ "Schüler – innen D 11-12 2007 - 2008\r\n"
+ "Schüler – innen C 13-14 2005 - 2006\r\n"
+ "Schüler – innen B 15-16 2003 - 2004\r\n"
+ "Jugendturner - innen 17-18 2001 - 2002\r\n"
+ "Turner - innen 19 Jahre u. älter 2000 und älter";
}
public String bezEinzelWK2019() {
return "Klasse Jahrgang\r\n"
+ "Schüler – innen G 2013 und jünger P3\r\n"
+ "Schüler – innen F 2011 – 2012 P3\r\n"
+ "Schüler – innen E 2009 – 2010 P3\r\n"
+ "Schüler – innen D 2007 - 2008 P4\r\n"
+ "Schüler – innen C 2005 - 2006 P4\r\n"
+ "Schüler – innen B 2003 - 2004 P5\r\n"
+ "Heranwachsende 2002-1998 P5\r\n"
+ "Turner - innen 1997 -1990 P5";
}
public String bezEinzelMS2019() {
return "Klasse Jahrgang\r\n"
+ "Schüler – innen F 2011 und jünger P3\r\n"
+ "Schüler – innen E 2009 – 2010 P4\r\n"
+ "Schüler – innen D 2007 - 2008 P5\r\n"
+ "Schüler – innen C 2005 - 2006 P6\r\n"
+ "Schüler – innen B 2003 - 2004 P7\r\n"
+ "Heranwachsende 2002-1998 P8\r\n"
+ "Turner - innen 1997 -1990 P8\r\n"
+ "Oldies 1989 und älter P5";
}
public String kreisWK2019() {
return "Einsteigerwettkampf I Einsteigerwettkampf II\r\n"
+ "Jahrgangseinteilung/ Schüler/innen Jahrg. 2013 und jünger P 3 Jahrg. 2012 und jünger P 3\r\n"
+ "Pflichtübungen: Schüler/innen Jahrg. 2011 und 2012 P 3 Jahrg. 2009 bis 2011 P 3\r\n"
+ " Schüler/innen Jahrg. 2009 und 2010 P 3 Jahrg. 2006 bis 2008 P 3\r\n"
+ " Schüler/innen Jahrg. 2007 und 2008 P 3 Jahrg. 2003 bis 2005 P 3\r\n"
+ " Schüler/innen Jahrg. 2005 und 2006 P 3 Jahrg. 1994 bis 2002 P 4\r\n"
+ " Schüler/innen Jahrg. 2003 und 2004 P 3 Jahrg. 1993 und älter P 4\r\n"
+ " Heranwachsene Jahrg. 2002 bis 1994 P 4\r\n" + " Turner/innen Jahrg. 1993 und älter P 4\r\n"
+ "\r\n" + "";
}
}

@ -0,0 +1,47 @@
package de.kreth.vaadin.clubhelper.vaadinclubhelper.ui.tests;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import javax.persistence.EntityManager;
import javax.persistence.EntityTransaction;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;
import de.kreth.vaadin.clubhelper.HibernateHolder;
import de.kreth.vaadin.clubhelper.vaadinclubhelper.data.Pflicht;
public class TestPflichten {
public static List<Pflicht> getFixedPflichten() {
List<Pflicht> pflichten = new ArrayList<>();
for (int i = 1; i < 9; i++) {
pflichten.add(new Pflicht("P" + i, true, i, null));
}
pflichten.add(new Pflicht("M5", true, 15, null));
pflichten.add(new Pflicht("M6", true, 16, null));
pflichten.add(new Pflicht("M7", true, 17, null));
return pflichten;
}
public static void main(String[] args) {
Configuration config = HibernateHolder.configuration();
SessionFactory sf = config.buildSessionFactory();
EntityManager em = sf.createEntityManager();
List<Pflicht> pflichten = getFixedPflichten();
Date now = new Date();
EntityTransaction tx = em.getTransaction();
tx.begin();
for (Pflicht pf : pflichten) {
pf.setCreated(now);
pf.setChanged(now);
em.persist(pf);
}
tx.commit();
em.close();
}
}
Loading…
Cancel
Save