parent
d6a4d4d857
commit
ee74411009
@ -0,0 +1,41 @@ |
|||||||
|
package de.kreth.vaadin.clubhelper.vaadinclubhelper.business.meldung; |
||||||
|
|
||||||
|
import java.util.ArrayList; |
||||||
|
import java.util.List; |
||||||
|
import java.util.Map; |
||||||
|
|
||||||
|
import de.kreth.vaadin.clubhelper.vaadinclubhelper.data.Altersgruppe; |
||||||
|
import de.kreth.vaadin.clubhelper.vaadinclubhelper.data.ClubEvent; |
||||||
|
import de.kreth.vaadin.clubhelper.vaadinclubhelper.data.Gender; |
||||||
|
import de.kreth.vaadin.clubhelper.vaadinclubhelper.data.Person; |
||||||
|
|
||||||
|
public abstract class AbstractMeldungGenerator implements MeldungGenerator { |
||||||
|
|
||||||
|
public AbstractMeldungGenerator() { |
||||||
|
super(); |
||||||
|
} |
||||||
|
|
||||||
|
public abstract void personRepresentation(StringBuilder txt, Altersgruppe g, Person p); |
||||||
|
|
||||||
|
@Override |
||||||
|
public CharSequence printMeldung(ClubEvent event, AltersgruppePersonMap groups) { |
||||||
|
StringBuilder txt = new StringBuilder(); |
||||||
|
txt.append("\n\n für den Wettkampf "); |
||||||
|
txt.append(event.getCaption()).append(" am ").append(event.getStart().toLocalDate().toString()) |
||||||
|
.append(" melden wir für den MTV Groß-Buchholz folgende Starter:"); |
||||||
|
List<Altersgruppe> groupList = new ArrayList<>(groups.altersgruppen()); |
||||||
|
groupList.sort((o1, o2) -> Integer.compare(o2.getStart(), o1.getStart())); |
||||||
|
for (Altersgruppe g : groupList) { |
||||||
|
txt.append("\n\n").append(g.getBezeichnung()); |
||||||
|
Map<Gender, List<Person>> list = groups.getGenderMapFor(g); |
||||||
|
for (Gender sex : list.keySet()) { |
||||||
|
txt.append("\n\t").append(sex.localized()); |
||||||
|
for (Person p : list.get(sex)) { |
||||||
|
personRepresentation(txt, g, p); |
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
|
return txt; |
||||||
|
} |
||||||
|
|
||||||
|
} |
||||||
@ -0,0 +1,58 @@ |
|||||||
|
package de.kreth.vaadin.clubhelper.vaadinclubhelper.business.meldung; |
||||||
|
|
||||||
|
import java.util.ArrayList; |
||||||
|
import java.util.Collection; |
||||||
|
import java.util.HashMap; |
||||||
|
import java.util.List; |
||||||
|
import java.util.Map; |
||||||
|
|
||||||
|
import de.kreth.vaadin.clubhelper.vaadinclubhelper.data.Altersgruppe; |
||||||
|
import de.kreth.vaadin.clubhelper.vaadinclubhelper.data.ClubEvent; |
||||||
|
import de.kreth.vaadin.clubhelper.vaadinclubhelper.data.Gender; |
||||||
|
import de.kreth.vaadin.clubhelper.vaadinclubhelper.data.Person; |
||||||
|
|
||||||
|
public class AltersgruppePersonMap { |
||||||
|
|
||||||
|
private final Map<Altersgruppe, Map<Gender, List<Person>>> groups; |
||||||
|
|
||||||
|
private AltersgruppePersonMap(ClubEvent event) { |
||||||
|
this.groups = new HashMap<>(); |
||||||
|
for (Person p : event.getPersons()) { |
||||||
|
group(event, p); |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
public static AltersgruppePersonMap parse(ClubEvent event) { |
||||||
|
return new AltersgruppePersonMap(event); |
||||||
|
} |
||||||
|
|
||||||
|
private void group(ClubEvent event, Person p) { |
||||||
|
for (Altersgruppe g : event.getAltersgruppen()) { |
||||||
|
if (g.isBetween(p.getBirth())) { |
||||||
|
if (!groups.containsKey(g)) { |
||||||
|
groups.put(g, new HashMap<>()); |
||||||
|
} |
||||||
|
Map<Gender, List<Person>> map = groups.get(g); |
||||||
|
if (!map.containsKey(p.getGender())) { |
||||||
|
map.put(p.getGender(), new ArrayList<>()); |
||||||
|
} |
||||||
|
map.get(p.getGender()).add(p); |
||||||
|
return; |
||||||
|
} |
||||||
|
} |
||||||
|
throw new IllegalStateException("No Group found for " + p); |
||||||
|
} |
||||||
|
|
||||||
|
public Collection<Altersgruppe> altersgruppen() { |
||||||
|
return groups.keySet(); |
||||||
|
} |
||||||
|
|
||||||
|
public Map<Gender, List<Person>> getGenderMapFor(Altersgruppe g) { |
||||||
|
return groups.get(g); |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public String toString() { |
||||||
|
return groups.toString(); |
||||||
|
} |
||||||
|
} |
||||||
@ -0,0 +1,14 @@ |
|||||||
|
package de.kreth.vaadin.clubhelper.vaadinclubhelper.business.meldung; |
||||||
|
|
||||||
|
import de.kreth.vaadin.clubhelper.vaadinclubhelper.data.Altersgruppe; |
||||||
|
import de.kreth.vaadin.clubhelper.vaadinclubhelper.data.Person; |
||||||
|
|
||||||
|
class MeldungDmtWettkampfGenerator extends AbstractMeldungGenerator { |
||||||
|
|
||||||
|
@Override |
||||||
|
public void personRepresentation(StringBuilder txt, Altersgruppe g, Person p) { |
||||||
|
txt.append("\n").append(p.getPrename()).append(" ").append(p.getSurname()).append("\t") |
||||||
|
.append(p.getBirth().getYear()).append("\t").append(g.getPflicht().getName()); |
||||||
|
} |
||||||
|
|
||||||
|
} |
||||||
@ -1,36 +1,14 @@ |
|||||||
package de.kreth.vaadin.clubhelper.vaadinclubhelper.business.meldung; |
package de.kreth.vaadin.clubhelper.vaadinclubhelper.business.meldung; |
||||||
|
|
||||||
import java.util.ArrayList; |
|
||||||
import java.util.List; |
|
||||||
import java.util.Map; |
|
||||||
|
|
||||||
import de.kreth.vaadin.clubhelper.vaadinclubhelper.data.Altersgruppe; |
import de.kreth.vaadin.clubhelper.vaadinclubhelper.data.Altersgruppe; |
||||||
import de.kreth.vaadin.clubhelper.vaadinclubhelper.data.ClubEvent; |
|
||||||
import de.kreth.vaadin.clubhelper.vaadinclubhelper.data.Person; |
import de.kreth.vaadin.clubhelper.vaadinclubhelper.data.Person; |
||||||
|
|
||||||
class MeldungEinzelWettkampfGenerator implements MeldungGenerator { |
class MeldungEinzelWettkampfGenerator extends AbstractMeldungGenerator { |
||||||
|
|
||||||
/* |
|
||||||
* (non-Javadoc) |
|
||||||
* |
|
||||||
* @see de.kreth.vaadin.clubhelper.vaadinclubhelper.business.MeldungGenerator# |
|
||||||
* printMeldung() |
|
||||||
*/ |
|
||||||
@Override |
@Override |
||||||
public CharSequence printMeldung(ClubEvent event, Map<Altersgruppe, List<Person>> groups) { |
public void personRepresentation(StringBuilder txt, Altersgruppe g, Person p) { |
||||||
StringBuilder txt = new StringBuilder(); |
|
||||||
txt.append("\n\n für den Wettkampf "); |
|
||||||
txt.append(event.getCaption()).append(" am ").append(event.getStart().toLocalDate().toString()) |
|
||||||
.append(" melden wir für den MTV Groß-Buchholz folgende Starter:"); |
|
||||||
List<Altersgruppe> groupList = new ArrayList<>(groups.keySet()); |
|
||||||
groupList.sort((o1, o2) -> Integer.compare(o2.getStart(), o1.getStart())); |
|
||||||
for (Altersgruppe g : groupList) { |
|
||||||
txt.append("\n\n").append(g.getBezeichnung()); |
|
||||||
for (Person p : groups.get(g)) { |
|
||||||
txt.append("\n").append(p.getPrename()).append(" ").append(p.getSurname()).append("\t") |
txt.append("\n").append(p.getPrename()).append(" ").append(p.getSurname()).append("\t") |
||||||
.append(p.getBirth().getYear()).append("\t").append(g.getPflicht().getName()); |
.append(p.getBirth().getYear()).append("\t"); |
||||||
} |
|
||||||
} |
|
||||||
return txt; |
|
||||||
} |
} |
||||||
|
|
||||||
} |
} |
||||||
|
|||||||
@ -1,14 +1,9 @@ |
|||||||
package de.kreth.vaadin.clubhelper.vaadinclubhelper.business.meldung; |
package de.kreth.vaadin.clubhelper.vaadinclubhelper.business.meldung; |
||||||
|
|
||||||
import java.util.List; |
|
||||||
import java.util.Map; |
|
||||||
|
|
||||||
import de.kreth.vaadin.clubhelper.vaadinclubhelper.data.Altersgruppe; |
|
||||||
import de.kreth.vaadin.clubhelper.vaadinclubhelper.data.ClubEvent; |
import de.kreth.vaadin.clubhelper.vaadinclubhelper.data.ClubEvent; |
||||||
import de.kreth.vaadin.clubhelper.vaadinclubhelper.data.Person; |
|
||||||
|
|
||||||
public interface MeldungGenerator { |
public interface MeldungGenerator { |
||||||
|
|
||||||
CharSequence printMeldung(ClubEvent event, Map<Altersgruppe, List<Person>> groups); |
CharSequence printMeldung(ClubEvent event, AltersgruppePersonMap groups); |
||||||
|
|
||||||
} |
} |
||||||
Loading…
Reference in new issue