diff --git a/luennot/live23/src/fxKerho/KerhoGUIController.java b/luennot/live23/src/fxKerho/KerhoGUIController.java index 8db47e2bbfb0632676163ed7d7cc32ffcb7135e8..508bc5a97efd8fb4523fded10929322c42cd7901 100644 --- a/luennot/live23/src/fxKerho/KerhoGUIController.java +++ b/luennot/live23/src/fxKerho/KerhoGUIController.java @@ -153,6 +153,7 @@ public class KerhoGUIController implements Initializable { for (int k=apujasen.ekaKentta(); k<apujasen.getKenttia(); k++) { cbKentat.add(apujasen.getKysymys(k)); } + cbKentat.setSelectedIndex(0); chooserJasenet.clear(); diff --git a/luennot/live23/src/kanta/HetuTarkistus.java b/luennot/live23/src/kanta/HetuTarkistus.java index a7112daa1760bc0f1fee657ee30dbf73f29d6b8d..4a11bbff06d37efce59360f9b9f72429f9fd2e64 100644 --- a/luennot/live23/src/kanta/HetuTarkistus.java +++ b/luennot/live23/src/kanta/HetuTarkistus.java @@ -128,5 +128,30 @@ public class HetuTarkistus { String.format("%03d",rand(1,1000)); return apuhetu + hetunTarkistusMerkki(apuhetu); } - + + + /** + * @return avainarvo hetusta + * @example + * <pre name="test"> + * getAvain("010203+111L") === "0030201+111L" + * getAvain("010203-111L") === "1030201-111L" + * getAvain("010203A111L") === "2030201A111L" + * </pre> + */ + public static String getAvain(String hetu) { + StringBuilder sb = new StringBuilder(hetu); + if ( sb.length() < 6 ) return sb.toString(); // TODO mitä palautetaan + char c = sb.charAt(4); + sb.setCharAt(4,sb.charAt(0)); + sb.setCharAt(0,c); + c = sb.charAt(5); + sb.setCharAt(5,sb.charAt(1)); + sb.setCharAt(1,c); + sb.insert(0, '0'); // - jonon alkuun ja + < - < A + if ( sb.length() < 8 ) return sb.toString(); // jos ei erotinta, mennään ilman sitä + if ( sb.charAt(7) == '-') sb.setCharAt(0,'1'); + if ( sb.charAt(7) == 'A') sb.setCharAt(0,'2'); + return sb.toString(); + } } diff --git a/luennot/live23/src/kanta/test/HetuTarkistusTest.java b/luennot/live23/src/kanta/test/HetuTarkistusTest.java index 5c97ba1ee2224882ac20f43fd9692c132c139f1f..f700278f8c76faa318d8e6e13604ee6822e96f87 100644 --- a/luennot/live23/src/kanta/test/HetuTarkistusTest.java +++ b/luennot/live23/src/kanta/test/HetuTarkistusTest.java @@ -1,5 +1,6 @@ package kanta.test; // Generated by ComTest BEGIN +import kanta.*; import static org.junit.Assert.*; import org.junit.*; import static kanta.HetuTarkistus.*; @@ -7,7 +8,7 @@ import static kanta.HetuTarkistus.*; /** * Test class made by ComTest - * @version 2019.01.06 23:46:58 // Generated by ComTest + * @version 2024.04.02 22:54:11 // Generated by ComTest * */ public class HetuTarkistusTest { @@ -15,27 +16,64 @@ public class HetuTarkistusTest { // Generated by ComTest BEGIN - /** testHetunTarkistusMerkki23 */ + /** testTarkista28 */ @Test - public void testHetunTarkistusMerkki23() { // HetuTarkistus: 23 - assertEquals("From: HetuTarkistus line: 24", 'N', hetunTarkistusMerkki("121212-222")); - assertEquals("From: HetuTarkistus line: 25", 'N', hetunTarkistusMerkki("121212-222S")); - assertEquals("From: HetuTarkistus line: 26", 'N', hetunTarkistusMerkki("121212-222N")); - assertEquals("From: HetuTarkistus line: 27", 'Y', hetunTarkistusMerkki("121212-231Y")); - assertEquals("From: HetuTarkistus line: 28", '7', hetunTarkistusMerkki("311212-2317")); - assertEquals("From: HetuTarkistus line: 29", '7', hetunTarkistusMerkki("311212-2317XY")); // vaikka on liikaa merkkejä - assertEquals("From: HetuTarkistus line: 30", 'F', hetunTarkistusMerkki("999999-9999XY")); // vaikka on pvm väärin + public void testTarkista28() { // HetuTarkistus: 28 + HetuTarkistus hetut = new HetuTarkistus(); + assertEquals("From: HetuTarkistus line: 31", "Hetu liian lyhyt", hetut.tarkista("12121")); + assertEquals("From: HetuTarkistus line: 32", "Hetu liian lyhyt", hetut.tarkista("k")); + assertEquals("From: HetuTarkistus line: 33", "Alkuosassa saa olla vain numeroita", hetut.tarkista("12121k")); + assertEquals("From: HetuTarkistus line: 34", null, hetut.tarkista("121212")); // sallitaan pelkkä syntymäaika + assertEquals("From: HetuTarkistus line: 35", "Liian pieni päivämäärä", hetut.tarkista("001212")); + assertEquals("From: HetuTarkistus line: 36", "Liian suuri päivämäärä", hetut.tarkista("321212")); + assertEquals("From: HetuTarkistus line: 37", "Liian suuri päivämäärä", hetut.tarkista("300212")); + assertEquals("From: HetuTarkistus line: 38", "Liian suuri päivämäärä", hetut.tarkista("310412")); + assertEquals("From: HetuTarkistus line: 39", "Liian suuri kuukausi", hetut.tarkista("121312")); + assertEquals("From: HetuTarkistus line: 40", "Liian pieni kuukausi", hetut.tarkista("120012")); + assertEquals("From: HetuTarkistus line: 41", "Väärä erotinmerkki", hetut.tarkista("121212B222Q")); + assertEquals("From: HetuTarkistus line: 42", "Yksilöosassa kirjaimia", hetut.tarkista("121212-2k2Q")); + assertEquals("From: HetuTarkistus line: 43", "Yksilöosa liian lyhyt", hetut.tarkista("121212-2")); + assertEquals("From: HetuTarkistus line: 44", "Yksilöosa liian lyhyt", hetut.tarkista("121212-")); + assertEquals("From: HetuTarkistus line: 45", "Hetu liian pitkä", hetut.tarkista("121212-12345")); + assertEquals("From: HetuTarkistus line: 46", "Tarkistusmerkin kuuluisi olla N", hetut.tarkista("121212-222S")); + assertEquals("From: HetuTarkistus line: 47", null, hetut.tarkista("121212-222N")); + assertEquals("From: HetuTarkistus line: 48", null, hetut.tarkista("121212-231Y")); + assertEquals("From: HetuTarkistus line: 49", null, hetut.tarkista("311212-2317")); + } // Generated by ComTest END + + + // Generated by ComTest BEGIN + /** testHetunTarkistusMerkki86 */ + @Test + public void testHetunTarkistusMerkki86() { // HetuTarkistus: 86 + assertEquals("From: HetuTarkistus line: 87", 'N', hetunTarkistusMerkki("121212-222")); + assertEquals("From: HetuTarkistus line: 88", 'N', hetunTarkistusMerkki("121212-222S")); + assertEquals("From: HetuTarkistus line: 89", 'N', hetunTarkistusMerkki("121212-222N")); + assertEquals("From: HetuTarkistus line: 90", 'Y', hetunTarkistusMerkki("121212-231Y")); + assertEquals("From: HetuTarkistus line: 91", '7', hetunTarkistusMerkki("311212-2317")); + assertEquals("From: HetuTarkistus line: 92", '7', hetunTarkistusMerkki("311212-2317XY")); // vaikka on liikaa merkkejä + assertEquals("From: HetuTarkistus line: 93", 'F', hetunTarkistusMerkki("999999-9999XY")); // vaikka on pvm väärin try { - assertEquals("From: HetuTarkistus line: 31", 'N', hetunTarkistusMerkki("12121A-222S")); - fail("HetuTarkistus: 31 Did not throw NumberFormatException"); + assertEquals("From: HetuTarkistus line: 94", 'N', hetunTarkistusMerkki("12121A-222S")); + fail("HetuTarkistus: 94 Did not throw NumberFormatException"); } catch(NumberFormatException _e_){ _e_.getMessage(); } try { - assertEquals("From: HetuTarkistus line: 32", 'N', hetunTarkistusMerkki("12121A-22")); - fail("HetuTarkistus: 32 Did not throw StringIndexOutOfBoundsException"); + assertEquals("From: HetuTarkistus line: 95", 'N', hetunTarkistusMerkki("12121A-22")); + fail("HetuTarkistus: 95 Did not throw StringIndexOutOfBoundsException"); } catch(StringIndexOutOfBoundsException _e_){ _e_.getMessage(); } try { - assertEquals("From: HetuTarkistus line: 33", 'N', hetunTarkistusMerkki("121")); - fail("HetuTarkistus: 33 Did not throw StringIndexOutOfBoundsException"); + assertEquals("From: HetuTarkistus line: 96", 'N', hetunTarkistusMerkki("121")); + fail("HetuTarkistus: 96 Did not throw StringIndexOutOfBoundsException"); } catch(StringIndexOutOfBoundsException _e_){ _e_.getMessage(); } } // Generated by ComTest END + + + // Generated by ComTest BEGIN + /** testGetAvain136 */ + @Test + public void testGetAvain136() { // HetuTarkistus: 136 + assertEquals("From: HetuTarkistus line: 137", "0030201+111L", getAvain("010203+111L")); + assertEquals("From: HetuTarkistus line: 138", "1030201-111L", getAvain("010203-111L")); + assertEquals("From: HetuTarkistus line: 139", "2030201A111L", getAvain("010203A111L")); + } // Generated by ComTest END } \ No newline at end of file diff --git a/luennot/live23/src/kerho/Jasen.java b/luennot/live23/src/kerho/Jasen.java index 3c5d38b1c212ec972358ff352c925f13e30bc1e0..7c1d2ff9c29b9078254e59d1187680f91bf61b8b 100644 --- a/luennot/live23/src/kerho/Jasen.java +++ b/luennot/live23/src/kerho/Jasen.java @@ -48,7 +48,7 @@ public class Jasen implements Tietue, Cloneable { @Override public int compare(Jasen jasen1, Jasen jasen2) { - return jasen1.anna(k).compareTo(jasen2.anna(k)); + return jasen1.getAvain(k).compareTo(jasen2.getAvain(k)); } } @@ -111,7 +111,39 @@ public class Jasen implements Tietue, Cloneable { default: return "Äääliö"; } } - + + + /** + * Antaa k:n kentän sisällön merkkijonona. Tavoite: + * + * Hetun tapauksessa + * 311201 => 011231 + * 121299 => 991212 + * Jäsenmaksun tapaukssa + * 11.00 => 000011.00 + * 9.00 => 000009.00 + * @param k monenenko kentän sisältö palautetaan + * @return kentän sisältö merkkijonona + */ + public String getAvain(int k) { + switch ( k ) { + case 0: return "" + tunnusNro; + case 1: return "" + nimi.toUpperCase(); + case 2: return "" + HetuTarkistus.getAvain(hetu); // vaihda vuosi ja pvm keskenään + case 3: return "" + katuosoite; + case 4: return "" + postinumero; + case 5: return "" + postiosoite; + case 6: return "" + kotipuhelin; + case 7: return "" + tyopuhelin; + case 8: return "" + autopuhelin; + case 9: return "" + String.format("%4d", liittymisvuosi); + case 10: return "" + jmaksu; + case 11: return "" + maksu; + case 12: return "" + lisatietoja; + default: return "Äääliö"; + } + } + /** * Asettaa nimen ja palautat virheen