| Kerho.java |
1 package kerho;
2
3 import java.util.Iterator;
4
5 /**
6 * Kerho-luokka, joka huolehtii jäsenistöstä. Pääosin kaikki metodit
7 * ovat vain "välittäjämetodeja" jäsenistöön.
8 *
9 * @author Vesa Lappalainen
10 * @version 1.0, 09.02.2003
11 * @version 1.1, 23.02.2003
12 * @version 1.2, 07.01.2008 / testit
13 */
14 public class Kerho implements Iterable<Jasen> {
15 private final Jasenet jasenet = new Jasenet();
16 private final Harrastukset harrastukset = new Harrastukset();
17
18
19 /**
20 * Palauttaa kerhon nimen
21 * @return kerhon nimi
22 */
23 public String getNimi() { return jasenet.getKokoNimi(); }
24
25
26 /**
27 * Palautaa kerhon jäsenmäärän
28 * @return jäsenmäärä
29 */
30 public int getJasenia() { return jasenet.getLkm(); }
31
32
33 /**
34 * Poistaa jäsenistöstä ja harrasteista ne joilla on nro. Kesken.
35 * @param nro viitenumero, jonka mukaan poistetaan
36 * @return montako jäsentä poistettiin
37 */
38 public int poista(int nro) { return 0; }
39
40
41 /**
42 * Tekee varakopion kerhosta
43 * @param bakTark tarkennin varakopioille
44 * @return onnistuiko kopioiden tekeminen
45 */
46 public boolean teeBak(String bakTark) { return jasenet.teeBak(bakTark); }
47
48
49 /**
50 * Palauttaa tiedoston nimen
51 * @return tiedoston nimi
52 */
53 public String getTiedostonNimi() { return jasenet.getTiedostonNimi();}
54
55
56 /**
57 * Palauttaa varkopion nimen
58 * @return varakopion nimi
59 */
60 public String getBakNimi() { return jasenet.getBakNimi(); }
61
62
63 /**
64 * Lisää kerhoon uuden jäsenen
65 * @param jasen
66 * @throws SailoException
67 * @example
68 * <pre name="test">
69 * #THROWS SailoException
70 * #PACKAGEIMPORT
71 * #import java.util.*;
72 *
73 * Kerho kerho = new Kerho();
74 * Jasen aku1 = new Jasen(), aku2 = new Jasen();
75 * kerho.getJasenia() === 0;
76 * kerho.lisaa(aku1); kerho.getJasenia() === 1;
77 * kerho.lisaa(aku2); kerho.getJasenia() === 2;
78 * kerho.lisaa(aku1); kerho.getJasenia() === 3;
79 *
80 * Iterator<Jasen> i=kerho.iterator();
81 * i.next() == aku1 === true;
82 * i.next() == aku2 === true;
83 * i.next() == aku1 === true;
84 * i.next(); #THROWS NoSuchElementException
85 *
86 * kerho.lisaa(aku1); kerho.getJasenia() === 4;
87 * kerho.lisaa(aku1); kerho.getJasenia() === 5;
88 * kerho.lisaa(aku1); #THROWS SailoException
89 * </pre>
90 *
91 */
92 public void lisaa(Jasen jasen) throws SailoException {
93 jasenet.lisaa(jasen);
94 }
95
96
97 /**
98 * Listään uusi harrastus kerhoon
99 * @param har
100 */
101 public void lisaa(Harrastus har) {
102 harrastukset.lisaa(har);
103 }
104
105
106 /**
107 * Kaikien jäsenten iteraattori
108 * @return jäseniteraattori
109 */
110 public Iterator<Jasen> iterator() {
111 return jasenIterator();
112 }
113
114
115 /**
116 * Kaikien jäsenten iteraattori
117 * @return jäseniteraattori
118 */
119 public Iterator<Jasen> jasenIterator() {
120 return jasenet.iterator();
121 }
122
123
124 /**
125 * Kaikkien harrastusten iteraattori
126 * @return harrastusiteraattori
127 */
128 public Iterator<Harrastus> harrastusIterator() {
129 return harrastukset.iterator();
130 }
131
132
133 /**
134 * Tietyn jäsenen iteraattori
135 * @param jid jäsenen viitenumero
136 * @return harrastusiteraattori yhdelle jäsenelle
137 */
138 public Iterator<Harrastus> harrastusIterator(int jid) {
139 return harrastukset.iterator(jid);
140 }
141
142
143 /**
144 * Palauttaa i:n jäsenen
145 * @param i monesko jäsen palautetaan
146 * @return viite i:teen jäseneen
147 * @throws IndexOutOfBoundsException jos i väärin
148 * @deprecated
149 */
150 @Deprecated
151 public Jasen annaJasen(int i) throws IndexOutOfBoundsException {
152 return jasenet.anna(i);
153 }
154
155 /**
156 * Lukee kerhon tiedot tiedostosta
157 * @param nimi jota käyteään lukemisessa
158 * @throws SailoException jos lukeminen epäonnistuu
159 */
160 public void lueTiedostosta(String nimi) throws SailoException {
161 jasenet.lueTiedostosta(nimi);
162 }
163
164
165 /**
166 * Tallettaa kerhon tiedot tiedostoon
167 * @throws SailoException jos tallettamisessa ongelmia
168 */
169 public void talleta() throws SailoException {
170 jasenet.talleta();
171 }
172
173
174 /**
175 * Testiohjelma kerhosta
176 * @param args ei käytössä
177 */
178 public static void main(String args[]) {
179 Kerho kerho = new Kerho();
180
181 try {
182 kerho.lueTiedostosta("kelmit");
183
184 Jasen aku = new Jasen(), aku2 = new Jasen();
185 aku.rekisteroi(); aku.vastaaAkuAnkka();
186 aku2.rekisteroi(); aku2.vastaaAkuAnkka();
187
188 kerho.lisaa(aku);
189 kerho.lisaa(aku2);
190
191 System.out.println("============= Kerhon testi =================");
192
193 for (int i=0; i<kerho.getJasenia(); i++) {
194 Jasen jasen = kerho.annaJasen(i);
195 System.out.println("Jäsen nro: " + i);
196 jasen.tulosta(System.out);
197 }
198
199 } catch ( SailoException ex ) {
200 System.out.println(ex.getMessage());
201 }
202 }
203
204
205 }
206
207
208