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