1   package kerho;
2   
3   import java.util.*;
4   
5   import kanta.PerusTietueet;
6   import kerho.Harrastus;
7   
8   /**
9    * Kerhon harrastukset, joka osaa mm. lisätä uuden harrastuksen
10   *
11   * @author Vesa Lappalainen
12   * @version 1.0, 22.02.2003
13   * 
14   * @exmpale 
15   * <pre name="test_lisaa_poista">
16   * // lisaa(Harrastus), poista(Harrastus)
17   * #import java.io.File;
18   * #import kanta.SailoException;
19   *  Harrastukset harrasteet = new Harrastukset();
20   *  Harrastus pitsi21 = new Harrastus(); pitsi21.vastaaPitsinNyplays(2);
21   *  Harrastus pitsi11 = new Harrastus(); pitsi11.vastaaPitsinNyplays(1);
22   *  Harrastus pitsi22 = new Harrastus(); pitsi22.vastaaPitsinNyplays(2); 
23   *  Harrastus pitsi12 = new Harrastus(); pitsi12.vastaaPitsinNyplays(1); 
24   *  Harrastus pitsi23 = new Harrastus(); pitsi23.vastaaPitsinNyplays(2); 
25   *  harrasteet.lisaa(pitsi21);
26   *  harrasteet.lisaa(pitsi11);
27   *  harrasteet.lisaa(pitsi22);
28   *  harrasteet.lisaa(pitsi12);
29   *  harrasteet.poista(pitsi23) === false ; harrasteet.getLkm() === 4;
30   *  harrasteet.poista(pitsi11) === true;   harrasteet.getLkm() === 3;
31   *  List<Harrastus> h = harrasteet.annaHarrastukset(1);
32   *  h.size() === 1; 
33   *  h.get(0) === pitsi12;
34   * </pre>
35   * 
36   * @example
37   * <pre name="test_tiedosto">
38   * #THROWS SailoException 
39   * // lueTiedosto(String), talleta()
40   * #import java.io.File;
41   *  Harrastukset harrasteet = new Harrastukset();
42   *  Harrastus pitsi21 = new Harrastus(); pitsi21.vastaaPitsinNyplays(2);
43   *  Harrastus pitsi11 = new Harrastus(); pitsi11.vastaaPitsinNyplays(1);
44   *  Harrastus pitsi22 = new Harrastus(); pitsi22.vastaaPitsinNyplays(2); 
45   *  Harrastus pitsi12 = new Harrastus(); pitsi12.vastaaPitsinNyplays(1); 
46   *  Harrastus pitsi23 = new Harrastus(); pitsi23.vastaaPitsinNyplays(2); 
47   *  String tiedNimi = "testikelmit";
48   *  File ftied = new File(tiedNimi+".har");
49   *  ftied.delete();
50   *  harrasteet.lueTiedostosta(tiedNimi); #THROWS SailoException
51   *  harrasteet.lisaa(pitsi21);
52   *  harrasteet.lisaa(pitsi11);
53   *  harrasteet.lisaa(pitsi22);
54   *  harrasteet.lisaa(pitsi12);
55   *  harrasteet.lisaa(pitsi23);
56   *  harrasteet.talleta();
57   *  harrasteet = new Harrastukset();
58   *  harrasteet.lueTiedostosta(tiedNimi);
59   *  Iterator<Harrastus> i = harrasteet.iterator();
60   *  i.next().toString() === pitsi21.toString();
61   *  i.next().toString() === pitsi11.toString();
62   *  i.next().toString() === pitsi22.toString();
63   *  i.next().toString() === pitsi12.toString();
64   *  i.next().toString() === pitsi23.toString();
65   *  i.hasNext() === false;
66   *  harrasteet.lisaa(pitsi23);
67   *  harrasteet.talleta();
68   *  ftied.delete() === true;
69   *  File fbak = new File(tiedNimi+".hbak");
70   *  fbak.delete() === true;
71   * </pre>
72   * 
73   * @example
74   * <pre name="test_iterator">
75   * // iterator()
76   * #PACKAGEIMPORT
77   * #import java.util.*;
78   * 
79   *  Harrastukset harrasteet = new Harrastukset();
80   *  Harrastus pitsi21 = new Harrastus(2); harrasteet.lisaa(pitsi21);
81   *  Harrastus pitsi11 = new Harrastus(1); harrasteet.lisaa(pitsi11);
82   *  Harrastus pitsi22 = new Harrastus(2); harrasteet.lisaa(pitsi22);
83   *  Harrastus pitsi12 = new Harrastus(1); harrasteet.lisaa(pitsi12);
84   *  Harrastus pitsi23 = new Harrastus(2); harrasteet.lisaa(pitsi23);
85   * 
86   *  Iterator<Harrastus> i2=harrasteet.iterator();
87   *  i2.next() === pitsi21;
88   *  i2.next() === pitsi11;
89   *  i2.next() === pitsi22;
90   *  i2.next() === pitsi12;
91   *  i2.next() === pitsi23;
92   *  i2.next() === pitsi12;  #THROWS NoSuchElementException  
93   *  
94   *  int n = 0;
95   *  int jnrot[] = {2,1,2,1,2};
96   *  
97   *  for ( Harrastus har:harrasteet ) { 
98   *    har.getJasenNro() === jnrot[n]; n++;  
99   *  }
100  *  
101  *  n === 5;
102  * </pre>
103  */
104 public class Harrastukset extends PerusTietueet<Harrastus> {
105     /**
106      * Harrastusten alustaminen
107      */
108     public Harrastukset() {
109         super(new Harrastus(),".har",".hbak");
110     }
111 
112 
113     /**
114      * Poistaa kaikki tietyn jäsenen harrastukset
115      * @param jasenNro viite siihen, minkä jäsenen harrastukset poistetaan
116      * @return montako poistettiin 
117      * @example
118      * <pre name="test">
119      * #THROWS SailoException 
120      * #import java.io.File;
121      *  Harrastukset harrasteet = new Harrastukset();
122      *  Harrastus pitsi21 = new Harrastus(); pitsi21.vastaaPitsinNyplays(2);
123      *  Harrastus pitsi11 = new Harrastus(); pitsi11.vastaaPitsinNyplays(1);
124      *  Harrastus pitsi22 = new Harrastus(); pitsi22.vastaaPitsinNyplays(2); 
125      *  Harrastus pitsi12 = new Harrastus(); pitsi12.vastaaPitsinNyplays(1); 
126      *  Harrastus pitsi23 = new Harrastus(); pitsi23.vastaaPitsinNyplays(2); 
127      *  harrasteet.lisaa(pitsi21);
128      *  harrasteet.lisaa(pitsi11);
129      *  harrasteet.lisaa(pitsi22);
130      *  harrasteet.lisaa(pitsi12);
131      *  harrasteet.lisaa(pitsi23);
132      *  harrasteet.poistaJasenenHarrastukset(2) === 3;  harrasteet.getLkm() === 2;
133      *  harrasteet.poistaJasenenHarrastukset(3) === 0;  harrasteet.getLkm() === 2;
134      *  List<Harrastus> h = harrasteet.annaHarrastukset(2);
135      *  h.size() === 0; 
136      *  h = harrasteet.annaHarrastukset(1);
137      *  h.get(0) === pitsi11;
138      *  h.get(1) === pitsi12;
139      * </pre>
140      */
141     public int poistaJasenenHarrastukset(int jasenNro) {
142         return poista(jasenNro,1);
143     }
144 
145 
146     /**
147      * Haetaan kaikki jäsen harrastukset
148      * @param tunnusnro jäsenen tunnusnumero jolle harrastuksia haetaan
149      * @return tietorakenne jossa viiteet löydetteyihin harrastuksiin
150      * @example
151      * <pre name="test">
152      * #import java.util.*;
153      * 
154      *  Harrastukset harrasteet = new Harrastukset();
155      *  Harrastus pitsi21 = new Harrastus(2); harrasteet.lisaa(pitsi21);
156      *  Harrastus pitsi11 = new Harrastus(1); harrasteet.lisaa(pitsi11);
157      *  Harrastus pitsi22 = new Harrastus(2); harrasteet.lisaa(pitsi22);
158      *  Harrastus pitsi12 = new Harrastus(1); harrasteet.lisaa(pitsi12);
159      *  Harrastus pitsi23 = new Harrastus(2); harrasteet.lisaa(pitsi23);
160      *  Harrastus pitsi51 = new Harrastus(5); harrasteet.lisaa(pitsi51);
161      *  
162      *  List<Harrastus> loytyneet;
163      *  loytyneet = harrasteet.annaHarrastukset(3);
164      *  loytyneet.size() === 0; 
165      *  loytyneet = harrasteet.annaHarrastukset(1);
166      *  loytyneet.size() === 2; 
167      *  loytyneet.get(0) == pitsi11 === true;
168      *  loytyneet.get(1) == pitsi12 === true;
169      *  loytyneet = harrasteet.annaHarrastukset(5);
170      *  loytyneet.size() === 1; 
171      *  loytyneet.get(0) == pitsi51 === true;
172      * </pre> 
173      */
174     public List<Harrastus> annaHarrastukset(int tunnusnro) {
175         return annaTietueet(tunnusnro, 1);
176     }
177     
178     
179     /**
180      * Testiohjelma harrastuksille
181      * @param args ei käytössä
182      */
183     public static void main(String[] args) {
184         Harrastukset harrasteet = new Harrastukset();
185         Harrastus pitsi1 = new Harrastus();
186         pitsi1.vastaaPitsinNyplays(2);
187         Harrastus pitsi2 = new Harrastus();
188         pitsi2.vastaaPitsinNyplays(1);
189         Harrastus pitsi3 = new Harrastus();
190         pitsi3.vastaaPitsinNyplays(2);
191         Harrastus pitsi4 = new Harrastus();
192         pitsi4.vastaaPitsinNyplays(2);
193 
194         harrasteet.lisaa(pitsi1);
195         harrasteet.lisaa(pitsi2);
196         harrasteet.lisaa(pitsi3);
197         harrasteet.lisaa(pitsi2);
198         harrasteet.lisaa(pitsi4);
199 
200         System.out.println("============= Harrastukset testi =================");
201 
202         List<Harrastus> harrastukset2 = harrasteet.annaHarrastukset(2);
203 
204         for (Harrastus har : harrastukset2) {
205             System.out.print(har.getJasenNro() + " ");
206             har.tulosta(System.out);
207         }
208 
209     }
210 
211 }
212