| 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(PrintWriter out) {
58 out.println(ala + " " + aloitusvuosi + " " + tuntiaViikossa);
59 }
60
61
62 /**
63 * Tulostetaan harrastuksen tiedot
64 * @param os tietovirta johon tulostetaan
65 */
66 public void tulosta(OutputStream os) {
67 tulosta(new PrintStream(os));
68 }
69
70 /**
71 * Tulostetaan harrastuksen tiedot
72 * @param out tietovirta johon tulostetaan
73 */
74 public void tulosta(PrintStream out) {
75 tulosta(new PrintWriter(out,true)); // ilman autoflushia ei mitään tulostu!
76 }
77
78
79 /**
80 * Antaa harrastukselle seuraavan rekisterinumeron.
81 * @return harrastuksen uusi tunnus_nro
82 * @example
83 * <pre name="test">
84 * Harrastus pitsi1 = new Harrastus();
85 * pitsi1.getTunnusnro() === 0;
86 * pitsi1.rekisteroi();
87 * Harrastus pitsi2 = new Harrastus();
88 * pitsi2.rekisteroi();
89 * int n1 = pitsi1.getTunnusnro();
90 * int n2 = pitsi2.getTunnusnro();
91 * n1 === n2-1;
92 * </pre>
93 */
94 public int rekisteroi() {
95 tunnusnro = seuraavaNro;
96 seuraavaNro++;
97 return tunnusnro;
98 }
99
100
101 /**
102 * Palautetaan harrastuksen oma id
103 * @return harrastuksen id
104 */
105 public int getTunnusnro() { return tunnusnro; }
106
107
108 /**
109 * Palautetaan mille jäsenelle harrastus kuuluu
110 * @return jäsenen id
111 */
112 public int getJasenNro() { return jasenNro; }
113
114
115 /**
116 * Palauttaa harrastuksen tiedot merkkijonona jonka voi tallentaa tiedostoon.
117 * @return harrastus tolppaeroteltuna merkkijonona
118 * @example
119 * <pre name="test">
120 * Harrastus harrastus = new Harrastus();
121 * harrastus.parse(" 2 | 10 | Kalastus | 1949 | 22 t ");
122 * harrastus.toString() === "2|10|Kalastus|1949|22";
123 * </pre>
124 */
125 @Override
126 public String toString() {
127 return "" +
128 tunnusnro + "|" +
129 jasenNro + "|" +
130 ala + "|" +
131 aloitusvuosi + "|" +
132 tuntiaViikossa;
133 }
134
135
136 /**
137 * Selvitää harrastuksen tiedot | erotellusta merkkijonosta.
138 * Pitää huolen että seuraavaNro on suurempi kuin tuleva tunnusnro.
139 * @param rivi josta harrastuksen tiedot otetaan
140 * @example
141 * <pre name="test">
142 * Harrastus harrastus = new Harrastus();
143 * harrastus.parse(" 2 | 10 | Kalastus | 1949 | 22 t ");
144 * harrastus.getJasenNro() === 10;
145 * harrastus.toString() === "2|10|Kalastus|1949|22";
146 *
147 * harrastus.rekisteroi();
148 * int n = harrastus.getTunnusnro();
149 * harrastus.parse(""+(n+20));
150 * harrastus.rekisteroi();
151 * harrastus.getTunnusnro() === n+20+1;
152 * harrastus.toString() === "" + (n+20+1) + "|10|Kalastus|1949|22";
153 * </pre>
154 */
155 public void parse(String rivi) {
156 StringBuffer sb = new StringBuffer(rivi);
157 tunnusnro = Mjonot.erota(sb,'|',tunnusnro);
158 if ( tunnusnro >= seuraavaNro ) seuraavaNro = tunnusnro + 1;
159 jasenNro = Mjonot.erota(sb,'|',jasenNro);
160 ala = Mjonot.erota(sb,'|',ala);
161 aloitusvuosi = Mjonot.erota(sb,'|',aloitusvuosi);
162 tuntiaViikossa = Mjonot.erota(sb,'|',tuntiaViikossa);
163 }
164
165
166
167 /**
168 * Testiohjelma Harrastukselle.
169 * @param args ei käytössä
170 */
171 public static void main(String[] args) {
172 Harrastus har = new Harrastus();
173 har.vastaaPitsinNyplays(2);
174 har.tulosta(System.out);
175 }
176
177 }
178
179
180