kanta
Class HetuTarkistus

java.lang.Object
  extended by kanta.HetuTarkistus
All Implemented Interfaces:
Tarkistaja

public class HetuTarkistus
extends Object
implements Tarkistaja

Luokka henkilötunnuksen tarkistamiseksi

Version:
31.3.2008
Author:
vesal

Field Summary
static int[] KUUKAUDET
          Kuukausien maksimipituudet
static String TARKISTUSMERKIT
          Hetuun kelpaavat tarkistusmerkit järjestyksessä
 
Constructor Summary
HetuTarkistus()
           
 
Method Summary
static String arvoHetu()
          Arvotaan satunnainen henkilötunnus, joka täyttää hetun ehdot
static char hetunTarkistusMerkki(String hetu)
          Palauttaa mikä olisi hetun tarkistumerkki.
static int rand(int ala, int yla)
          Arvotaan satunnainen kokonaisluku välille [ala,yla]
 String tarkista(String hetu)
          Tarkistetaan hetu.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

TARKISTUSMERKIT

public static final String TARKISTUSMERKIT
Hetuun kelpaavat tarkistusmerkit järjestyksessä

See Also:
Constant Field Values

KUUKAUDET

public static int[] KUUKAUDET
Kuukausien maksimipituudet

Constructor Detail

HetuTarkistus

public HetuTarkistus()
Method Detail

tarkista

public String tarkista(String hetu)
Tarkistetaan hetu. Sallitaan myös muoto jossa vain syntymäaika.

Specified by:
tarkista in interface Tarkistaja
Parameters:
hetu - joka tutkitaan.
Returns:
null jos oikein, muuten virhettä kuvaava teksti TODO tarkistukset kuntoon myös karkausvuodesta.
Example:
 #PACKAGEIMPORT
 HetuTarkistus hetut = new HetuTarkistus();
 hetut.tarkista("12121")       === "Hetu liian lyhyt";
 hetut.tarkista("k")           === "Hetu liian lyhyt";
 hetut.tarkista("12121k")      === "Alkuosassa saa olla vain numeroita";
 hetut.tarkista("121212")      === null;   // sallitaan pelkkä syntymäaika
 hetut.tarkista("001212")      === "Liian pieni päivämäärä";
 hetut.tarkista("321212")      === "Liian suuri päivämäärä";
 hetut.tarkista("300212")      === "Liian suuri päivämäärä";
 hetut.tarkista("310412")      === "Liian suuri päivämäärä";
 hetut.tarkista("121312")      === "Liian suuri kuukausi";
 hetut.tarkista("120012")      === "Liian pieni kuukausi";
 hetut.tarkista("121212B222Q") === "Väärä erotinmerkki";
 hetut.tarkista("121212-2k2Q") === "Yksilöosassa kirjaimia";
 hetut.tarkista("121212-2")    === "Yksilöosa liian lyhyt";
 hetut.tarkista("121212-")     === "Yksilöosa liian lyhyt";
 hetut.tarkista("121212-12345")=== "Hetu liian pitkä";
 hetut.tarkista("121212-222S") === "Tarkistusmerkin kuuluisi olla N";
 hetut.tarkista("121212-222N") === null;
 hetut.tarkista("121212-231Y") === null;
 hetut.tarkista("311212-2317") === null;
 

hetunTarkistusMerkki

public static char hetunTarkistusMerkki(String hetu)
Palauttaa mikä olisi hetun tarkistumerkki. Tuotava parametrinä laillista muotoa oleva hetu, josta mahdollisesti tarkistumerkki puuttuu.

Parameters:
hetu - tutkittava hetu
Returns:
hetun tarkistusmerkki
Example:
    hetunTarkistusMerkki("121212-222")    === 'N';
    hetunTarkistusMerkki("121212-222S")   === 'N';
    hetunTarkistusMerkki("121212-222N")   === 'N';
    hetunTarkistusMerkki("121212-231Y")   === 'Y';
    hetunTarkistusMerkki("311212-2317")   === '7';
    hetunTarkistusMerkki("311212-2317XY") === '7'; // vaikka on liikaa merkkejä
    hetunTarkistusMerkki("999999-9999XY") === 'F'; // vaikka on pvm väärin
    hetunTarkistusMerkki("12121A-222S")   === 'N'; #THROWS NumberFormatException
    hetunTarkistusMerkki("12121A-22")     === 'N'; #THROWS StringIndexOutOfBoundsException
    hetunTarkistusMerkki("121")           === 'N'; #THROWS StringIndexOutOfBoundsException
 

rand

public static int rand(int ala,
                       int yla)
Arvotaan satunnainen kokonaisluku välille [ala,yla]

Parameters:
ala - arvonnan alaraja
yla - arvonnan yläraja
Returns:
satunnainen luku väliltä [ala,yla]

arvoHetu

public static String arvoHetu()
Arvotaan satunnainen henkilötunnus, joka täyttää hetun ehdot

Returns:
satunnainen laillinen henkilötunnus
Example:
    HetuTarkistus hetut = new HetuTarkistus();
    hetut.tarkista(arvoHetu()) === null;
    hetut.tarkista(arvoHetu()) === null;
    hetut.tarkista(arvoHetu()) === null;
    hetut.tarkista(arvoHetu()) === null;
    hetut.tarkista(arvoHetu()) === null;