| Harrastus.java |
1 package kerho;
2
3 import java.io.*;
4
5 import fi.jyu.mit.ohj2.Mjonot;
6
7 /**
8 * Harrastus joka osaa mm. itse huolehtia tunnus_nro:staan.
9 *
10 * @author Vesa Lappalainen
11 * @version 1.0, 22.02.2003
12 */
13 public class Harrastus {
14 private int tunnusnro;
15 private int jasenNro;
16 private String ala;
17 private int aloitusvuosi;
18 private int tuntiaViikossa;
19
20 private static int seuraavaNro = 1;
21
22 /**
23 * Alustetaan harrastus. Toistaiseksi ei tarvitse tehdä mitään
24 */
25 public Harrastus() {
26 // Vielä ei tarvita mitään
27 }
28
29
30 /**
31 * Alustetaan tietyn jäsenen harrastus.
32 * @param jasenNro jäsenen viitenumero
33 */
34 public Harrastus(int jasenNro) {
35 this.jasenNro = jasenNro;
36 }
37
38
39 /**
40 * Apumetodi, jolla saadaan täytettyä testiarvot Harrastukselle.
41 * Aloitusvuosi arvotaan, jotta kahdella harrastuksella ei olisi
42 * samoja tietoja.
43 * @param nro viite henkilöön, jonka harrastuksesta on kyse
44 */
45 public void vastaaPitsinNyplays(int nro) {
46 jasenNro = nro;
47 ala = "Pitsin nypläys";
48 aloitusvuosi = Jasen.rand(1900,2000);
49 tuntiaViikossa = Jasen.rand(0,60);
50 }
51
52
53 /**
54 * Tulostetaan harrastuksen tiedot
55 * @param out tietovirta johon tulostetaan
56 */
57 public void tulosta(PrintStream out) {
58 out.println(ala + " " + aloitusvuosi + " " + tuntiaViikossa);
59 }
60
61
62 /**
63 * Tulostetaan henkilön tiedot
64 * @param os tietovirta johon tulostetaan
65 */
66 public void tulosta(OutputStream os) {
67 tulosta(new PrintStream(os));
68 }
69
70 /**
71 * Antaa harrastukselle seuraavan rekisterinumeron.
72 * @return harrastuksen uusi tunnus_nro
73 * @example
74 * <pre name="test">
75 * Harrastus pitsi1 = new Harrastus();
76 * pitsi1.getTunnusnro() === 0;
77 * pitsi1.rekisteroi();
78 * Harrastus pitsi2 = new Harrastus();
79 * pitsi2.rekisteroi();
80 * int n1 = pitsi1.getTunnusnro();
81 * int n2 = pitsi2.getTunnusnro();
82 * n1 === n2-1;
83 * </pre>
84 */
85 public int rekisteroi() {
86 tunnusnro = seuraavaNro;
87 seuraavaNro++;
88 return tunnusnro;
89 }
90
91
92 /**
93 * Palautetaan harrastuksen oma id
94 * @return harrastuksen id
95 */
96 public int getTunnusnro() { return tunnusnro; }
97
98
99 /**
100 * Palautetaan mille jäsenelle harrastus kuuluu
101 * @return jäsenen id
102 */
103 public int getJasenNro() { return jasenNro; }
104
105
106 /**
107 * Palauttaa harrastuksen tiedot merkkijonona jonka voi tallentaa tiedostoon.
108 * @return harrastus tolppaeroteltuna merkkijonona
109 */
110 @Override
111 public String toString() {
112 return "" +
113 tunnusnro + "|" +
114 jasenNro + "|" +
115 ala + "|" +
116 aloitusvuosi + "|" +
117 tuntiaViikossa;
118 }
119
120
121 /**
122 * Selvitää harrastuksen tiedot | erotellusta merkkijonosta.
123 * Pitää huolen että seuraavaNro on suurempi kuin tuleva tunnusnro.
124 * @param rivi josta harrastuksen tiedot otetaan
125 * @example
126 * <pre name="test">
127 * Harrastus harrastus = new Harrastus();
128 * harrastus.parse(" 2 | 10 | Kalastus | 1949 | 22 t ");
129 * harrastus.getJasenNro() === 10;
130 * harrastus.toString() === "2|10|Kalastus|1949|22";
131 *
132 * harrastus.rekisteroi();
133 * int n = harrastus.getTunnusnro();
134 * harrastus.parse(""+(n+20));
135 * harrastus.rekisteroi();
136 * harrastus.getTunnusnro() === n+20+1;
137 * harrastus.toString() === "" + (n+20+1) + "|10|Kalastus|1949|22";
138 * </pre>
139 */
140 public void parse(String rivi) {
141 StringBuffer sb = new StringBuffer(rivi);
142 tunnusnro = Mjonot.erota(sb,'|',tunnusnro);
143 if ( tunnusnro >= seuraavaNro ) seuraavaNro = tunnusnro + 1;
144 jasenNro = Mjonot.erota(sb,'|',jasenNro);
145 ala = Mjonot.erota(sb,'|',ala);
146 aloitusvuosi = Mjonot.erota(sb,'|',aloitusvuosi);
147 tuntiaViikossa = Mjonot.erota(sb,'|',tuntiaViikossa);
148 }
149
150
151
152 /**
153 * Testiohjelma Harrastukselle.
154 * @param args ei käytössä
155 */
156 public static void main(String[] args) {
157 Harrastus har = new Harrastus();
158 har.vastaaPitsinNyplays(2);
159 har.tulosta(System.out);
160 }
161
162 }
163
164
165