From 5f494d0f77e44840ee5296bfaf99656fbb8fce69 Mon Sep 17 00:00:00 2001 From: joonatan <joonatan.a.nikkila@student.jyu.fi> Date: Wed, 17 Apr 2024 13:59:50 +0300 Subject: [PATCH] =?UTF-8?q?Luokkien=20yhteisty=C3=B6t=C3=A4=20lis=C3=A4tty?= =?UTF-8?q?=20ja=20otteluikkunaa=20p=C3=A4ivitetty?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/HT/fx/Karkelot.java | 13 +++- src/HT/fx/Ottelu.java | 30 +++++++ src/HT/fx/OtteluIkkunaGUIController.java | 82 ++++++++++++++++++++ src/HT/fx/OtteluIkkunaGUIView.fxml | 2 + src/HT/fx/Ottelut.java | 12 +++ src/HT/fx/PadelLisaaOtteluGUIController.java | 12 +-- src/HT/fx/PadelMainGUIController.java | 11 +-- src/HT/fx/PadelMainGUIView.fxml | 10 +-- src/HT/fx/Pelaaja.java | 16 ++-- src/Ottelutiedot | 3 + src/Pelaajatiedot | 9 +-- 11 files changed, 167 insertions(+), 33 deletions(-) create mode 100644 src/Ottelutiedot diff --git a/src/HT/fx/Karkelot.java b/src/HT/fx/Karkelot.java index babd476..6f035c5 100644 --- a/src/HT/fx/Karkelot.java +++ b/src/HT/fx/Karkelot.java @@ -73,6 +73,15 @@ public class Karkelot { return ottelut.haeOttelu(i); } + /** + * Hakee i:nnen ottelun ottelut oliolta + * @param i monesko ottelu haetaan + * @return ottelun + */ + public List<Ottelu> noudaOttelut() { + return ottelut.haeOttelut(); + } + /** * Lukee tiedot tiedostosta @@ -106,9 +115,9 @@ public class Karkelot { Pelaaja aku1 = new Pelaaja(), aku2 = new Pelaaja(); aku1.rekisteroi(); - aku1.vastaaAkuAnkka(); + aku1.luoTesti(); aku2.rekisteroi(); - aku2.vastaaAkuAnkka(); + aku2.luoTesti(); karkelo.lisaa(aku1); karkelo.lisaa(aku2); diff --git a/src/HT/fx/Ottelu.java b/src/HT/fx/Ottelu.java index 2464777..b476e7d 100644 --- a/src/HT/fx/Ottelu.java +++ b/src/HT/fx/Ottelu.java @@ -46,6 +46,36 @@ public class Ottelu { } + /** + * Ottelun constructori + * @param idNro ottelun id + * @param paivamaara pvm + * @param pelaajaNro1 pelaaja1 + * @param pelaajaNro2 pelaaja1 + * @param pelaajaNro3 pelaaja1 + * @param pelaajaNro4 pelaaja1 + * @param voittajaNro1 voittaja 1 + * @param voittajaNro2 voittaja 2 + * @param lopputulos tulos + */ + public Ottelu(int idNro, LocalDate paivamaara, int pelaajaNro1, int pelaajaNro2, int pelaajaNro3, int pelaajaNro4, int voittajaNro1, int voittajaNro2, String lopputulos ) { + this.idNro = idNro; + this.paivamaara=paivamaara; + this.pelaajaNro1 = pelaajaNro1; + this.pelaajaNro2 = pelaajaNro2; + this.pelaajaNro3 = pelaajaNro3; + this.pelaajaNro4 = pelaajaNro4; + this.voittajaNro1 = voittajaNro1; + this.voittajaNro2 = voittajaNro2; + this.lopputulos = lopputulos; + + + } + + public String getTiedot() { + return idNro + "|" + pelaajaNro1 + "|" +pelaajaNro2 + "|" +pelaajaNro3 + "|" +pelaajaNro4 +"|" +voittajaNro1 + "|" + voittajaNro2+"|"+paivamaara+"|"+ lopputulos; + } + /** * Tyhjä contructori ottelulle */ diff --git a/src/HT/fx/OtteluIkkunaGUIController.java b/src/HT/fx/OtteluIkkunaGUIController.java index 7bedb1d..dcbfcd9 100644 --- a/src/HT/fx/OtteluIkkunaGUIController.java +++ b/src/HT/fx/OtteluIkkunaGUIController.java @@ -1,8 +1,18 @@ package HT.fx; +import java.io.File; +import java.io.FileInputStream; +import java.io.FileNotFoundException; +import java.io.FileOutputStream; +import java.io.PrintStream; +import java.time.LocalDate; +import java.time.format.DateTimeFormatter; +import java.util.Scanner; + import fi.jyu.mit.fxgui.Dialogs; import fi.jyu.mit.fxgui.ModalController; import fi.jyu.mit.fxgui.ModalControllerInterface; +import fi.jyu.mit.ohj2.Mjonot; import javafx.event.ActionEvent; import javafx.event.EventHandler; import javafx.fxml.FXML; @@ -50,6 +60,14 @@ public class OtteluIkkunaGUIController implements ModalControllerInterface<Strin LisaaOttelu(null, "kanat"); SyotaTulos(); } + + @FXML void handleHaeTiedot(MouseEvent event) { + Lukija("/Users/joonatan/kurssit/ohj2/ht/src/Ottelutiedot"); + } + + @FXML void handleTallenna(MouseEvent event) { + tallenna(); + } //===================================== public static String LisaaOttelu(Stage modalityStage, String oletus) { @@ -64,7 +82,66 @@ public class OtteluIkkunaGUIController implements ModalControllerInterface<Strin "Lisää ottelu", modalityStage, oletus); } + public void tallenna() { + try (PrintStream fo = new PrintStream(new FileOutputStream("/Users/joonatan/kurssit/ohj2/ht/src/Ottelutiedot", false))) { + int i = 0; + while ( i<PadelMainGUIController.getKarkelo().noudaOttelut().size()) { + + fo.print(PadelMainGUIController.getKarkelo().noudaOttelu(i).getTiedot()+ "\n"); + i++; + + } + //System.out.println("Heureka ! "); + } catch(FileNotFoundException ex) { + System.err.println("Tiedosto ei aukea: " + ex.getMessage()); + } + } + + /** + * @param tiedNimi Lukee tiedot tietystä tiedostosta + */ + public void Lukija(String tiedNimi) { + try (Scanner fi = new Scanner(new FileInputStream(new File(tiedNimi)))) { // Jotta UTF8/ISO-8859 toimii + + + while ( fi.hasNext() ) { + String s = fi.nextLine(); + if(s.length()>0) { + lisaakentat(); + + StringBuffer sb = new StringBuffer(s); + int tunnus = Integer.parseInt(Mjonot.erota(sb,'|',false)); + int os1 = Integer.parseInt(Mjonot.erota(sb,'|',false)); + int os2 = Integer.parseInt(Mjonot.erota(sb,'|',false)); + int os3 = Integer.parseInt(Mjonot.erota(sb,'|',false)); + int os4 = Integer.parseInt(Mjonot.erota(sb,'|',false)); + int voi1 = Integer.parseInt(Mjonot.erota(sb,'|',false)); + int voi2 = Integer.parseInt(Mjonot.erota(sb,'|',false)); + String paivamaara = Mjonot.erota(sb,'|',false); + DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-M-d"); + LocalDate pvm = LocalDate.parse(paivamaara, formatter); + String lopputulos = Mjonot.erota(sb,'|',false); + + Ottelu uusi = new Ottelu(tunnus,pvm,os1,os2,os3,os4,voi1,voi2,lopputulos); + + + PadelMainGUIController.LisaaOttelu(uusi); + + } + } + } catch (FileNotFoundException ex) { + System.err.println("Tiedosto ei aukea! " + ex.getMessage()); + ex.printStackTrace(); + return; + } + SyotaTulos(); + + } + + + + public void lisaakentat() { lisaatekstikentta(Joukkue1VBox); lisaatekstikentta(Joukkue2VBox); @@ -72,6 +149,11 @@ public class OtteluIkkunaGUIController implements ModalControllerInterface<Strin lisaatekstikentta(TulosVBox); } + /** + * Hakee kaikki luodun karkelon ottelut ja syöttää niiden tiedot + * + * Tämän takia ei syötä tietoja oikein + */ public void SyotaTulos() { int i = 0; diff --git a/src/HT/fx/OtteluIkkunaGUIView.fxml b/src/HT/fx/OtteluIkkunaGUIView.fxml index a6cb9bd..3034235 100644 --- a/src/HT/fx/OtteluIkkunaGUIView.fxml +++ b/src/HT/fx/OtteluIkkunaGUIView.fxml @@ -13,6 +13,8 @@ <children> <ButtonBar layoutX="200.0" layoutY="366.0" prefHeight="40.0" prefWidth="200.0" AnchorPane.bottomAnchor="-3.0" AnchorPane.leftAnchor="2.5" AnchorPane.rightAnchor="2.5"> <buttons> + <Button mnemonicParsing="false" onMouseClicked="#handleTallenna" text="Tallenna" /> + <Button mnemonicParsing="false" onMouseClicked="#handleHaeTiedot" text="Hae tiedot" /> <Button mnemonicParsing="false" onMouseClicked="#handleLisaaOttelu" text="Lisää ottelu" /> </buttons> </ButtonBar> diff --git a/src/HT/fx/Ottelut.java b/src/HT/fx/Ottelut.java index 0afa86a..7794084 100644 --- a/src/HT/fx/Ottelut.java +++ b/src/HT/fx/Ottelut.java @@ -38,6 +38,18 @@ public class Ottelut implements Iterable<Ottelu> { loydetyt.add(ott); return loydetyt.get(i); } + + /** + * Luo listan otteluista jotta saadaan palautettua yksi ottelu. + * Ominaisuus saattaa jäädä turhaksi myöhemmin + * @return ottelut + */ + public List<Ottelu> haeOttelut() { + List<Ottelu> loydetyt = new ArrayList<Ottelu>(); + for(Ottelu ott : alkiot) + loydetyt.add(ott); + return loydetyt; + } /** * Palauttaa otteluiden lukumäärän * @return otteluiden lukumäärä diff --git a/src/HT/fx/PadelLisaaOtteluGUIController.java b/src/HT/fx/PadelLisaaOtteluGUIController.java index 4c1fe20..6a02ef7 100644 --- a/src/HT/fx/PadelLisaaOtteluGUIController.java +++ b/src/HT/fx/PadelLisaaOtteluGUIController.java @@ -79,12 +79,12 @@ public class PadelLisaaOtteluGUIController implements ModalControllerInterface<S */ public void kasitteleOk() { //String pvm = datesyntaika.getValue().format(DateTimeFormatter.ofPattern("yyyy-MM-dd")); - int PelaajaNro1 = menuOsallistuja1.getSelectedIndex(); - int PelaajaNro2 = menuOsallistuja2.getSelectedIndex(); - int PelaajaNro3 = menuOsallistuja3.getSelectedIndex(); - int PelaajaNro4 = menuOsallistuja4.getSelectedIndex(); - int VoittajaNro1 = menuVoittaja1.getSelectedIndex(); - int VoittajaNro2 = menuVoittaja2.getSelectedIndex(); + int PelaajaNro1 = menuOsallistuja1.getSelectedIndex()+1; + int PelaajaNro2 = menuOsallistuja2.getSelectedIndex()+1; + int PelaajaNro3 = menuOsallistuja3.getSelectedIndex()+1; + int PelaajaNro4 = menuOsallistuja4.getSelectedIndex()+1; + int VoittajaNro1 = menuVoittaja1.getSelectedIndex()+1; + int VoittajaNro2 = menuVoittaja2.getSelectedIndex()+1; String lopputulos = textLopputulos.getText(); diff --git a/src/HT/fx/PadelMainGUIController.java b/src/HT/fx/PadelMainGUIController.java index a4e6375..28887f0 100644 --- a/src/HT/fx/PadelMainGUIController.java +++ b/src/HT/fx/PadelMainGUIController.java @@ -52,8 +52,8 @@ public class PadelMainGUIController { } @FXML void handleLisaapelaaja() { - LisaaTestiPelaajat(); - //handleLisaaPelaaja(null, "kanat"); + //LisaaTestiPelaajat(); + handleLisaaPelaaja(null, "kanat"); //LisaaPelaaja(); //Syotatiedot(); lisaakentat(); @@ -110,7 +110,7 @@ public class PadelMainGUIController { } public void tallenna() { - try (PrintStream fo = new PrintStream(new FileOutputStream("/Users/joonatan/kurssit/ohj2/ht/src/Pelaajatiedot", false))) { + try (PrintStream fo = new PrintStream(new FileOutputStream("Pelaajatiedot.txt", false))) { int i = 0; while ( i<karkelo.getPelaajia()) { @@ -137,9 +137,10 @@ public class PadelMainGUIController { lisaakentat(); StringBuffer sb = new StringBuffer(s); + String tunnus = Mjonot.erota(sb,'|',false); String nimi = Mjonot.erota(sb,'|',false); String syntymapaiva = Mjonot.erota(sb,'|',false); - DateTimeFormatter formatter = DateTimeFormatter.ofPattern("d.M.yyyy"); + DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-M-d"); LocalDate synt = LocalDate.parse(syntymapaiva, formatter); String rating = Mjonot.erota(sb,'|',false); String sapo = Mjonot.erota(sb,'|',false); @@ -148,7 +149,7 @@ public class PadelMainGUIController { if(Integer.parseInt(auto)==1) { onkoauto = true; } - Pelaaja uusi = new Pelaaja(nimi,synt,Integer.parseInt(rating),sapo ,onkoauto); + Pelaaja uusi = new Pelaaja(Integer.parseInt(tunnus),nimi,synt,Integer.parseInt(rating),sapo ,onkoauto); LisaaPelaaja(uusi); diff --git a/src/HT/fx/PadelMainGUIView.fxml b/src/HT/fx/PadelMainGUIView.fxml index e9f05ee..8f855d4 100644 --- a/src/HT/fx/PadelMainGUIView.fxml +++ b/src/HT/fx/PadelMainGUIView.fxml @@ -24,7 +24,7 @@ <Font name="System Bold" size="24.0" /> </font> </Label> - <ScrollPane layoutX="3.0" layoutY="30.0" AnchorPane.bottomAnchor="35.0" AnchorPane.leftAnchor="3.0" AnchorPane.rightAnchor="160.0" AnchorPane.topAnchor="30.0"> + <ScrollPane layoutX="3.0" layoutY="30.0" prefHeight="335.0" prefWidth="527.0" AnchorPane.bottomAnchor="35.0" AnchorPane.leftAnchor="3.0" AnchorPane.rightAnchor="137.0" AnchorPane.topAnchor="30.0"> <content> <HBox prefHeight="335.0" prefWidth="452.0"> <children> @@ -37,7 +37,7 @@ </Label> </children> </VBox> - <VBox fx:id="IkaVbox" prefHeight="100.0" prefWidth="34.0"> + <VBox fx:id="IkaVbox" prefHeight="335.0" prefWidth="49.0"> <children> <Label text="Ikä"> <font> @@ -46,7 +46,7 @@ </Label> </children> </VBox> - <VBox fx:id="RatingVbox" prefHeight="335.0" prefWidth="43.0"> + <VBox fx:id="RatingVbox" prefHeight="335.0" prefWidth="69.0"> <children> <Label text="Rating"> <font> @@ -55,7 +55,7 @@ </Label> </children> </VBox> - <VBox fx:id="SapoVbox" prefHeight="100.0" prefWidth="188.0"> + <VBox fx:id="SapoVbox" prefHeight="335.0" prefWidth="210.0"> <children> <Label text="Sähköposti"> <font> @@ -64,7 +64,7 @@ </Label> </children> </VBox> - <VBox fx:id="AutoVbox" prefHeight="100.0" prefWidth="35.0"> + <VBox fx:id="AutoVbox" prefHeight="335.0" prefWidth="59.0"> <children> <Label text="Auto?"> <font> diff --git a/src/HT/fx/Pelaaja.java b/src/HT/fx/Pelaaja.java index fae20d1..a1f6505 100644 --- a/src/HT/fx/Pelaaja.java +++ b/src/HT/fx/Pelaaja.java @@ -32,19 +32,21 @@ public class Pelaaja { public Pelaaja(String nimi, LocalDate syntymaaika, String sahkoposti, boolean auto) { this.nimi = nimi; this.syntymaaika = syntymaaika; - this.rating = 1000;; + this.rating = 1000; this.sahkoposti = sahkoposti; this.auto = auto; } /** + * @param tunnusnro tunnus * @param nimi pelaajan nimi * @param syntymaaika pelaajan syntymaaika * @param rating pelaajan rating * @param sahkoposti pelaajan sähköposti * @param auto onko pelaajalla auto */ - public Pelaaja(String nimi, LocalDate syntymaaika, int rating, String sahkoposti, boolean auto) { + public Pelaaja(int tunnusnro, String nimi, LocalDate syntymaaika, int rating, String sahkoposti, boolean auto) { + this.tunnusnro = tunnusnro; this.nimi = nimi; this.syntymaaika = syntymaaika; this.rating = rating; @@ -62,7 +64,7 @@ public class Pelaaja { /** * Apumetodi, jolla saadaan täytettyä testiarvot jäsenelle. */ - public void vastaaAkuAnkka() { + public void luoTesti() { nimi = "Ankka Aku"; syntymaaika = LocalDate.of(1951, 12, 5); //5.12.1951"; sahkoposti = "ankka.aku@luukku.fi"; @@ -94,7 +96,7 @@ public class Pelaaja { public String getTiedot() { int onkoauto = 0; if(auto)onkoauto=1; - return nimi+"|"+syntymaaika+"|"+rating+"|"+sahkoposti+"|"+onkoauto; + return tunnusnro + "|"+ nimi+"|"+syntymaaika+"|"+rating+"|"+sahkoposti+"|"+onkoauto; } /** * @return palauttaa pelaajan nimen @@ -174,13 +176,13 @@ public class Pelaaja { aku.rekisteroi(); aku2.rekisteroi(); aku.tulosta(System.out); - aku.vastaaAkuAnkka(); + aku.luoTesti(); aku.tulosta(System.out); - aku2.vastaaAkuAnkka(); + aku2.luoTesti(); aku2.tulosta(System.out); - aku2.vastaaAkuAnkka(); + aku2.luoTesti(); aku2.tulosta(System.out); } diff --git a/src/Ottelutiedot b/src/Ottelutiedot new file mode 100644 index 0000000..5d5f3b4 --- /dev/null +++ b/src/Ottelutiedot @@ -0,0 +1,3 @@ +1|2|6|4|3|2|6|1996-05-13|6-4, 2-6, 7-5 +2|3|1|5|2|5|2|2024-04-09|6-0 +3|2|3|4|5|4|5|2024-04-01|6-0 diff --git a/src/Pelaajatiedot b/src/Pelaajatiedot index fd64fc3..bf1d93c 100644 --- a/src/Pelaajatiedot +++ b/src/Pelaajatiedot @@ -1,8 +1 @@ -Rasse|1999-05-13|1000|Rasse@gmail.com|0 -Tuomas|2001-09-14|1000|Tuomas@gmail.com|0 -Joonatan|1998-02-24|1000|Joonatan@gmail.com|1 -Pepe|1998-05-13|1000|Pepe@gmail.com|1 -Levy|1999-05-13|1000|Levy@gmail.com|0 -Robbe|1998-03-14|1000|Robbe@gmail.com|1 -Riku|1998-02-24|1000|Riku@gmail.com|1 -Tommi|1998-05-13|1000|Tommi@gmail.com|1 +1|Jaakko|2024-04-01|1000|hhh|1 -- GitLab