1 package kerho;
2 import java.io.OutputStream;
3 import java.util.Iterator;
4
5 import fi.jyu.mit.ohj2.IO;
6 import fi.jyu.mit.ohj2.Mjonot;
7 import fi.jyu.mit.ohj2.Syotto;
8
21 public class Naytto {
22
23
26 private final Kerho kerho;
27
28 private static enum Rivinvaihto {
29
30 EITULE,
31
32 TULEE
33 };
34
35
36
42 public Naytto(Kerho kerho) throws SailoException {
43 if ( kerho == null ) throw new SailoException("Kerho täytyy antaa!");
44 this.kerho = kerho;
45 }
46
47
48
53 private static void tulosta(String s, Rivinvaihto printlf) {
54 System.out.print(s);
55 if ( printlf == Rivinvaihto.TULEE ) System.out.println();
56 }
57
58
59
63 private static void tulosta(String s) {
64 tulosta(s,Rivinvaihto.TULEE);
65 }
66
67
68
72 private static void tulostaEiRV(String s) {
73 tulosta(s,Rivinvaihto.EITULE);
74 }
75
76
77
81 private static void tulostaRivinvaihtoja(int n) {
82 for (int i=0; i<n; i++) tulosta("");
83 }
84
85
86
99 private static void otsikko(char kirjain, String teksti) {
100 tulostaRivinvaihtoja(4);
101 tulosta("" + kirjain + ". " + teksti);
102 tulosta(Mjonot.tayta("=",1+2+teksti.length()));
103 tulostaRivinvaihtoja(2);
104 }
105
106
107
110 private void eiToimi() {
111 tulosta("Ei toimi vielä!");
112 IO.odota_jotakin();
113 }
114
115
116
120 private void avustus(char valinta) {
121 otsikko(valinta, "Avustus");
122 eiToimi();
123 }
124
125
126
131 private void tulosta(OutputStream os, final Jasen jasen) {
132 jasen.tulosta(os);
133 int jid = jasen.getTunnusnro();
134 for (Iterator<Harrastus> i=kerho.harrastusIterator(jid); i.hasNext(); ) {
135 Harrastus har = i.next();
136 har.tulosta(os);
137 }
138
144 }
145
146
147
152 private boolean kysyTiedot(Jasen jasen) {
153 int kenttia = jasen.getKenttia();
154 int eka = jasen.ekaKentta();
155 for (int k=eka; k<kenttia; k++ ) {
156 while ( true ) { String oletus = jasen.anna(k);
158 String vastaus = Syotto.kysy(jasen.getKysymys(k),oletus);
159 vastaus = Mjonot.poista_2_tyhjat(vastaus).trim();
160 if ( k == eka && "".equals(vastaus) ) return false;
161 if ( ".".equals(vastaus) ) return true;
162 if ( "q".equals(vastaus) ) return false;
163 String virhe = jasen.aseta(k,vastaus);
164 if ( virhe == null ) break;
165 System.out.println(virhe);
166 System.out.println("Annatko tiedon uudelleen.");
167 }
168 }
169 return true;
170 }
171
172
173
179 private boolean kysyUusiJasen() {
180 Jasen jasen = new Jasen();
181 jasen.rekisteroi();
182 while ( kysyTiedot(jasen) ) {
183 tulosta("Lisätäänkö");
184 tulosta(System.out,jasen);
185 tulostaEiRV(":");
186 if ( IO.kylla_vastaus() ) {
187 try {
188 kerho.lisaa(jasen);
189 return true;
190 } catch ( SailoException ex ) {
191 tulosta(ex.getMessage());
192 }
193 }
194 }
195 kerho.poista(jasen.getTunnusnro());
196 return false;
197 }
198
199
200
204 private void lisaaUusiJasen(char valinta) {
205 otsikko(valinta,"Uuden jäsenen lisäys");
206 while ( kysyUusiJasen() ); }
208
209
210
214 private void etsiJasenenTiedot(char valinta) {
215 otsikko(valinta,"Etsi jäsenen tiedot");
216 eiToimi();
217 }
218
219
220
224 private void tulosteet(char valinta) {
225 otsikko(valinta,"Tulosteet");
226 tulosta("Toimii toistaiseksi vain näytölle");
227 tulosta("---------------------------------------------------------");
228
229 int i = 0;
230 for ( Iterator<Jasen> it = kerho.iterator(); it.hasNext(); ) {
231 Jasen jasen = it.next();
232 tulosta("Jäsen nro: " + i++);
235 tulosta(System.out,jasen);
236 tulosta("");
237 }
238
239 tulosta("---------------------------------------------------------");
240 IO.odota_jotakin();
241 }
242
243
244
248 private void tietojenKorjailu(char valinta) {
249 otsikko(valinta,"Tietojen korjailu");
250 eiToimi();
251 }
252
253
254
258 private void paivitaJasenmaksuja(char valinta) {
259 otsikko(valinta,"Päivitä jäsenmaksuja");
260 eiToimi();
261 }
262
263
264
267 private void paamenu() {
268 tulosta("\n\n\n\n");
269 tulosta("Jäsenrekisteri");
270 tulosta("==============");
271 tulosta("");
272 tulosta("Kerhossa " + kerho.getNimi()+ " on " +
273 kerho.getJasenia() + " jäsentä.");
274 tulosta("");
275 tulosta("Valitse:");
276 tulosta(" ? = avustus");
277 tulosta(" 0 = lopetus");
278 tulosta(" 1 = lisää uusi jäsen");
279 tulosta(" 2 = etsi jäsenen tiedot");
280 tulosta(" 3 = tulosteet");
281 tulosta(" 4 = tietojen korjailu");
282 tulosta(" 5 = päivitä jäsenmaksuja");
283 tulostaEiRV(" :");
284 }
285
286
287
292 public int paavalinta() {
293 char nappain;
294
295 while ( true ) {
296
297 paamenu();
298
299 nappain = IO.odota_nappain("?012345",IO.EI_OLETUSTA,IO.MERKKI_ISOKSI);
300
301 switch (nappain) {
302 case '?': avustus(nappain); break;
303 case '0': return 0;
304 case '1': lisaaUusiJasen(nappain); break;
305 case '2': etsiJasenenTiedot(nappain); break;
306 case '3': tulosteet(nappain); break;
307 case '4': tietojenKorjailu(nappain); break;
308 case '5': paivitaJasenmaksuja(nappain); break;
309 default : tulosta("Näin ei voi käydä!"); return 1;
310 }
311
312 }
313 }
314
315
316
319 private void logo() {
320 tulosta("");
321 tulosta(" ###################################");
322 tulosta(" # J Ä S E N R E K I S T E R I #");
323 tulosta(" # versio 9.95 #");
324 tulosta(" # Hannu Hanhi #");
325 tulosta(" ###################################");
326 }
327
328
329
332 public void ohjeet() {
333 logo();
334 tulosta("");
335 tulosta("Tällä ohjelmalla ylläpidetään kerhon jäsenrekisteriä.");
336 }
337
338
339
342 public void kiitokset() {
343 tulosta("");
344 tulosta("KIITOS KÄYTÖSTÄ JA TERVETULOA UUDELLEEN");
345 tulosta("");
346 tulosta("");
347 }
348
349
350
355 public String lueKerho() {
356 tulosta("Anna kerhon nimi>");
357 eiToimi();
358 try {
359 kerho.lueTiedostosta("kelmit");
360 } catch ( SailoException ex ) {
361 System.out.println(ex.getMessage());
362 return ex.getMessage();
363 }
364
365 return "";
366 }
367
368
369
374 public String talletaKerho() {
375 logo();
376
377 tulosta("");
378
379 tulosta("Talletus...");
380 try {
381 kerho.talleta();
382 } catch ( SailoException ex ) {
383 System.out.println(ex.getMessage());
384 return ex.getMessage();
385 }
386
387 return "";
388 }
389
390
391
395 public static void main(String[] args) {
396 Kerho kerho = new Kerho();
397
398 try {
399 Naytto naytto = new Naytto(kerho);
400
401 naytto.ohjeet();
402
403 naytto.lueKerho();
404
405 naytto.paavalinta();
406
407 naytto.talletaKerho();
408
409 naytto.kiitokset();
410 }
411 catch (Exception ex) {
412 System.out.println("VIRHE: " + ex.getMessage());
413 }
414 }
415
416 }
417
418