diff --git a/.gitignore b/.gitignore index 9de37c6c..2eb89a02 100644 --- a/.gitignore +++ b/.gitignore @@ -19,6 +19,9 @@ bin/ /data/ +~*.xlsx +~*.docx + *.txt.csv *.wk /*.html diff --git a/jauswertung-files/src/main/resources/aks/DLRG 2023.rwe b/jauswertung-files/src/main/resources/aks/DLRG 2023.rwe new file mode 100644 index 00000000..50f13c19 Binary files /dev/null and b/jauswertung-files/src/main/resources/aks/DLRG 2023.rwe differ diff --git a/jauswertung-files/src/main/resources/aks/DLRG 2023.rwm b/jauswertung-files/src/main/resources/aks/DLRG 2023.rwm new file mode 100644 index 00000000..92c518f0 Binary files /dev/null and b/jauswertung-files/src/main/resources/aks/DLRG 2023.rwm differ diff --git a/jauswertung-io/src/main/java/de/df/jauswertung/io/AgeGroupIOUtils.java b/jauswertung-io/src/main/java/de/df/jauswertung/io/AgeGroupIOUtils.java index cefbae19..82adb274 100644 --- a/jauswertung-io/src/main/java/de/df/jauswertung/io/AgeGroupIOUtils.java +++ b/jauswertung-io/src/main/java/de/df/jauswertung/io/AgeGroupIOUtils.java @@ -28,7 +28,7 @@ public static synchronized boolean speichereAKs(String name, Regelwerk aks) { } public static String getDefaultAKsName() { - return "DLRG 2022"; + return "DLRG 2023"; } public static Regelwerk getDefaultAKs(boolean einzel) { diff --git a/jauswertung-misc/src/main/java/de/df/jauswertung/misc/Namenextraktor.java b/jauswertung-misc/src/main/java/de/df/jauswertung/misc/Namenextraktor.java index 5c69f56a..7eaf0c1d 100644 --- a/jauswertung-misc/src/main/java/de/df/jauswertung/misc/Namenextraktor.java +++ b/jauswertung-misc/src/main/java/de/df/jauswertung/misc/Namenextraktor.java @@ -1,41 +1,44 @@ package de.df.jauswertung.misc; -import java.io.*; +import java.io.File; +import java.io.IOException; +import java.nio.charset.Charset; +import java.nio.charset.StandardCharsets; +import java.nio.file.Files; +import java.nio.file.Path; +import java.util.ArrayList; import java.util.Arrays; -import java.util.LinkedList; +import java.util.HashSet; +import java.util.List; +import java.util.Set; -import de.df.jauswertung.daten.*; -import de.df.jauswertung.io.*; +import de.df.jauswertung.daten.AWettkampf; +import de.df.jauswertung.daten.EinzelWettkampf; +import de.df.jauswertung.daten.Teilnehmer; +import de.df.jauswertung.io.InputManager; +import de.df.jauswertung.io.TextFileUtils; public class Namenextraktor { - private static String[] vornamenM = null; - private static String[] vornamenW = null; - private static String[] nachnamen = null; + private static Set vornamenM = null; + private static Set vornamenW = null; + private static Set nachnamen = null; - private static LinkedList vornamenMNeu = new LinkedList(); - private static LinkedList vornamenWNeu = new LinkedList(); - private static LinkedList nachnamenNeu = new LinkedList(); + private static List vornamenMNeu = new ArrayList<>(); + private static List vornamenWNeu = new ArrayList<>(); + private static List nachnamenNeu = new ArrayList<>(); public static void main(String[] args) throws IOException { - vornamenM = readNamen("VornamenM.txt", new String[0]); - vornamenW = readNamen("VornamenW.txt", new String[0]); - nachnamen = readNamen("Nachnamen.txt", new String[0]); + vornamenM = readNamen("VornamenM.txt"); + vornamenW = readNamen("VornamenW.txt"); + nachnamen = readNamen("Nachnamen.txt"); - System.out.println(vornamenM.length); + System.out.println("Vornamen m: " + vornamenM.size()); + System.out.println("Vornamen w: " + vornamenW.size()); + System.out.println("Nachnamen: " + nachnamen.size()); - File[] files = new File("data/").listFiles(new FileFilter() { - - @Override - public boolean accept(File pathname) { - if (pathname.isFile()) { - if (pathname.getAbsolutePath().endsWith(".wk")) { - return true; - } - } - return false; - } - }); + File[] files = new File("data/") + .listFiles(pathname -> pathname.isFile() && pathname.getAbsolutePath().endsWith(".wk")); for (File file : files) { try { System.out.println("Lade " + file.getAbsolutePath()); @@ -50,15 +53,15 @@ public boolean accept(File pathname) { String[] data = vornamenMNeu.toArray(new String[vornamenMNeu.size()]); Arrays.sort(data); - writeFile("vornamenM.txt", data); + writeFile("vornamenM1.txt", data); data = vornamenWNeu.toArray(new String[vornamenWNeu.size()]); Arrays.sort(data); - writeFile("vornamenW.txt", data); + writeFile("vornamenW1.txt", data); data = nachnamenNeu.toArray(new String[nachnamenNeu.size()]); Arrays.sort(data); - writeFile("nachnamen.txt", data); + writeFile("nachnamen1.txt", data); } private static void process(AWettkampf wk) { @@ -67,36 +70,42 @@ private static void process(AWettkampf wk) { for (Teilnehmer t : ewk.getSchwimmer()) { String vorname = t.getVorname(); String nachname = t.getNachname(); - if (t.isMaennlich()) { - if (!contains(vornamenM, vorname) && !vornamenMNeu.contains(vorname) && !contains(nachnamen, vorname)) { - vornamenMNeu.add(vorname); - } - } else { - if (!contains(vornamenW, vorname) && !vornamenWNeu.contains(vorname) && !contains(nachnamen, vorname)) { - vornamenWNeu.add(vorname); + if (!vorname.contains(" ") && !vorname.contains("?")) { + if (t.isMaennlich()) { + if (!vornamenM.contains(vorname) && !vornamenMNeu.contains(vorname) + && !nachnamen.contains(vorname)) { + vornamenMNeu.add(vorname); + } + } else { + if (!vornamenW.contains(vorname) && !vornamenWNeu.contains(vorname) + && !nachnamen.contains(vorname)) { + vornamenWNeu.add(vorname); + } } } - if (!contains(nachnamen, nachname) && !nachnamenNeu.contains(nachname) && !contains(vornamenM, nachname) && !contains(vornamenW, nachname)) { - nachnamenNeu.add(nachname); + if (!nachname.contains("?")) { + if (!nachnamen.contains(nachname) && !nachnamenNeu.contains(nachname) + && !vornamenM.contains(nachname) + && !vornamenW.contains(nachname)) { + nachnamenNeu.add(nachname); + } } } } } - private static boolean contains(String[] data, String text) { - for (String d : data) { - if (d.equals(text)) { - return true; - } + private static Set readNamen(String name) { + try { + return new HashSet<>( + Files.readAllLines(Path.of("jauswertung-files", "src", "main", "resources", "names", name), + Charset.forName("Cp1252"))); + } catch (IOException ex) { + ex.printStackTrace(); + return new HashSet<>(); } - return false; - } - - private static String[] readNamen(String date, String[] backup) { - return TextFileUtils.fileToStringArray("include/main/names", date, backup, false); } private static boolean writeFile(String date, String[] backup) { - return TextFileUtils.StringArrayToFile(".", date, backup); + return TextFileUtils.StringArrayToFile("jauswertung-files/src/main/resources/names", date, backup); } } diff --git a/jauswertung-misc/src/main/java/de/df/jauswertung/misc/PunkteRechnerExport.java b/jauswertung-misc/src/main/java/de/df/jauswertung/misc/PunkteRechnerExport.java index 33bebeda..7f6889cf 100644 --- a/jauswertung-misc/src/main/java/de/df/jauswertung/misc/PunkteRechnerExport.java +++ b/jauswertung-misc/src/main/java/de/df/jauswertung/misc/PunkteRechnerExport.java @@ -23,7 +23,7 @@ public static void main(String[] args) { Regelwerk einzel = AgeGroupIOUtils.getDefaultAKs(true); Regelwerk mannschaft = AgeGroupIOUtils.getDefaultAKs(false); - int jahr = 2022; + int jahr = 2023; // System.out.println("Einzel"); System.out.println(" new Year(" + jahr + ", ["); diff --git a/jauswertung-misc/src/main/java/de/df/jauswertung/misc/UpdateRecWerte.java b/jauswertung-misc/src/main/java/de/df/jauswertung/misc/UpdateRecWerte.java index 68013a8e..a1e31b9b 100644 --- a/jauswertung-misc/src/main/java/de/df/jauswertung/misc/UpdateRecWerte.java +++ b/jauswertung-misc/src/main/java/de/df/jauswertung/misc/UpdateRecWerte.java @@ -14,7 +14,7 @@ public class UpdateRecWerte { - private static final int YEAR = 2022; + private static final int YEAR = 2023; private static final String PathToCsv = "src\\test\\resources\\rec-werte\\"; private static final String PathToRulebook = "..\\jauswertung-files\\src\\main\\resources\\aks\\"; diff --git a/jauswertung-misc/src/main/java/de/df/jauswertung/misc/XamarinExport.java b/jauswertung-misc/src/main/java/de/df/jauswertung/misc/XamarinExport.java deleted file mode 100644 index c70b398f..00000000 --- a/jauswertung-misc/src/main/java/de/df/jauswertung/misc/XamarinExport.java +++ /dev/null @@ -1,74 +0,0 @@ -package de.df.jauswertung.misc; - -import de.df.jauswertung.daten.regelwerk.Altersklasse; -import de.df.jauswertung.daten.regelwerk.Disziplin; -import de.df.jauswertung.daten.regelwerk.Regelwerk; -import de.df.jauswertung.gui.util.I18n; -import de.df.jauswertung.io.AgeGroupIOUtils; - -// $rec = array( -// array("AK 12", -1, array( 31.90, 35.70, 24.30), array( 31.10, 35.10, 23.60), array("50m Hindernis", "50m k. Schwimmen", "50m Flossen")), -// array("AK 13/14", -1, array( 66.20, 41.70, 30.40), array( 59.20, 35.90, 26.90), array("100m Hindernis", "50m Retten", "50m Retten mit Flossen")), -// array("AK 15/16", -1, array( 65.30, 41.80, 64.70), array( 57.10, 35.40, 57.90), array("100m Hindernis", "50m Retten", "100m Retten mit Flossen")), -// array("AK 17/18", -1, array(142.00, 39.10, 61.60), array(129.70, 33.30, 54.00), array("200m Hindernis", "50m Retten", "100m Retten mit Flossen")), -// array("AK offen", 3, array(129.98, 35.26, 56.93, 72.78, 62.19, 148.59), array(115.31, 30.69, 50.48, 63.64, 53.75, 129.29), array("200m Hindernis", "50m -// Retten", "100m Retten mit Flossen", "100m k. Rettungsübung", "100m Lifesaver", "200m Super Lifesaver")), -// array("AK 25, AK 30", -1, array( 67.00, 40.00, 65.80), array( 59.00, 33.00, 57.60), array("100m Hindernis", "50m Retten", "100m Retten mit Flossen")), -// array("AK 35", -1, array( 67.00, 40.00, 31.70), array( 59.00, 33.00, 26.10), array("100m Hindernis", "50m Retten", "50m Retten mit Flossen")), -// array("AK 40, AK 45", -1, array( 32.02, 40.00, 31.70), array( 27.50, 33.00, 26.10), array("50m Hindernis", "50m Retten", "50m Retten mit Flossen")), -// array("AK 50+", -1, array( 36.80, 44.90, 27.90), array( 28.50, 35.20, 23.60), array("50m Freistil", "50m k. Schwimmen", "25m Schleppen einer Puppe")), -// ); - -public class XamarinExport { - - public static void main(String[] args) { - Regelwerk einzel = AgeGroupIOUtils.getDefaultAKs(true); - Regelwerk mannschaft = AgeGroupIOUtils.getDefaultAKs(false); - - // System.out.println("Einzel"); - write("2022", einzel, "Single", true, true); - // write("2017", einzel, "Single", false); - // System.out.println("Mannschaft"); - write("2022", mannschaft, "Team", true, true); - // write("2017", mannschaft, "Team", false); - } - - private static void write(String jahr, Regelwerk aks, String ext, boolean junioren, boolean senioren) { - if (!junioren && !senioren) { - return; - } - - StringBuilder sb = new StringBuilder(); - - int min = junioren ? 0 : 5; - int max = !senioren ? 5 : aks.size(); - - String ext2 = junioren && senioren ? "" : (junioren ? "Juniors" : "Seniors"); - - sb.append(" public static readonly Agegroup[] " + ext + ext2 + " = new Agegroup[] {\n"); - for (int x = min; x < max; x++) { - // int a = aks.getIndex(ids[x]); - Altersklasse ak = aks.getAk(x); - - for (int y = 0; y < 2; y++) { - String name = I18n.getAgeGroupAsString(aks, ak, y == 1); - int amount1 = ak.getDiszAnzahl(); - int amount2 = ak.getUsedDisciplines(); - sb.append(" new Agegroup() { Name = \"" + name + "\", Description = \"\", AmountOfDisciplines = " + amount1 - + ", CalculatedDisciplines = " + amount2 + ",\n"); - for (int z = 0; z < ak.getDiszAnzahl(); z++) { - int i = z + 1; - Disziplin d = ak.getDisziplin(z, y == 1); - String dname = d.getName(); - int rec = d.getRec(); - sb.append(" Discipline" + i + " = \"" + dname + "\", Record" + i + " = " + rec + ",\n"); - } - sb.append(" },\n"); - } - - } - sb.append(" };\n"); - String text = sb.toString(); - System.out.println(text); - } -} diff --git a/jauswertung-misc/src/test/resources/competitions/Rekordwerte 2023.xls b/jauswertung-misc/src/test/resources/competitions/Rekordwerte 2023.xls new file mode 100644 index 00000000..a61dae96 Binary files /dev/null and b/jauswertung-misc/src/test/resources/competitions/Rekordwerte 2023.xls differ diff --git a/jauswertung-misc/src/test/resources/competitions/Rekordwerte 2023.xlsx b/jauswertung-misc/src/test/resources/competitions/Rekordwerte 2023.xlsx new file mode 100644 index 00000000..0ba9d2b9 Binary files /dev/null and b/jauswertung-misc/src/test/resources/competitions/Rekordwerte 2023.xlsx differ diff --git a/jauswertung-misc/src/test/resources/rec-werte/Rec-Werte 2023 Einzel.csv b/jauswertung-misc/src/test/resources/rec-werte/Rec-Werte 2023 Einzel.csv new file mode 100644 index 00000000..49ee4738 --- /dev/null +++ b/jauswertung-misc/src/test/resources/rec-werte/Rec-Werte 2023 Einzel.csv @@ -0,0 +1,143 @@ +Wettkampf;Altersklasse;w/m;Disziplin;Zeit;Name;Rec-Wert;"Rekord Übertrag" +DM2015;AK 12;w;50 m Hindernisschwimmen;0:31,03;Freyer, Henriette;31,03; +DM2015;AK 12;w;50 m Kombiniertes Schwimmen;0:32,69;Freyer, Henriette;32,69; +DM2014;AK 12;w;50 m Flossenschwimmen;0:22,70;Buchner, Lara;22,70; +DM2016;AK 12;m;50 m Hindernisschwimmen;0:30,02;Schubert, Louis;30,02; +DM2015;AK 12;m;50 m Kombiniertes Schwimmen;0:34,15;Prax, Richard;34,15; +DM2016;AK 12;m;50 m Flossenschwimmen;0:21,32;Müller, Jannis;21,32; +DM2017;AK 13/14;w;100 m Hindernisschwimmen;1:04,56;Freyer, Henriette;64,56; +DMM2021;AK 13/14;w;50 m Retten einer Puppe;0:38,92;Schröder, Xenia;38,92; +DM2017;AK 13/14;w;50 m Retten einer Puppe mit Flossen;0:26,80;Holt, Nina;26,80; +DM2016;AK 13/14;m;100 m Hindernisschwimmen;1:01,23;Totaro, Gian-Luca;61,23; +DM2004;AK 13/14;m;50 m Retten einer Puppe;0:35,90;Hassemeier, Marcel;35,90; +DM2018;AK 13/14;m;50 m Retten einer Puppe mit Flossen;0:23,23;Müller, Jannis;23,23; +EM2019;AK 15/16;w;200 m Hindernisschwimmen;2:11,97;Holt, Nina;131,97; +DP2019;AK 15/16;w;50 m Retten einer Puppe;0:35,25;Holt, Nina;35,25; +DEM2019;AK 15/16;w;100 m Retten einer Puppe mit Flossen;0:52,15;Holt, Nina;52,15; +EM2019;AK 15/16;w;100 m Kombinierte Rettungsübung;1:13,61;Holt, Nina;73,61; +JEM2018;AK 15/16;w;100 m Retten mit Flossen und Gurtretter;1:01,24;Undine Lauerwald;61,24; +DP2019;AK 15/16;w;200 m Super Lifesaver;2:30,39;Holt, Nina;150,39; +JWM2016;AK 15/16;m;200 m Hindernisschwimmen;2:03,85;Rösinger, Niklas;123,85; +JEM2012;AK 15/16;m;50 m Retten einer Puppe;0:32,39;Perling, Joshua;32,39; +JRP2015;AK 15/16;m;100 m Retten einer Puppe mit Flossen;0:49,35;Schmidt, Thorben;49,35; +DMM2022;AK 15/16;m;100 m Kombinierte Rettungsübung;1:09,27;Dahn, Lukas;69,27; +WM2018;AK 15/16;m;100 m Retten mit Flossen und Gurtretter;0:56,44;Stern, Max;56,44; +DP2016;AK 15/16;m;200 m Super Lifesaver;2:26,80;Möller, Arne;146,80; +EM2021;AK 17/18;w;200 m Hindernisschwimmen;2:10,04;Holt, Nina;130,04; +Waf 02.2021;AK 17/18;w;50 m Retten einer Puppe;0:34,04;Holt, Nina;34,04; +DEM2019;AK 17/18;w;100 m Retten einer Puppe mit Flossen;0:52,15;Holt, Nina;52,15;AK 15/16 +Waf 05.2021;AK 17/18;w;100 m Kombinierte Rettungsübung;1:10,56;Holt, Nina;70,56; +EM-IC2019;AK 17/18;w;100 m Retten mit Flossen und Gurtretter;1:00,93;Undine Lauerwald;60,93; +JEM/EM-Q2021;AK 17/18;w;200 m Super Lifesaver;2:26,07;Holt, Nina;146,07; +JEM2015;AK 17/18;m;200 m Hindernisschwimmen;2:02,30;Ende, Fabian;122,30; +DP2017;AK 17/18;m;50 m Retten einer Puppe;0:30,16;Schmidt, Thorben;30,16; +DEM2019;AK 17/18;m;100 m Retten einer Puppe mit Flossen;0:45,96;Hetfeld, Marco;45,96; +JEM2015;AK 17/18;m;100 m Kombinierte Rettungsübung;1:02,47;Ende, Fabian;62,47; +DP2015;AK 17/18;m;100 m Retten mit Flossen und Gurtretter;0:52,19;Laufkötter, David;52,19; +DP2015;AK 17/18;m;200 m Super Lifesaver;2:13,42;Laufkötter, David;133,42; +WG2022;AK offen;w;200 m Hindernisschwimmen;2:05,50;Holt, Nina;125,50; +WM2022;AK offen;w;50 m Retten einer Puppe;0:32,81;Holt, Nina;32,81; +DEM2022;AK offen;w;100 m Retten einer Puppe mit Flossen;0:50,63;Lauerwald, Undine;50,63; +WM2022;AK offen;w;100 m Kombinierte Rettungsübung;1:07,04;Holt, Nina;67,04; +WM2022;AK offen;w;100 m Retten mit Flossen und Gurtretter;0:56,10;Lauerwald, Undine;56,10; +WM2022;AK offen;w;200 m Super Lifesaver;2:23,01;Gebhardt, Alica;143,01; +WG2009;AK offen;m;200 m Hindernisschwimmen;1:57,00;Bilski, Benjamin;117,00; +WG2017;AK offen;m;50 m Retten einer Puppe;0:27,27;Wieck, Danny;27,27; +DEM2019;AK offen;m;100 m Retten einer Puppe mit Flossen;0:44,04;Malkowski, Jan;44,04; +DCP2018;AK offen;m;100 m Kombinierte Rettungsübung;0:59,06;Wieck, Danny;59,06; +DCP2018;AK offen;m;100 m Retten mit Flossen und Gurtretter;0:49,38;Malkowski, Jan;49,38; +WMQ2014;AK offen;m;200 m Super Lifesaver;2:05,66;Hassemeier, Marcel;125,66; +DSM2016;AK 25;w;100 m Hindernisschwimmen;1:03,72;Walter, Laura;63,72; +DSM2015;AK 25;w;50 m Retten einer Puppe;0:37,82;Kittel, Christine;37,82;AK 30 +DSM2018;AK 25;w;100 m Retten einer Puppe mit Flossen;0:58,72;Heinrichsmeier, Sarah;58,72; +DCP2018;AK 25;w;100 m Retten mit Flossen und Gurtretter;1:02,87;Heinrichsmeier, Sarah;62,87; +DSM2016;AK 25;m;100 m Hindernisschwimmen;0:56,11;Tielsch, Dominik;56,11; +DSM2015;AK 25;m;50 m Retten einer Puppe;0:32,03;Bockhorst, Alexander;32,03; +DSM2019;AK 25;m;100 m Retten einer Puppe mit Flossen;0:52,01;Sander, Roman;52,01; +DEM2021;AK 25;m;100 m Retten mit Flossen und Gurtretter;0:50,02;Lehr, Kevin;50,02;AK 30 +DSM2015;AK 30;w;100 m Hindernisschwimmen;1:04,92;Kittel, Christine;64,92; +DSM2015;AK 30;w;50 m Retten einer Puppe;0:37,82;Kittel, Christine;37,82; +DSM2015;AK 30;w;100 m Retten einer Puppe mit Flossen;1:04,41;Kuhl, Julia;64,41; +WM-M2016;AK 30;w;100 m Retten mit Flossen und Gurtretter;1:05,16;Schatz, Julia;65,16; +DSM2016;AK 30;m;100 m Hindernisschwimmen;0:56,70;Zinram, Matthias;56,70; +DSM2015;AK 30;m;50 m Retten einer Puppe;0:32,03;Bahro, Nyk;32,03; +DSM2019;AK 30;m;100 m Retten einer Puppe mit Flossen;0:52,20;Jagiella, Jens;52,20; +DEM2021;AK 30;m;100 m Retten mit Flossen und Gurtretter;0:50,02;Lehr, Kevin;50,02; +DSM2017;AK 35;w;100 m Hindernisschwimmen;1:07,00;Hübner, Julia;67,00; +DSM2014;AK 35;w;50 m Retten einer Puppe;0:38,38;Libera-Körner, Jeanette;38,38;AK 40 +DSM2017;AK 35;w;100 m Retten einer Puppe mit Flossen;1:04,73;Adam, Stefanie;64,73;AK 40 +WM2022;AK 35;w;100 m Retten mit Flossen und Gurtretter;1:05,72;Kittel, Christine;65,72; +DSM2010;AK 35;m;100 m Hindernisschwimmen;0:57,52;Reznichenko, Alexey;57,52; +DSM2016;AK 35;m;50 m Retten einer Puppe;0:32,25;Laurent, Thorsten;32,25;AK 40 +WM2022;AK 35;m;100 m Retten einer Puppe mit Flossen;0:54,02;Sonsmann, Thorsten;54,02;AK 50 +OrangeC2015;AK 35;m;100 m Retten mit Flossen und Gurtretter;0:57,52;Gätzschmann, Daniel;57,52; +DSM2016;AK 40;w;100 m Hindernisschwimmen;1:09,15;Kother, Eileen;69,15; +DSM2016;AK 40;w;50 m Retten einer Puppe;0:38,38;Libera-Körner, Jeanette;38,38; +DSM2017;AK 40;w;100 m Retten einer Puppe mit Flossen;1:04,73;Adam, Stefanie;64,73; +WM2022;AK 40;w;100 m Retten mit Flossen und Gurtretter;1:08,43;Libera-Körner, Jeanette;68,43;AK 45 +DSM2016;AK 40;m;100 m Hindernisschwimmen;0:57,68;Laurent, Thorsten;57,68; +DSM2016;AK 40;m;50 m Retten einer Puppe;0:32,25;Laurent, Thorsten;32,25; +WM2022;AK 40;m;100 m Retten einer Puppe mit Flossen;0:54,02;Sonsmann, Thorsten;54,02;AK 50 +EM-M2017;AK 40;m;100 m Retten mit Flossen und Gurtretter;0:59,28;Speer, Thomas;59,28; +DSM2017;AK 45;w;100 m Hindernisschwimmen;1:10,45;Grundheber, Antje;70,45; +DSM2018;AK 45;w;50 m Retten einer Puppe;0:39,34;Libera-Körner, Jeanette;39,34; +WM2022;AK 45;w;100 m Retten einer Puppe mit Flossen;1:04,89;Adam, Stefanie;64,89; +WM2022;AK 45;w;100 m Retten mit Flossen und Gurtretter;1:08,43;Libera-Körner, Jeanette;68,43; +DSM2017;AK 45;m;100 m Hindernisschwimmen;1:01,44;Scharfenberg, Hagen;61,44; +DSM2019;AK 45;m;50 m Retten einer Puppe;0:34,13;Janßen, Thomas / Kilders, Hermann-Josef;34,13;AK 50 +WM2022;AK 45;m;100 m Retten einer Puppe mit Flossen;0:54,02;Sonsmann, Thorsten;54,02; +WM-IC2016;AK 45;m;100 m Retten mit Flossen und Gurtretter;1:00,91;Haaser, Norbert;60,91; +DSM2016;AK 50;w;100 m Hindernisschwimmen;1:15,82;Hofmann-Scheidler, Claudia;75,82; +DSM2018;AK 50;w;50 m Retten einer Puppe;0:45,10;Lauerwald, Ute-Christiane;45,10; +DSM2019;AK 50;w;50 m Retten einer Puppe mit Flossen;0:31,99;Lauerwald, Ute-Christiane;31,99;AK 55 +DSM2018;AK 50;m;100 m Hindernisschwimmen;1:01,50;Janßen, Thomas;61,50; +DSM2019;AK 50;m;50 m Retten einer Puppe;0:34,13;Janßen, Thomas / Kilders, Hermann-Josef;34,13; +DSM2016;AK 50;m;50 m Retten einer Puppe mit Flossen;0:24,91;Haaser, Norbert;24,91; +DSM2019;AK 55;w;100 m Hindernisschwimmen;1:20,01;Lauerwald, Ute-Christiane;80,01; +DSM2015;AK 55;w;50 m Retten einer Puppe;0:45,91;Franke, Angela;45,91; +DSM2019;AK 55;w;50 m Retten einer Puppe mit Flossen;0:31,99;Lauerwald, Ute-Christiane;31,99; +DSM2014;AK 55;m;100 m Hindernisschwimmen;1:03,94;Meik, Michael;63,94; +DSM2015;AK 55;m;50 m Retten einer Puppe;0:36,42;Meik, Michael;36,42; +DSM2018;AK 55;m;50 m Retten einer Puppe mit Flossen;0:25,52;Venohr, Heiko;25,52; +DSM2018;AK 60;w;50 m Freistilschwimmen;0:35,06;Franke, Angela;35,06; +DSM2018;AK 60;w;50 m Kombiniertes Schwimmen;0:41,43;Hannebohm, Marion;41,43; +DSM2018;AK 60;w;25 m Schleppen einer Puppe;0:28,80;Franke, Angela;28,80; +DSM2018;AK 60;m;50 m Freistilschwimmen;0:27,70;Meik, Michael;27,70; +DSM2018;AK 60;m;50 m Kombiniertes Schwimmen;0:30,88;Meik, Michael;30,88; +DSM2019;AK 60;m;25 m Schleppen einer Puppe;0:19,23;Meik, Michael;19,23; +DSM2004;AK 65;w;50 m Freistilschwimmen;0:37,20;Reich, Helga;37,20; +DSM2009;AK 65;w;50 m Kombiniertes Schwimmen;0:44,14;Röse, Hannelore;44,14; +DSM2010;AK 65;w;25 m Schleppen einer Puppe;0:33,08;Bongartz Uschi;33,08; +DSM2004;AK 65;m;50 m Freistilschwimmen;0:31,10;Walbrach, Olaf;31,10; +DSM2017;AK 65;m;50 m Kombiniertes Schwimmen;0:36,90;Bloch, Herbert;36,90; +DSM2019;AK 65;m;25 m Schleppen einer Puppe;0:22,61;Wöllke, Manfred;22,61; +DSM2006;AK 70;w;50 m Freistilschwimmen;0:38,60;Reich, Helga;38,60; +DSM2007;AK 70;w;50 m Kombiniertes Schwimmen;0:46,80;Lange, Ingrid;46,80; +DSM2015;AK 70;w;25 m Schleppen einer Puppe;0:31,44;Bongartz, Uschi;31,44; +DSM2009;AK 70;m;50 m Freistilschwimmen;0:32,22;Walbrach, Olaf;32,22; +DSM2017;AK 70;m;50 m Kombiniertes Schwimmen;0:40,48;Stockhammer, Peter;40,48; +DSM2011;AK 70;m;25 m Schleppen einer Puppe;0:24,43;Pfletschinger, Peter;24,43; +DSM2012;AK 75;w;50 m Freistilschwimmen;0:41,62;Reich, Helga;41,62; +DSM2012;AK 75;w;50 m Kombiniertes Schwimmen;0:50,17;Lange, Ingrid;50,17; +DSM2019;AK 75;w;25 m Schleppen einer Puppe;0:33,81;Schleupen, Dagmar;33,81; +DSM2016;AK 75;m;50 m Freistilschwimmen;0:35,07;Full, Hans;35,07; +DSM2011;AK 75;m;50 m Kombiniertes Schwimmen;0:44,64;Tretner, Werner;44,64; +DSM2017;AK 75;m;25 m Schleppen einer Puppe;0:24,66;Full, Hans;24,66; +DSM2016;AK 80;w;50 m Freistilschwimmen;0:43,83;Reich, Helga;43,83; +DSM2017;AK 80;w;50 m Kombiniertes Schwimmen;0:59,17;Lange, Ingrid;59,17; +DSM2009;AK 80;w;25 m Schleppen einer Puppe;0:37,61;Lemmes, Else;37,61; +DSM2017;AK 80;m;50 m Freistilschwimmen;0:37,84;Hole, Gerhard;37,84; +DSM2016;AK 80;m;50 m Kombiniertes Schwimmen;0:45,23;Tretner, Werner;45,23; +DSM2016;AK 80;m;25 m Schleppen einer Puppe;0:28,39;Tretner, Werner;28,39; +DSM2011;AK 85;w;50 m Freistilschwimmen;1:13,98;Lemmes, Else;73,98; +DSM2011;AK 85;w;50 m Kombiniertes Schwimmen;1:12,61;Lemmes, Else;72,61; +DSM2011;AK 85;w;25 m Schleppen einer Puppe;0:41,87;Lemmes, Else;41,87; +DSM2007;AK 85;m;50 m Freistilschwimmen;1:03,08;Brudny, Josef;63,08; +DSM2007;AK 85;m;50 m Kombiniertes Schwimmen;1:08,23;Brudny, Josef;68,23; +DSM2015;AK 85;m;25 m Schleppen einer Puppe;0:37,67;Stein, Werner;37,67; +DSM2016;AK 90;w;50 m Freistilschwimmen;1:26,75;Lemmes, Else;86,75; +DSM2016;AK 90;w;50 m Kombiniertes Schwimmen;1:24,59;Lemmes, Else;84,59; +DSM2016;AK 90;w;25 m Schleppen einer Puppe;0:48,08;Lemmes, Else;48,08; +DSM2019;AK 90;m;50 m Freistilschwimmen;1:39,18;Thümmler, Olaf;99,18; +DSM2019;AK 90;m;50 m Kombiniertes Schwimmen;1:41,34;Thümmler, Olaf;101,34; +DSM2019;AK 90;m;25 m Schleppen einer Puppe;0:49,33;Thümmler, Olaf;49,33; diff --git a/jauswertung-misc/src/test/resources/rec-werte/Rec-Werte 2023 Mannschaft.csv b/jauswertung-misc/src/test/resources/rec-werte/Rec-Werte 2023 Mannschaft.csv new file mode 100644 index 00000000..3947c460 --- /dev/null +++ b/jauswertung-misc/src/test/resources/rec-werte/Rec-Werte 2023 Mannschaft.csv @@ -0,0 +1,93 @@ +Wettkampf;Altersklasse;w/m;Disziplin;Zeit;Name;Rec-Wert;"Rekord Übertrag" +DMM2022;AK 12;w;4 x 50 m Hindernisstaffel;2:29,75;Norderstedt;149,75; +DM2014;AK 12;w;4 x 25 m Rettungsstaffel;0:58,17;Luckenwalde 1;58,17; +DMM2019;AK 12;w;4 x 25 m Gurtretterstaffel;1:11,33;Echternacherbrück/Irrel;71,33; +DMM2019;AK 12;w;4 x 25 m Rückenlage ohne Armtätigkeit;1:22,19;Norderstedt;82,19; +DMM2022;AK 12;m;4 x 50 m Hindernisstaffel;2:29,83;Oder Spree 1;149,83; +DM2017;AK 12;m;4 x 25 m Rettungsstaffel;0:56,74;Obere Elbe Pirna;56,74; +DM2017;AK 12;m;4 x 25 m Gurtretterstaffel;1:11,13;Völklingen;71,13; +DM2017;AK 12;m;4 x 25 m Rückenlage ohne Armtätigkeit;1:20,26;Völklingen;80,26; +DM2015;AK 13/14;w;4 x 50 m Hindernisstaffel;2:10,44;Weimar 1;130,44; +DM2018;AK 13/14;w;4 x 25 m Puppenstaffel;1:41,68;Nieder-Olm/Wörrstadt;101,68; +DM2013;AK 13/14;w;4 x 50 m Gurtretterstaffel;1:59,03;Nieder-Olm / Wörrstadt;119,03; +DMM2022;AK 13/14;w;4 x 50 m Rettungsstaffel;2:32,22;Völklingen;152,22; +DM2018;AK 13/14;m;4 x 50 m Hindernisstaffel;1:59,22;Weimar;119,22; +DMM2022;AK 13/14;m;4 x 25 m Puppenstaffel;1:30,31;Luckenwalde 1;90,31; +DMM2022;AK 13/14;m;4 x 50 m Gurtretterstaffel;1:48,76;Luckenwalde 1;108,76; +DMM2022;AK 13/14;m;4 x 50 m Rettungsstaffel;2:14,79;Luckenwalde 1;134,79; +DM2015;AK 15/16;w;4 x 50 m Hindernisstaffel;2:04,07;Nieder-Olm/Wörrstadt;124,07; +DMM2019;AK 15/16;w;4 x 25 m Puppenstaffel;1:36,25;Nieder-Olm/Wörrstadt;96,25; +JRP2015;AK 15/16;w;4 x 50 m Gurtretterstaffel;1:51,31;Westfalen;111,31; +DMM2022;AK 15/16;w;4 x 50 m Rettungsstaffel;2:24,40;Herzogenaurach;144,40; +DM2015;AK 15/16;m;4 x 50 m Hindernisstaffel;1:49,90;Weimar;109,90; +DM2016;AK 15/16;m;4 x 25 m Puppenstaffel;1:17,92;Verl;77,92; +DMM2019;AK 15/16;m;4 x 50 m Gurtretterstaffel;1:40,72;Gütersloh;100,72; +DMM2021;AK 15/16;m;4 x 50 m Rettungsstaffel;2:01,44;"""Obere Elbe"" Pirna";121,44; +EM2019;AK 17/18;w;4 x 50 m Hindernisstaffel;1:56,70;Deutschland;116,70; +EM2019;AK 17/18;w;4 x 25 m Puppenstaffel;1:24,93;Deutschland;84,93; +EM2019;AK 17/18;w;4 x 50 m Gurtretterstaffel;1:43,90;Deutschland;103,90; +DMM2022;AK 17/18;w;4 x 50 m Rettungsstaffel;2:17,51;Halle-Saalekreis;137,51; +JWM2016;AK 17/18;m;4 x 50 m Hindernisstaffel;1:43,25;Deutschland;103,25; +JWM2014;AK 17/18;m;4 x 25 m Puppenstaffel;1:09,98;Deutschland;69,98; +EM2019;AK 17/18;m;4 x 50 m Gurtretterstaffel;1:32,88;Deutschland;92,88; +DMM2022;AK 17/18;m;4 x 50 m Rettungsstaffel;1:52,91;Gütersloh;112,91; +WG2022;AK offen;w;4 x 50 m Hindernisstaffel;1:51,10;Deutschland;111,10; +EM2021;AK offen;w;4 x 25 m Puppenstaffel;1:18,60;Deutschland;78,60; +WG2022;AK offen;w;4 x 50 m Gurtretterstaffel;1:36,00;Deutschland;96,00; +DMM2021;AK offen;w;4 x 50 m Rettungsstaffel;2:09,32;Halle-Saalekreis;129,32; +WM2014;AK offen;m;4 x 50 m Hindernisstaffel;1:37,48;Deutschland;97,48; +WG2017;AK offen;m;4 x 25 m Puppenstaffel;1:04,04;Deutschland;64,04; +WM2018;AK offen;m;4 x 50 m Gurtretterstaffel;1:26,19;Deutschland;86,19; +DMM2022;AK offen;m;4 x 50 m Rettungsstaffel;1:48,85;Halle-Saalekreis;108,85; +DSM2018;AK 100;w;4 x 50 m Hindernisstaffel;2:04,45;Harsewinkel;124,45; +DSM2015;AK 100;w;4 x 25 m Puppenstaffel;1:27,70;Schwerte;87,70; +DSM2018;AK 100;w;4 x 50 m Gurtretterstaffel;1:50,80;Harsewinkel;110,80; +geschätzt;AK 100;w;4 x 50 m Rettungsstaffel;2:21,12;geschätzt;141,12; +DSM2015;AK 100;m;4 x 50 m Hindernisstaffel;1:46,00;Stralsund;106,00; +DSM2018;AK 100;m;4 x 25 m Puppenstaffel;1:12,04;Gütersloh;72,04;AK 120 +DSM2018;AK 100;m;4 x 50 m Gurtretterstaffel;1:35,17;Dettingen;95,17;AK 120 +geschätzt;AK 100;m;4 x 50 m Rettungsstaffel;1:58,95;geschätzt;118,95; +DSM2015;AK 120;w;4 x 50 m Hindernisstaffel;2:06,17;Region Uetersen;126,17; +DSM2019;AK 120;w;4 x 25 m Puppenstaffel;1:34,75;Malsch;94,75; +DSM2014;AK 120;w;4 x 50 m Gurtretterstaffel;1:55,12;Region Uetersen;115,12; +geschätzt;AK 120;w;4 x 50 m Rettungsstaffel;2:23,94;geschätzt;143,94; +DSM2018;AK 120;m;4 x 50 m Hindernisstaffel;1:46,28;Dettingen;106,28; +DSM2018;AK 120;m;4 x 25 m Puppenstaffel;1:12,04;Gütersloh;72,04; +DSM2018;AK 120;m;4 x 50 m Gurtretterstaffel;1:35,17;Dettingen;95,17; +geschätzt;AK 120;m;4 x 50 m Rettungsstaffel;1:59,75;geschätzt;119,75; +WM2022;AK 140;w;4 x 50 m Hindernisstaffel;2:10,84;Rheda-Wiedenbrück;130,84; +DSM2016;AK 140;w;4 x 25 m Puppenstaffel;1:37,65;Region Uetersen;97,65; +WM2022;AK 140;w;4 x 50 m Gurtretterstaffel;1:55,97;Rheda-Wiedenbrück;115,97; +geschätzt;AK 140;w;4 x 50 m Rettungsstaffel;2:27,62;geschätzt;147,62; +DSM2016;AK 140;m;4 x 50 m Hindernisstaffel;1:52,02;Gütersloh;112,02; +DSM2016;AK 140;m;4 x 25 m Puppenstaffel;1:14,79;Gütersloh;74,79; +DSM2015;AK 140;m;4 x 50 m Gurtretterstaffel;1:42,19;Gütersloh;102,19; +geschätzt;AK 140;m;4 x 50 m Rettungsstaffel;2:02,19;geschätzt;122,19; +DSM2019;AK 170;w;4 x 50 m Hindernisstaffel;2:11,37;Luckenwalde;131,37; +DSM2019;AK 170;w;4 x 25 m Puppenstaffel;1:42,48;Charlottenburg-Wilmersdorf 1;102,48; +DSM2019;AK 170;w;4 x 50 m Gurtretterstaffel;2:01,22;Luckenwalde;121,22; +geschätzt;AK 170;w;4 x 50 m Rettungsstaffel;2:34,34;geschätzt;154,34; +DSM2019;AK 170;m;4 x 50 m Hindernisstaffel;1:55,07;Bietigheim-Bissingen;115,07; +DSM2017;AK 170;m;4 x 25 m Puppenstaffel;1:21,26;Alpen;81,26;AK 200 +DSM2017;AK 170;m;4 x 50 m Gurtretterstaffel;1:45,95;Wadgassen;105,95; +geschätzt;AK 170;m;4 x 50 m Rettungsstaffel;2:05,69;geschätzt;125,69; +DSM2018;AK 200;w;4 x 50 m Hindernisstaffel;2:22,41;Dissen-Bad Rothenfelde;142,41; +DSM2018;AK 200;w;4 x 25 m Puppenstaffel;1:56,05;Reichenbach/Fils;116,05; +DSM2018;AK 200;w;4 x 50 m Gurtretterstaffel;2:09,18;Niederes Elbtal;129,18; +geschätzt;AK 200;w;4 x 50 m Rettungsstaffel;2:49,79;geschätzt;169,79; +DSM2017;AK 200;m;4 x 50 m Hindernisstaffel;1:57,04;Alpen;117,04; +DSM2017;AK 200;m;4 x 25 m Puppenstaffel;1:21,26;Alpen;81,26; +WM2022;AK 200;m;4 x 50 m Gurtretterstaffel;1:48,37;Alpen;108,37; +geschätzt;AK 200;m;4 x 50 m Rettungsstaffel;2:10,77;geschätzt;130,77; +DSM2018;AK 240;w;4 x 50 m Freistilstaffel;2:38,40;Magdeburg;158,40; +DSM2018;AK 240;w;4 x 25 m Rettungsstaffel;1:19,00;Magdeburg;79,00; +DSM2012;AK 240;w;4 x 25 m Rückenlage ohne Armtätigkeit;1:52,01;Mönchengladbach;112,01; +DSM2019;AK 240;m;4 x 50 m Freistilstaffel;2:00,42;Wadgassen;120,42; +DSM2016;AK 240;m;4 x 25 m Rettungsstaffel;1:02,01;Wadgassen;62,01; +DSM2015;AK 240;m;4 x 25 m Rückenlage ohne Armtätigkeit;1:26,94;Gelsenkirchen-Mitte;86,94; +DSM2014;AK 280+;w;4 x 50 m Freistilstaffel;3:39,78;Tönisvorst;219,78; +DSM2014;AK 280+;w;4 x 25 m Rettungsstaffel;1:39,35;Tönisvorst;99,35; +DSM2013;AK 280+;w;4 x 25 m Rückenlage ohne Armtätigkeit;2:13,58;Tönisvorst;133,58; +DSM2019;AK 280+;m;4 x 50 m Freistilstaffel;2:31,51;Wadgassen;151,51; +DSM2016;AK 280+;m;4 x 25 m Rettungsstaffel;1:14,78;Hochneukirch;74,78; +DSM2013;AK 280+;m;4 x 25 m Rückenlage ohne Armtätigkeit;1:50,04;Mönchengladbach;110,04;