PohjaTietue.java |
1 package kanta; 2 3 4 import kanta.Kentta; 5 import kanta.PerusTietue; 6 7 /** 8 * PohjaTietue joka osaa mm. itse huolehtia tunnus_nro:staan. 9 * Jos tätä peritään, niin kaikilla perityillä on juokseva 10 * id-numero keskenään. 11 * 12 * Voidaan käyttää myös suoraan luomalla 13 * kenttätaulukko ennen olion luomista, ks, muodostajan esimerkki. 14 * Tällöin taulukko pitää muistaa luoda jokaista luotavaa tietuetta kohti 15 * erikseen. 16 * 17 * @author Vesa Lappalainen 18 * @version 1.0, 22.02.2003 19 * @version 1.1, 23.02.2012 - tietueena 20 * @example 21 * <pre name="testJAVA"> 22 * public static class Harrastus extends PohjaTietue { 23 * public Harrastus() { 24 * super(new Kentta[]{ 25 * new IntKentta("id"), 26 * new IntKentta("jäsenId"), 27 * new JonoKentta("ala"), 28 * new IntKentta("aloitusvuosi"), 29 * new IntKentta("h/vko") 30 * },2); 31 * } 32 * public int getJasenNro() { return ((IntKentta)getKentta(1)).getValue(); } 33 * } 34 * </pre> 35 * 36 * @example 37 * <pre name="test_getOtsikot"> 38 * #import java.util.Arrays; 39 * // getOtsikot() 40 * Harrastus har = new Harrastus(); 41 * Arrays.toString(har.getOtsikot()) =R= "\\[ala, aloitusvuosi, h/vko.*"; 42 * </pre> 43 * 44 * @example 45 * <pre name="test_anna"> 46 * // anna(int) 47 * Harrastus har = new Harrastus(); 48 * har.parse(" 2 | 10 | Kalastus | 1949 | 22 t "); 49 * har.anna(0) === "2"; 50 * har.anna(1) === "10"; 51 * har.anna(2) === "Kalastus"; 52 * har.anna(3) === "1949"; 53 * har.anna(4) === "22"; 54 * </pre> 55 * 56 * @example 57 * <pre name="test_aseta"> 58 * // aseta(int,String) 59 * Harrastus har = new Harrastus(); 60 * har.aseta(3,"kissa") === "aloitusvuosi: Ei kokonaisluku (kissa)"; 61 * har.aseta(3,"1940") === null; 62 * har.aseta(4,"kissa") === "h/vko: Ei kokonaisluku (kissa)"; 63 * har.aseta(4,"20") === null; 64 * </pre> 65 * 66 * @example 67 * <pre name="test_rekisteroi"> 68 * // rekisteroi() 69 * Harrastus pitsi1 = new Harrastus(); 70 * pitsi1.getTunnusNro() === 0; 71 * pitsi1.rekisteroi(); 72 * Harrastus pitsi2 = new Harrastus(); 73 * pitsi2.rekisteroi(); 74 * int n1 = pitsi1.getTunnusNro(); 75 * int n2 = pitsi2.getTunnusNro(); 76 * n1 === n2-1; 77 * </pre> 78 * 79 * @example 80 * <pre name="test_parse"> 81 * // parse() 82 * Harrastus harrastus = new Harrastus(); 83 * harrastus.parse(" 2 | 10 | Kalastus | 1949 | 22 t "); 84 * harrastus.getJasenNro() === 10; 85 * harrastus.toString() =R= "2\\|10\\|Kalastus\\|1949\\|22.*"; 86 * 87 * harrastus.rekisteroi(); 88 * int n = harrastus.getTunnusNro(); 89 * harrastus.parse(""+(n+20)); 90 * harrastus.rekisteroi(); 91 * harrastus.getTunnusNro() === n+20+1; 92 * harrastus.toString() =R= "" + (n+20+1) + "\\|10\\|\\|1949\\|22.*"; 93 * </pre> 94 */ 95 public class PohjaTietue extends PerusTietue { 96 /** 97 */ 98 private Kentta kentat[] = null; 99 int eka; 100 101 private static int seuraavaNro = 1; 102 103 104 @Override 105 public Kentta[] getKentat() { 106 return kentat; 107 } 108 109 110 @Override 111 protected void setKentat(Kentta[] uudetKentat) { 112 kentat = uudetKentat; 113 } 114 115 116 /** 117 * @return seuraava numero joka tullaan antamaan rekisteröinnissä 118 * @example 119 * <pre name="test"> 120 * Harrastus harrastus = new Harrastus(); 121 * harrastus.parse(" 2 | 10 | Kalastus | 1949 | 22 t "); 122 * harrastus.rekisteroi(); 123 * harrastus.getSeuraavaNro() === harrastus.getTunnusNro()+1; 124 * </pre> 125 */ 126 @Override 127 public int getSeuraavaNro() { 128 return seuraavaNro; 129 } 130 131 132 @Override 133 protected void setSeuraavaNro(int i) { 134 seuraavaNro = i; 135 } 136 137 138 /** 139 * Alustetaan pohjatietue uusilla kentillä 140 * @param kentat kenttätaulukko, jota jatkossa käytetään 141 * @param eka mikä on ekan kentän indeksi 142 * @example 143 * <pre name="test"> 144 * #THROWS CloneNotSupportedException 145 * Kentta kentat[] = { 146 * new IntKentta("id"), 147 * new IntKentta("jäsenId"), 148 * new JonoKentta("ala"), 149 * new IntKentta("aloitusvuosi"), 150 * new IntKentta("h/vko") 151 * }; 152 * PohjaTietue har = new PohjaTietue(kentat,2); 153 * har.getKysymys(2) === "ala"; 154 * har.parse(" 2 | 10 | Kalastus | 1949 | 22 t "); 155 * Tietue kopio = har.clone(); 156 * kopio.toString() === har.toString(); 157 * har.parse(" 1 | 11 | Uinti | 1949 | 22 t "); 158 * kopio.toString().equals(har.toString()) === false; 159 * kopio instanceof PohjaTietue === true; 160 * </pre> 161 */ 162 public PohjaTietue(Kentta[] kentat, int eka) { 163 this.kentat = kentat; 164 this.eka = eka; 165 } 166 167 168 /** 169 * @return ensimmäinen käyttäjän syötettävän kentän indeksi 170 * @example 171 * <pre name="test"> 172 * Harrastus har = new Harrastus(); 173 * har.ekaKentta() === 2; 174 * </pre> 175 */ 176 @Override 177 public int ekaKentta() { 178 return eka; 179 } 180 181 182 /** 183 * Tehdään identtinen klooni tietueesta 184 * @return kloonattu tietue 185 * @example 186 * <pre name="test"> 187 * #THROWS CloneNotSupportedException 188 * Harrastus har = new Harrastus(); 189 * har.parse(" 2 | 10 | Kalastus | 1949 | 22 t "); 190 * Tietue kopio = har.clone(); 191 * kopio.toString() === har.toString(); 192 * har.parse(" 1 | 11 | Uinti | 1949 | 22 t "); 193 * kopio.toString().equals(har.toString()) === false; 194 * kopio instanceof Harrastus === true; 195 * </pre> 196 */ 197 @Override 198 public PohjaTietue clone() throws CloneNotSupportedException { 199 return (PohjaTietue)super.clone(); 200 } 201 202 203 /** 204 * Testiohjelma pohjatietueelle 205 * @param args ei käytössä 206 */ 207 public static void main(String[] args) { 208 // 209 } 210 211 } 212