| 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