1   package kerho;
2   
3   /**
4    * Kerho-luokka, joka huolehtii jäsenistöstä.  Pääosin kaikki metodit
5    * ovat vain "välittäjämetodeja" jäsenistöön.
6    *
7    * @author Vesa Lappalainen
8    * @version 1.0, 09.02.2003
9    * @version 1.1, 23.02.2003
10   * @version 1.2, 07.01.2008 / testit
11   */
12  public class Kerho {
13      private final Jasenet jasenet = new Jasenet();
14  
15  
16      /**
17       * Palautaa kerhon jäsenmäärän
18       * @return jäsenmäärä
19       */
20      public int getJasenia() {
21          return jasenet.getLkm();
22      }
23  
24  
25      /**
26       * Poistaa jäsenistöstä ja harrasteista ne joilla on nro. Kesken.
27       * @param nro viitenumero, jonka mukaan poistetaan
28       * @return montako jäsentä poistettiin
29       */
30      public int poista(@SuppressWarnings("unused") int nro) {
31          return 0;
32      }
33  
34  
35      /**
36       * Lisää kerhoon uuden jäsenen
37       * @param jasen lisättävä jäsen
38       * @throws SailoException jos lisäystä ei voida tehdä
39       * @example
40       * <pre name="test">
41       * #THROWS SailoException
42       * #PACKAGEIMPORT
43       * Kerho kerho = new Kerho();
44       * Jasen aku1 = new Jasen(), aku2 = new Jasen();
45       * aku1.rekisteroi(); aku2.rekisteroi();
46       * kerho.getJasenia() === 0;
47       * kerho.lisaa(aku1); kerho.getJasenia() === 1;
48       * kerho.lisaa(aku2); kerho.getJasenia() === 2;
49       * kerho.lisaa(aku1); kerho.getJasenia() === 3;
50       * kerho.getJasenia() === 3;
51       * kerho.annaJasen(0) === aku1;
52       * kerho.annaJasen(1) === aku2;
53       * kerho.annaJasen(2) === aku1;
54       * kerho.annaJasen(3) === aku1; #THROWS IndexOutOfBoundsException 
55       * kerho.lisaa(aku1); kerho.getJasenia() === 4;
56       * kerho.lisaa(aku1); kerho.getJasenia() === 5;
57       * kerho.lisaa(aku1);            #THROWS SailoException
58       * </pre>
59       * 
60       */
61      public void lisaa(Jasen jasen) throws SailoException {
62          jasenet.lisaa(jasen);
63      }
64  
65  
66      /**
67       * Palauttaa i:n jäsenen
68       * @param i monesko jäsen palautetaan
69       * @return viite i:teen jäseneen
70       * @throws IndexOutOfBoundsException jos i väärin
71       */
72      public Jasen annaJasen(int i) throws IndexOutOfBoundsException {
73          return jasenet.anna(i);
74      }
75  
76  
77      /**
78       * Lukee kerhon tiedot tiedostosta
79       * @param nimi jota käyteään lukemisessa
80       * @throws SailoException jos lukeminen epäonnistuu
81       */
82      public void lueTiedostosta(String nimi) throws SailoException {
83          jasenet.lueTiedostosta(nimi);
84      }
85  
86  
87      /**
88       * Tallettaa kerhon tiedot tiedostoon
89       * @throws SailoException jos tallettamisessa ongelmia
90       */
91      public void talleta() throws SailoException {
92          jasenet.talleta();
93      }
94  
95  
96      /**
97       * Testiohjelma kerhosta
98       * @param args ei käytössä
99       */
100     public static void main(String args[]) {
101         Kerho kerho = new Kerho();
102 
103         try {
104             kerho.lueTiedostosta("kelmit");
105 
106             Jasen aku = new Jasen(), aku2 = new Jasen();
107             aku.rekisteroi();
108             aku.vastaaAkuAnkka();
109             aku2.rekisteroi();
110             aku2.vastaaAkuAnkka();
111 
112             kerho.lisaa(aku);
113             kerho.lisaa(aku2);
114 
115             System.out.println("============= Kerhon testi =================");
116 
117             for (int i = 0; i < kerho.getJasenia(); i++) {
118                 Jasen jasen = kerho.annaJasen(i);
119                 System.out.println("Jäsen paikassa: " + i);
120                 jasen.tulosta(System.out);
121             }
122 
123         } catch (SailoException ex) {
124             System.out.println(ex.getMessage());
125         }
126     }
127 
128 }
129