Skip to content
Snippets Groups Projects
Commit b3e1415f authored by Vesa Lappalainen's avatar Vesa Lappalainen :bicyclist:
Browse files

Osaa lajitella avaimen perusteella muidenkin kenttien mukaan

parent 41b68b1c
No related branches found
No related tags found
No related merge requests found
...@@ -153,6 +153,7 @@ public class KerhoGUIController implements Initializable { ...@@ -153,6 +153,7 @@ public class KerhoGUIController implements Initializable {
for (int k=apujasen.ekaKentta(); k<apujasen.getKenttia(); k++) { for (int k=apujasen.ekaKentta(); k<apujasen.getKenttia(); k++) {
cbKentat.add(apujasen.getKysymys(k)); cbKentat.add(apujasen.getKysymys(k));
} }
cbKentat.setSelectedIndex(0);
chooserJasenet.clear(); chooserJasenet.clear();
......
...@@ -128,5 +128,30 @@ public class HetuTarkistus { ...@@ -128,5 +128,30 @@ public class HetuTarkistus {
String.format("%03d",rand(1,1000)); String.format("%03d",rand(1,1000));
return apuhetu + hetunTarkistusMerkki(apuhetu); 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();
}
} }
package kanta.test; package kanta.test;
// Generated by ComTest BEGIN // Generated by ComTest BEGIN
import kanta.*;
import static org.junit.Assert.*; import static org.junit.Assert.*;
import org.junit.*; import org.junit.*;
import static kanta.HetuTarkistus.*; import static kanta.HetuTarkistus.*;
...@@ -7,7 +8,7 @@ import static kanta.HetuTarkistus.*; ...@@ -7,7 +8,7 @@ import static kanta.HetuTarkistus.*;
/** /**
* Test class made by ComTest * 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 { public class HetuTarkistusTest {
...@@ -15,27 +16,64 @@ public class HetuTarkistusTest { ...@@ -15,27 +16,64 @@ public class HetuTarkistusTest {
// Generated by ComTest BEGIN // Generated by ComTest BEGIN
/** testHetunTarkistusMerkki23 */ /** testTarkista28 */
@Test @Test
public void testHetunTarkistusMerkki23() { // HetuTarkistus: 23 public void testTarkista28() { // HetuTarkistus: 28
assertEquals("From: HetuTarkistus line: 24", 'N', hetunTarkistusMerkki("121212-222")); HetuTarkistus hetut = new HetuTarkistus();
assertEquals("From: HetuTarkistus line: 25", 'N', hetunTarkistusMerkki("121212-222S")); assertEquals("From: HetuTarkistus line: 31", "Hetu liian lyhyt", hetut.tarkista("12121"));
assertEquals("From: HetuTarkistus line: 26", 'N', hetunTarkistusMerkki("121212-222N")); assertEquals("From: HetuTarkistus line: 32", "Hetu liian lyhyt", hetut.tarkista("k"));
assertEquals("From: HetuTarkistus line: 27", 'Y', hetunTarkistusMerkki("121212-231Y")); assertEquals("From: HetuTarkistus line: 33", "Alkuosassa saa olla vain numeroita", hetut.tarkista("12121k"));
assertEquals("From: HetuTarkistus line: 28", '7', hetunTarkistusMerkki("311212-2317")); assertEquals("From: HetuTarkistus line: 34", null, hetut.tarkista("121212")); // sallitaan pelkkä syntymäaika
assertEquals("From: HetuTarkistus line: 29", '7', hetunTarkistusMerkki("311212-2317XY")); // vaikka on liikaa merkkejä assertEquals("From: HetuTarkistus line: 35", "Liian pieni päivämäärä", hetut.tarkista("001212"));
assertEquals("From: HetuTarkistus line: 30", 'F', hetunTarkistusMerkki("999999-9999XY")); // vaikka on pvm väärin 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 { try {
assertEquals("From: HetuTarkistus line: 31", 'N', hetunTarkistusMerkki("12121A-222S")); assertEquals("From: HetuTarkistus line: 94", 'N', hetunTarkistusMerkki("12121A-222S"));
fail("HetuTarkistus: 31 Did not throw NumberFormatException"); fail("HetuTarkistus: 94 Did not throw NumberFormatException");
} catch(NumberFormatException _e_){ _e_.getMessage(); } } catch(NumberFormatException _e_){ _e_.getMessage(); }
try { try {
assertEquals("From: HetuTarkistus line: 32", 'N', hetunTarkistusMerkki("12121A-22")); assertEquals("From: HetuTarkistus line: 95", 'N', hetunTarkistusMerkki("12121A-22"));
fail("HetuTarkistus: 32 Did not throw StringIndexOutOfBoundsException"); fail("HetuTarkistus: 95 Did not throw StringIndexOutOfBoundsException");
} catch(StringIndexOutOfBoundsException _e_){ _e_.getMessage(); } } catch(StringIndexOutOfBoundsException _e_){ _e_.getMessage(); }
try { try {
assertEquals("From: HetuTarkistus line: 33", 'N', hetunTarkistusMerkki("121")); assertEquals("From: HetuTarkistus line: 96", 'N', hetunTarkistusMerkki("121"));
fail("HetuTarkistus: 33 Did not throw StringIndexOutOfBoundsException"); fail("HetuTarkistus: 96 Did not throw StringIndexOutOfBoundsException");
} catch(StringIndexOutOfBoundsException _e_){ _e_.getMessage(); } } catch(StringIndexOutOfBoundsException _e_){ _e_.getMessage(); }
} // Generated by ComTest END } // 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
...@@ -48,7 +48,7 @@ public class Jasen implements Tietue, Cloneable { ...@@ -48,7 +48,7 @@ public class Jasen implements Tietue, Cloneable {
@Override @Override
public int compare(Jasen jasen1, Jasen jasen2) { 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 { ...@@ -111,7 +111,39 @@ public class Jasen implements Tietue, Cloneable {
default: return "Äääliö"; 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 * Asettaa nimen ja palautat virheen
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment