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.