Jäsenen ja harrastusten välinen yhteistyö
Vastuut
Jasen
ei tiedä harrastuksistaHarrastus
tietää jäsenen tunnusnumeron, mutta ei jäseniäHarrastukset
osaa etsiä tietyn jäsenen kaikki harrastuksetKerho
osaa pyytääHarrastukset
-luokan oliota etsimään tietyn jäsenen harrastuksetKerhoGUIController
pyytääKerhoa
tekemään hommia.
Vaihe 5
- Katso vaiheen 5 esimerkki.
- Muutokset vaiheen 5.1 jälkeen
Tilapäisesti tiedot tulostetaan keskiosaan vaihdettuun TextAreaan:
Harrastus
012 public class Harrastus { 013 private int tunnusNro; 014 private int jasenNro; 015 private String ala; 016 private int aloitusvuosi; 017 private int tuntiaViikossa;
...
106 public int getJasenNro() { 107 return jasenNro; 108 }
Harrastukset
016 private final Collection<Harrastus> alkiot = new ArrayList<Harrastus>();
031 public void lisaa(Harrastus har) { 032 alkiot.add(har); 033 }
136 public List<Harrastus> annaHarrastukset(int tunnusnro) { 137 List<Harrastus> loydetyt = new ArrayList<Harrastus>(); 138 for (Harrastus har : alkiot) 139 if (har.getJasenNro() == tunnusnro) loydetyt.add(har); 140 return loydetyt; 141 }
Kerho
016 private final Jasenet jasenet = new Jasenet(); 017 private final Harrastukset harrastukset = new Harrastukset();
072 public void lisaa(Harrastus har) { 073 harrastukset.lisaa(har); 074 }
119 public List<Harrastus> annaHarrastukset(Jasen jasen) { 120 return harrastukset.annaHarrastukset(jasen.getTunnusNro()); 121 }
KerhoGUIController
263 public void uusiHarrastus() { 264 if ( jasenKohdalla == null ) return; 265 Harrastus har = new Harrastus(); 266 har.rekisteroi(); 267 har.vastaaPitsinNyplays(jasenKohdalla.getTunnusNro()); 268 kerho.lisaa(har); 269 hae(jasenKohdalla.getTunnusNro()); 270 }
Esimerkiksi Jasenen tulostamista varten haetaan jäsenen harrastukset
303 public void tulosta(PrintStream os, final Jasen jasen) { 304 os.println("----------------------------------------------"); 305 jasen.tulosta(os); 306 os.println("----------------------------------------------"); 307 List<Harrastus> harrastukset = kerho.annaHarrastukset(jasen); 308 for (Harrastus har:harrastukset) 309 har.tulosta(os); 310 }
Vaihe 7
- kannattaa katsoa myös malli tiedonsyötön ideoista
- tässä voi kannattaa katsoa myös vuoden 2017 yksinkertaisen mallin tiedonsyötön ideoita
Jäsenen tietojen näyttämiseksi täytetään jäsenen tiedot omiin kenttiinsä ja sitten näytetään harrastuksen tiedot taulukkoon:
KerhoGuiController
228 protected void naytaJasen() { 229 jasenKohdalla = chooserJasenet.getSelectedObject(); 230 if (jasenKohdalla == null) return; 231 232 JasenDialogController.naytaJasen(edits, jasenKohdalla); 233 naytaHarrastukset(jasenKohdalla); 234 }
JasenDialogController, vaihe 7.1.3
094 public static void naytaJasen(TextField[] edits, Jasen jasen) { 095 if (jasen == null) return; 096 edits[0].setText(jasen.getNimi()); 097 edits[1].setText(jasen.getHetu()); 098 edits[2].setText(jasen.getKatuosoite()); 099 edits[3].setText(jasen.getPostinumero()); 100 }
Tässä vaiheessa näyttämiseen käyetään vielä get
-metodeja eikä niitä ole jaksettu kirjoittaa kaikille kentille. Yleisemmästä ideasta lue lisää Tiedonsyöttö, Kentät indeksoidusti.
JasenDialogController.java, Vaihe 7.2
181 public static void naytaJasen(TextField[] edits, Jasen jasen) { 182 if (jasen == null) return; 183 for (int k = jasen.ekaKentta(); k < jasen.getKenttia(); k++) { 184 edits[k].setText(jasen.anna(k)); 185 } 186 }
Yhden jäsenen harrastuksen näyttäminen:
KerhoGuiController
285 private void naytaHarrastukset(Jasen jasen) { 286 tableHarrastukset.clear(); 287 if ( jasen == null ) return; 288 289 try { 290 List<Harrastus> harrastukset = kerho.annaHarrastukset(jasen); 291 if ( harrastukset.size() == 0 ) return; 292 for (Harrastus har: harrastukset) 293 naytaHarrastus(har); 294 } catch (SailoException e) { 295 // naytaVirhe(e.getMessage()); 296 } 297 } 298 299 300 private void naytaHarrastus(Harrastus har) { 301 String[] rivi = har.toString().split("\\|"); // TODO: huono ja tilapäinen ratkaisu 302 tableHarrastukset.add(har,rivi[2],rivi[3],rivi[4]); 303 }
Harrastuksen lisääminen
KerhoGuiController 7.1.3
309 public void uusiHarrastus() { 310 if ( jasenKohdalla == null ) return; 311 Harrastus har = new Harrastus(); 312 har.rekisteroi(); 313 har.vastaaPitsinNyplays(jasenKohdalla.getTunnusNro()); 314 try { 315 kerho.lisaa(har); 316 } catch (SailoException e) { 317 Dialogs.showMessageDialog("Ongelmia lisäämisessä! " + e.getMessage()); 318 } 319 hae(jasenKohdalla.getTunnusNro()); 320 } 321
Myohemmin kun harrastusta voi muokata, tämä tehdään
KerhoGuiController vaihe 7.4
340 private void uusiHarrastus() { 341 if ( jasenKohdalla == null ) return; 342 try { 343 Harrastus uusi = new Harrastus(jasenKohdalla.getTunnusNro()); 344 uusi = TietueDialogController.kysyTietue(null, uusi, 0); 345 if ( uusi == null ) return; 346 uusi.rekisteroi(); 347 kerho.lisaa(uusi); 348 naytaHarrastukset(jasenKohdalla); 349 tableHarrastukset.selectRow(1000); // järjestetään viimeinen rivi valituksi 350 } catch (SailoException e) { 351 Dialogs.showMessageDialog("Lisääminen epäonnistui: " + e.getMessage()); 352 } 353 } 354
Tämän voisi viedä vielä pidemmällekin niin, että jäsenten tunnusnumeroista ei tarvitsisi tietää mitään:
340 public void uusiHarrastus() {
341 if ( jasenKohdalla == null ) return;
342 Harrastus harrastus = kerho.luoUusiHarrastus(jasenKohdalla);
...
These are the current permissions for this document; please modify if needed. You can always modify these permissions from the manage page.