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