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; |
||||
|
||||
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.Person; |
||||
|
||||
class MeldungEinzelWettkampfGenerator implements MeldungGenerator { |
||||
class MeldungEinzelWettkampfGenerator extends AbstractMeldungGenerator { |
||||
|
||||
/* |
||||
* (non-Javadoc) |
||||
* |
||||
* @see de.kreth.vaadin.clubhelper.vaadinclubhelper.business.MeldungGenerator# |
||||
* printMeldung() |
||||
*/ |
||||
@Override |
||||
public CharSequence printMeldung(ClubEvent event, Map<Altersgruppe, List<Person>> 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.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") |
||||
.append(p.getBirth().getYear()).append("\t").append(g.getPflicht().getName()); |
||||
} |
||||
} |
||||
return txt; |
||||
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"); |
||||
} |
||||
|
||||
} |
||||
|
||||
@ -1,14 +1,9 @@ |
||||
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.Person; |
||||
|
||||
public interface MeldungGenerator { |
||||
|
||||
CharSequence printMeldung(ClubEvent event, Map<Altersgruppe, List<Person>> groups); |
||||
CharSequence printMeldung(ClubEvent event, AltersgruppePersonMap groups); |
||||
|
||||
} |
||||
Loading…
Reference in new issue