Harrastus.java |
1 package kerho; 2 3 4 import kanta.IntKentta; 5 import kanta.JonoKentta; 6 import kanta.Kentta; 7 import kanta.PerusTietue; 8 import kanta.RegExpTarkistaja; 9 10 import static kanta.HetuTarkistus.rand; 11 12 /** 13 * Harrastus joka osaa mm. itse huolehtia tunnus_nro:staan. 14 * 15 * @author Vesa Lappalainen 16 * @version 1.0, 22.02.2003 17 * @version 1.1, 23.02.2012 - tietueena 18 * 19 * @example 20 * <pre name="test_getOtsikot"> 21 * // getOtsikot() 22 * #import java.util.Arrays; 23 * Harrastus har = new Harrastus(); 24 * Arrays.toString(har.getOtsikot()) =R= "\\[ala, aloitusvuosi, h/vko.*"; 25 * </pre> 26 * 27 * @example 28 * <pre name="test_anna"> 29 * // anna(int) 30 * Harrastus har = new Harrastus(); 31 * har.parse(" 2 | 10 | Kalastus | 1949 | 22 t "); 32 * har.anna(0) === "2"; 33 * har.anna(1) === "10"; 34 * har.anna(2) === "Kalastus"; 35 * har.anna(3) === "1949"; 36 * har.anna(4) === "22"; 37 * </pre> 38 * 39 * @example 40 * <pre name="test_aseta"> 41 * // aseta(int) 42 * Harrastus har = new Harrastus(); 43 * har.aseta(3,"kissa") === "aloitusvuosi: Ei kokonaisluku (kissa)"; 44 * har.aseta(3,"1940") === null; 45 * har.aseta(4,"kissa") === "h/vko: Ei kokonaisluku (kissa)"; 46 * har.aseta(4,"20") === null; 47 * </pre> 48 * 49 * @example 50 * <pre name="test_rekisteroi"> 51 * // rekisteroi() 52 * Harrastus pitsi1 = new Harrastus(); 53 * pitsi1.getTunnusNro() === 0; 54 * pitsi1.rekisteroi(); 55 * Harrastus pitsi2 = new Harrastus(); 56 * pitsi2.rekisteroi(); 57 * int n1 = pitsi1.getTunnusNro(); 58 * int n2 = pitsi2.getTunnusNro(); 59 * n1 === n2-1; 60 * </pre> 61 * 62 * 63 * @example 64 * <pre name="test_parse"> 65 * // parse(String) 66 * Harrastus harrastus = new Harrastus(); 67 * harrastus.parse(" 2 | 10 | Kalastus | 1949 | 22 t "); 68 * harrastus.getJasenNro() === 10; 69 * harrastus.toString() =R= "2\\|10\\|Kalastus\\|1949\\|22.*"; 70 * 71 * harrastus.rekisteroi(); 72 * int n = harrastus.getTunnusNro(); 73 * harrastus.parse(""+(n+20)); 74 * harrastus.rekisteroi(); 75 * harrastus.getTunnusNro() === n+20+1; 76 * harrastus.toString() =R= "" + (n+20+1) + "\\|10\\|\\|1949\\|22.*"; 77 * </pre> 78 */ 79 public class Harrastus extends PerusTietue { 80 private Kentta kentat[] = { 81 new IntKentta("id"), 82 new IntKentta("jäsenId"), 83 new JonoKentta("ala", new RegExpTarkistaja(".+","Ala annettava")), 84 new IntKentta("aloitusvuosi"), 85 new IntKentta("h/vko") 86 // new RahaKentta("kulut") 87 }; 88 89 private static int seuraavaNro = 1; 90 91 92 @Override 93 public Kentta[] getKentat() { 94 return kentat; 95 } 96 97 98 @Override 99 protected void setKentat(Kentta[] uudetKentat) { 100 kentat = uudetKentat; 101 } 102 103 104 @Override 105 public int getSeuraavaNro() { 106 return seuraavaNro; 107 } 108 109 110 @Override 111 protected void setSeuraavaNro(int i) { 112 seuraavaNro = i; 113 } 114 115 116 /** 117 * Alustetaan harrastus. Toistaiseksi ei tarvitse tehdä mitään 118 */ 119 public Harrastus() { 120 // Vielä ei tarvita mitään 121 } 122 123 124 private IntKentta getJasenNroKentta() { 125 return (IntKentta)(kentat[1]); 126 } 127 128 129 /** 130 * Palautetaan mille jäsenelle harrastus kuuluu 131 * @return jäsenen id 132 * @example 133 * <pre name="test"> 134 * Harrastus har = new Harrastus(5); 135 * har.getJasenNro() === 5; 136 * </pre> 137 */ 138 public int getJasenNro() { 139 return getJasenNroKentta().getValue(); 140 } 141 142 143 /** 144 * Alustetaan tietyn jäsenen harrastus. 145 * @param jasenNro jäsenen viitenumero 146 * @example 147 * <pre name="test"> 148 * Harrastus har = new Harrastus(5); 149 * har.getJasenNro() === 5; 150 * </pre> 151 */ 152 public Harrastus(int jasenNro) { 153 getJasenNroKentta().setValue(jasenNro); 154 } 155 156 157 /** 158 * @return ensimmäinen käyttäjän syötettävän kentän indeksi 159 * @example 160 * <pre name="test"> 161 * Harrastus har = new Harrastus(5); 162 * har.ekaKentta() === 2; 163 * </pre> 164 */ 165 @Override 166 public int ekaKentta() { 167 return 2; 168 } 169 170 171 172 /** 173 * Tehdään identtinen klooni harrastuksesta 174 * @return kloonattu harrastus 175 * @example 176 * <pre name="test"> 177 * #THROWS CloneNotSupportedException 178 * Harrastus har = new Harrastus(); 179 * har.parse(" 2 | 10 | Kalastus | 1949 | 22 t "); 180 * Harrastus kopio = har.clone(); 181 * kopio.toString() === har.toString(); 182 * har.parse(" 1 | 11 | Uinti | 1949 | 22 t "); 183 * kopio.toString().equals(har.toString()) === false; 184 * kopio instanceof Harrastus === true; 185 * </pre> 186 */ 187 @Override 188 public Harrastus clone() throws CloneNotSupportedException { 189 return (Harrastus)super.clone(); 190 } 191 192 193 /** 194 * Apumetodi, jolla saadaan täytettyä testiarvot Harrastukselle. 195 * Aloitusvuosi arvotaan, jotta kahdella harrastuksella ei olisi 196 * samoja tietoja. 197 * @param nro viite henkilöön, jonka harrastuksesta on kyse 198 */ 199 public void vastaaPitsinNyplays(int nro) { 200 aseta(1,""+nro); 201 aseta(2,"Pitsin nypläys"); 202 aseta(3,""+ rand(1900, 2000)); 203 aseta(4,""+rand(0, 60)); 204 } 205 206 207 /** 208 * Testiohjelma Harrastukselle. 209 * @param args ei käytössä 210 */ 211 public static void main(String[] args) { 212 Harrastus har = new Harrastus(); 213 har.vastaaPitsinNyplays(2); 214 har.tulosta(System.out); 215 } 216 217 } 218