From ab1edfb1f5fcef407585e608405699a69d11019a Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Koivisto=20Ida=20Maria=20Hannuntyt=C3=A4r?=
 <ida.m.koivisto@student.jyu.fi>
Date: Tue, 25 Apr 2023 18:09:34 +0300
Subject: [PATCH] =?UTF-8?q?lis=C3=A4tty=20rallit-luokka=20ja=20t=C3=A4yden?=
 =?UTF-8?q?netty=20muita=20luokkia?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 src/rekisteri/RalliGUIController.java | 56 +++++++++++++----
 src/rekisteriJAVA/Henkilo.java        | 48 +++++++++++---
 src/rekisteriJAVA/Henkilot.java       | 20 ++++++
 src/rekisteriJAVA/Ralli.java          | 90 +++++++++++++++++++++++++++
 src/rekisteriJAVA/Rallit.java         | 28 +++++++++
 src/rekisteriJAVA/Rekisteri.java      | 18 +++---
 src/rekisteriJAVA/SailoException.java | 18 ++++++
 7 files changed, 248 insertions(+), 30 deletions(-)
 create mode 100644 src/rekisteriJAVA/Ralli.java
 create mode 100644 src/rekisteriJAVA/Rallit.java
 create mode 100644 src/rekisteriJAVA/SailoException.java

diff --git a/src/rekisteri/RalliGUIController.java b/src/rekisteri/RalliGUIController.java
index 5037fb2..c70b47d 100644
--- a/src/rekisteri/RalliGUIController.java
+++ b/src/rekisteri/RalliGUIController.java
@@ -11,6 +11,9 @@ import javafx.fxml.Initializable;
 
 import javafx.scene.control.TextField;
 import rekisteriJAVA.Rekisteri;
+import rekisteriJAVA.SailoException;
+import rekisteriJAVA.Henkilo;
+import rekisteriJAVA.Ralli;
 
 
 
@@ -27,6 +30,7 @@ public class RalliGUIController implements Initializable {
     
     private String rekisterinNimi = "ralliAsia";
     
+    
     @FXML private void handleHae() { hae(); }
     
     
@@ -36,13 +40,14 @@ public class RalliGUIController implements Initializable {
     /**
      * Ajetaan, kun klikataan "Lisää uusi"
      */
-    @FXML private void handleUusi() { lisaaUusi();}
+    @FXML private void handleUusi() { lisaaUusiHenk();}
     
     /**
      * Ajetaan kun klikataan menusta "Tulosta"
      */
     @FXML private void handleTulosta() {
-        //TulostusController.tulosta(null);
+        //TulostusController tulostusCtrl = TulostusController.tulosta(null);
+        //tulostaValitut(tulostusCtrl.getTextArea());
     }
     
     /** 
@@ -125,7 +130,7 @@ public class RalliGUIController implements Initializable {
    
     @Override
     public void initialize(URL location, ResourceBundle resources) {
-        //
+        alusta();
     }
     
     //==========================================================
@@ -147,17 +152,31 @@ public class RalliGUIController implements Initializable {
     /**
      * 
      */
-    public void lisaaUusi(){
+    public void lisaaUusiHenk(){
+        ModalController.showModal(RalliGUIController.class.getResource("uusi.fxml"), "Lisää uusi", null, "");
+        Henkilo uusi = new Henkilo();
+        uusi.rekisteroi();
+        uusi.vastaaKalleRovanpera(); //täyttää kallerovanperä tiedoilla
+        try {
+            rekisteri.lisaa(uusi);
+        } catch (SailoException e) {
+            Dialogs.showMessageDialog("Ongelmia uuden luomisessa " + e.getMessage());
+        }
+        hae(uusi.getTunnusNro());
+    }
+    
+    public void lisaaUusiRalli() {
         ModalController.showModal(RalliGUIController.class.getResource("uusi.fxml"), "Lisää uusi", null, "");
-        //Henkilo uusi new Henkilo();
-        //uusi.rekisteroi();
-        //uusi.vastaaKalleRovanpera(); //täyttää kallerovanperä tiedoilla
-        //try {
-        //    rekisteri.lisaa(uusi);
-        //} catch (SailoException e) {
-        //    Dialogs.showMessageDialog("Ongelmia uuden luomisessa " + e.getMessage());
-        //}
-        //hae(uusi.getTunnusNro());
+        Ralli uusi = new Ralli();
+        uusi.rekisteroi();
+        uusi.vastaaPohjanmaaralli();
+        try {
+            rekisteri.lisaa(uusi);
+        } catch (SailoException e) {
+            Dialogs.showMessageDialog("Ongelmia uuden luomisessa " + e.getMessage());
+            return;
+        }
+        hae(uusi.getTunnusNro());
     }
     
     /**
@@ -182,6 +201,17 @@ public class RalliGUIController implements Initializable {
     private void apua() {
         Dialogs.showMessageDialog("Avaa Apua-ikkunan, ei toimi vielä");
     }
+    
+    private void setTitle(String title) {
+        //ModalController.getStage(hakuehto).setTitle(title);
+    }
+    
+    protected void lueTiedosto(String nimi) {
+        rekisterinNimi = nimi;
+        //setTitle("Rekisteri - " + rekisterinNimi);
+        String failure = "Ei osata lukea vielä";
+        Dialogs.showMessageDialog(failure);
+    }
 
     /**
      * 
diff --git a/src/rekisteriJAVA/Henkilo.java b/src/rekisteriJAVA/Henkilo.java
index af40f80..447c5c6 100644
--- a/src/rekisteriJAVA/Henkilo.java
+++ b/src/rekisteriJAVA/Henkilo.java
@@ -18,6 +18,8 @@ public class Henkilo {
     private String      kotiKunta       = "";
     private String      seura           = "";
     
+    private static int seuraavaNro = 1;
+    
     
     /**
      * Oletusmuodostaja, asettaa henkilon tiedot tyhjäksi
@@ -41,29 +43,55 @@ public class Henkilo {
      */
     public static void main(String[] args) { //ei kuuluisi olla kuin yksi kpl ohjelmassa, ajaessa kerrotaan mikä main ajetaan
         Henkilo kalle = new Henkilo(); //luo uuden jäsenen
-        //Henkilo kalle2 = new Henkilo();
+        Henkilo kalle2 = new Henkilo();
         
-        //kalle.rekisteroi(); //antaa numeron
-        //kalle2.rekisteroi();
+        kalle.rekisteroi(); //antaa numeron
+        kalle2.rekisteroi();
         
         kalle.tulosta(System.out); //tulostaa näkyville, muttei shelliin
-        //kalle2.tulosta(System.out);
+        kalle2.tulosta(System.out);
         
-        //kalle.vastaaKalleRovanpera(); //täyttää lomakkeen valmiiksi
-        //kalle2.vastaaKalleRovanpera();
+        kalle.vastaaKalleRovanpera(); //täyttää lomakkeen valmiiksi
+        kalle2.vastaaKalleRovanpera();
         
-        //kalle.tulosta(System.out);
-        //kalle2.tulosta(System.out);
+        kalle.tulosta(System.out);
+        kalle2.tulosta(System.out);
 
     }
-    
+   
     
     
     /**
      * 
      */
     public void vastaaKalleRovanpera() {
-        //
+        nimi = "Rovanperä Kalle ";
+        syntymaAika = "1.1.2000";
+        tehtava = 0;
+        kotiKunta = "Jyväskylä";
+        seura = "Toyota Kangaroo Racing";
+        
+         
+    }
+
+    
+    /**
+     * Luo tunnusnumeron henkilölle
+     * @return tunnusnumero
+     */
+    public int rekisteroi() {
+        tunnusNro = seuraavaNro;
+        seuraavaNro++;
+        return tunnusNro;
+        
+    }
+
+    /**
+     * Palauttaa henkilön tunnusnumeron
+     * @return tunnusnumero
+     */
+    public Object getTunnusNro() {
+        return tunnusNro;
     }
 
 }
diff --git a/src/rekisteriJAVA/Henkilot.java b/src/rekisteriJAVA/Henkilot.java
index cba31ee..b49864e 100644
--- a/src/rekisteriJAVA/Henkilot.java
+++ b/src/rekisteriJAVA/Henkilot.java
@@ -1,5 +1,25 @@
 package rekisteriJAVA;
 
 public class Henkilot {
+    private static final int MAX_HENKILOITA = 8;
+    private int lkm = 0;
+    private String tiedostoString = "";
+    private Henkilo henkilot[] = new Henkilo[MAX_HENKILOITA];
+    
+    
+    /**
+     * Lisää uuden henkilön tiedostoon
+     * @param henkilo henkilö joka halutaan lisätä
+     * @throws SailoException virheilmoitus
+     */
+    public void lisaa(Henkilo henkilo) throws SailoException {
+        if(lkm >= henkilot.length) throw new SailoException("Liikaa tyyppejä");
+        henkilot[lkm] = henkilo;
+        lkm++;
+    }
 
+
+    public int getLkm() {
+        return lkm;
+    }
 }
diff --git a/src/rekisteriJAVA/Ralli.java b/src/rekisteriJAVA/Ralli.java
new file mode 100644
index 0000000..8860fa6
--- /dev/null
+++ b/src/rekisteriJAVA/Ralli.java
@@ -0,0 +1,90 @@
+package rekisteriJAVA;
+
+import java.io.PrintStream;
+
+public class Ralli {
+
+    private int         tunnusNro       = 0;
+    private String      nimi            = "";
+    private String      paikkakunta     = "";
+    private String      ajankohta       = ""; // vai int?
+    private String      jarjestaja      = "";
+    private String      linkkiSivuille  = "";
+    private String      linkkiOL        = "";
+    private String      linkkiT         = "";
+    
+    private static int seuraavaNro = 1;
+    
+    
+    /**
+     * Oletusmuodostaja, asettaa henkilon tiedot tyhjäksi
+     */
+    public Ralli() {
+        // ei tarvitse oletusmuodostajaa
+    }
+    
+    /**
+     * Tulostaa tietovirran, nyt "Kalle"
+     * @param out Kalle
+     */
+    public void tulosta(PrintStream out) {
+        out.println(String.format("%03d", tunnusNro) + " " + nimi);
+        out.println(paikkakunta + " " + ajankohta);
+        out.println(jarjestaja);
+        out.println(linkkiSivuille);
+        out.println(linkkiOL);
+        out.println(linkkiT);
+    }
+    
+    /**
+     * @param args ei käytössä
+     */
+    public static void main(String[] args) { //ei kuuluisi olla kuin yksi kpl ohjelmassa, ajaessa kerrotaan mikä main ajetaan
+        Ralli pohjanmaa = new Ralli(); //luo uuden jäsenen
+        Ralli pohjanmaa2 = new Ralli();
+        
+        pohjanmaa.rekisteroi(); //antaa numeron
+        pohjanmaa2.rekisteroi();
+        
+        pohjanmaa.tulosta(System.out); //tulostaa näkyville, muttei shelliin
+        pohjanmaa2.tulosta(System.out);
+        
+        pohjanmaa.vastaaPohjanmaaralli(); //täyttää lomakkeen valmiiksi
+        pohjanmaa2.vastaaPohjanmaaralli();
+        
+        pohjanmaa.tulosta(System.out);
+        pohjanmaa2.tulosta(System.out);
+    }
+   
+ 
+    /**
+     * Luo tunnusnumeron henkilölle
+     * @return tunnusnumero
+     */
+    public int rekisteroi() {
+        tunnusNro = seuraavaNro;
+        seuraavaNro++;
+        return tunnusNro;
+    }
+
+    /**
+     * Palauttaa henkilön tunnusnumeron
+     * @return tunnusnumero
+     */
+    public Object getTunnusNro() {
+        return tunnusNro;
+    }
+
+    /**
+     * Valmis vastaus rallille
+     */
+    public void vastaaPohjanmaaralli() {
+        nimi = "Pohjanmaaralli";
+        paikkakunta = "Seinäjoki";
+        jarjestaja = "Seinäjoen ralliveikot";
+        linkkiSivuille = "www.Pohjanmaaralli.fi";
+        linkkiOL = "www.Pohjanmaaralli.fi/osallistujalista";
+        linkkiT = "www.Pohjanmaaralli.fi/tulokset";
+        
+    }
+}
diff --git a/src/rekisteriJAVA/Rallit.java b/src/rekisteriJAVA/Rallit.java
new file mode 100644
index 0000000..2520ed1
--- /dev/null
+++ b/src/rekisteriJAVA/Rallit.java
@@ -0,0 +1,28 @@
+package rekisteriJAVA;
+
+public class Rallit {
+    private static final int MAX_RALLEJA = 8;
+    private int lkm = 0;
+    private String tiedostoString = "";
+    private Ralli rallit[] = new Ralli[MAX_RALLEJA];
+    
+    
+    /**
+     * Lisää uuden henkilön tiedostoon
+     * @param ralli henkilö joka halutaan lisätä
+     * @throws SailoException virheilmoitus
+     */
+    public void lisaa(Ralli ralli) throws SailoException {
+        if(lkm >= rallit.length) throw new SailoException("Liikaa tyyppejä");
+        rallit[lkm] = ralli;
+        lkm++;
+    }
+
+
+    /**
+     * @return lukumäärän
+     */
+    public int getLkm() {
+        return lkm;
+    }
+}
diff --git a/src/rekisteriJAVA/Rekisteri.java b/src/rekisteriJAVA/Rekisteri.java
index aa9448e..9e9d4e6 100644
--- a/src/rekisteriJAVA/Rekisteri.java
+++ b/src/rekisteriJAVA/Rekisteri.java
@@ -2,14 +2,14 @@ package rekisteriJAVA;
 
 public class Rekisteri {
 
-    Henkilot henkilot = new Henkilot();
+    private final Henkilot henkilot = new Henkilot();
     
     
     /**¨Lisätään uusi jäsen
-     * 
-     * @param args
+     * @param henkilo joka lisätään
+     * @throws SailoException virheviesti
      */
-    public void lisaa(Henkilo henkilo) {
+    public void lisaa(Henkilo henkilo) throws SailoException {
         henkilot.lisaa(henkilo);
     }
     
@@ -22,10 +22,14 @@ public class Rekisteri {
     public static void main(String[] args) {
         // TODO Auto-generated method stub
 
-           Rekisteri rekisteri = new Rekisteri();
+           //Rekisteri rekisteri = new Rekisteri();
            
-           Henkilo henkilo1 = new Henkilo();
-           Henkilo henkilo2 = new Henkilo();
+           ////Henkilo henkilo2 = new Henkilo();
             }
 
+    public void lisaa(Ralli ralli) {
+        // TODO Auto-generated method stub
+        
+    }
+
 }
diff --git a/src/rekisteriJAVA/SailoException.java b/src/rekisteriJAVA/SailoException.java
new file mode 100644
index 0000000..10c620f
--- /dev/null
+++ b/src/rekisteriJAVA/SailoException.java
@@ -0,0 +1,18 @@
+package rekisteriJAVA;
+
+/**
+ * @author idamk
+ * @version 25.4.2023
+ *
+ */
+public class SailoException extends Exception {
+    private static final long serialVersionUID = 1L;
+    
+    /**
+     * Kun ei toimi
+     * @param message viesti mikä lähetetään
+     */
+    public SailoException(String message) {
+        super(message);
+    }
+}
-- 
GitLab