From fa340622490ba0c68693c49dba546b75c8b5766d Mon Sep 17 00:00:00 2001
From: aichinos <aichinos@jyu.fi>
Date: Thu, 27 Feb 2025 13:27:34 +0200
Subject: [PATCH] tapaaminen luokka vaihe 5 valmis?

---
 mmkurssit/src/apumetodit/RandomNumero.java |  22 +++
 mmkurssit/src/mmkurssit/Kurssi.java        |  42 +++---
 mmkurssit/src/mmkurssit/Tapaaminen.java    | 156 ++++++++++++++++++---
 3 files changed, 173 insertions(+), 47 deletions(-)
 create mode 100644 mmkurssit/src/apumetodit/RandomNumero.java

diff --git a/mmkurssit/src/apumetodit/RandomNumero.java b/mmkurssit/src/apumetodit/RandomNumero.java
new file mode 100644
index 0000000..0dff8df
--- /dev/null
+++ b/mmkurssit/src/apumetodit/RandomNumero.java
@@ -0,0 +1,22 @@
+package apumetodit;
+
+/**
+ * Luodaan random-numero, vaihe 5 tehtäessä
+ * Tarkoituksena tarkistetaan, että ei ole sama kurssi on luotu yms.
+ * @author aichi
+ * @version 27 Feb 2025
+ *
+ */
+public class RandomNumero {
+    /**
+     * Arvotaan satunnainen kokonaisluku välille [ala,yla]
+     * @param ala arvonnan alaraja
+     * @param yla arvonnan yläraja
+     * @return satunnainen luku väliltä [ala,yla]
+     */
+    public static int rand(int ala, int yla) {
+      double n = (yla-ala)*Math.random() + ala;
+      return (int)Math.round(n);
+    }
+
+}
diff --git a/mmkurssit/src/mmkurssit/Kurssi.java b/mmkurssit/src/mmkurssit/Kurssi.java
index 3a20823..4150048 100644
--- a/mmkurssit/src/mmkurssit/Kurssi.java
+++ b/mmkurssit/src/mmkurssit/Kurssi.java
@@ -1,6 +1,7 @@
 package mmkurssit;
 
 import java.io.OutputStream;
+import apumetodit.RandomNumero;
 import java.io.PrintStream;
 
 /**
@@ -98,23 +99,11 @@ public class Kurssi {
     
     /**
      * Apumetodi, jolla saadaan täytettyä testiarvot kurssille.
-     * Visibility muutettu "package:ksi"
      * TODO: POISTA, kun kaikki toimii!!
      * 
      */
-    public void tayta1() {
-        this.nimi = "Japani 4";
-        this.opeEtunimi = "Ken";
-        this.opeSukunimi = "Manninen";
-        
-    }
-    /**
-     * Apumetodi, jolla saadaan täytettyä testiarvot kurssille.
-     * TODO: POISTA, kun kaikki toimii!!
-     * 
-     */
-    void tayta2() {
-        this.nimi = "Ohjelmointi 2";
+    void tayta() {
+        this.nimi = "Ohjelmointi 2, nro: " + RandomNumero.rand(1,100);
         this.opeEtunimi = "Vesa";
         this.opeSukunimi = "Kokko";
         
@@ -129,21 +118,26 @@ public class Kurssi {
     // luento 24.2.2025
     // Käytetään fxMMKurssi-mainissa oleva main koko ohjelmaa varten, mutta Java sallii,
     //että ohjelman sisällä tavallaan monta main-methodia.
-        Kurssi japani4 = new Kurssi();
-        Kurssi ohjelmointi2 = new Kurssi();
+        System.out.println(nextID);
+        System.out.println("--------------");
         
-        japani4.rekisteroi();
-        ohjelmointi2.rekisteroi();
+        Kurssi ohjelmointi1 = new Kurssi();
+        ohjelmointi1.rekisteroi();
+        ohjelmointi1.tulosta(System.out);//tulostetaan ilman mitään täytetty tietoa
+       
+        ohjelmointi1.tayta();
+        ohjelmointi1.tulosta(System.out);
         
-        japani4.tulosta(System.out);
-        ohjelmointi2.tulosta(System.out);
-        System.out.println(nextID);
+        System.out.println("-------------------");
         
-        japani4.tayta1();
-        ohjelmointi2.tayta2();
+        Kurssi ohjelmointi2 = new Kurssi();
+        ohjelmointi2.rekisteroi();
+        ohjelmointi2.tulosta(System.out);
         
-        japani4.tulosta(System.out);
+        ohjelmointi2.tayta();
         ohjelmointi2.tulosta(System.out);
+        
+        System.out.println("NextID on: " + nextID);
     }
 
     
diff --git a/mmkurssit/src/mmkurssit/Tapaaminen.java b/mmkurssit/src/mmkurssit/Tapaaminen.java
index 11de69d..7357bd4 100644
--- a/mmkurssit/src/mmkurssit/Tapaaminen.java
+++ b/mmkurssit/src/mmkurssit/Tapaaminen.java
@@ -1,7 +1,10 @@
 package mmkurssit;
 
+import java.io.OutputStream;
 import java.io.PrintStream;
 
+import apumetodit.RandomNumero;
+
 /**
  * Yksittäiset tapaaminen-oliot
  * @author aichi
@@ -25,44 +28,151 @@ public class Tapaaminen {
     
     private static int nextmID = 1;//next tapaaminen ID
     
+    //=========================================================================
+    
+    
     /**
-     * @param args ei käytössä
+     * Apumetodi, jolla saadaan täytettyä testiarvot kurssille.
+     * TODO: POISTA, kun kaikki toimii!!
+     * 
      */
-    public static void main(String[] args) {
-    
-        Tapaaminen japani4_1 = new Tapaaminen();
-        Tapaaminen ohjelmointi2_1 = new Tapaaminen();
+    void tayta() {
+        this.kID = RandomNumero.rand(1,100);
+        this.paiva = 16;
+        this.kkausi = 3;
+        this.vuosi = 2025;
+        this.hour = 16;
+        this.min = 30;
+        this.kesto = 90;
+        this.paikka = "B248";
+        this.muu = "Välipala mukaan";
         
-        japani4_1.rekisteroi();
-        ohjelmointi2_1.rekisteroi();
-        
-        japani4_1.tulosta(System.out);
-        ohjelmointi2_1.tulosta(System.out);
-        System.out.println(nextmID);
-        
-        japani4_1.tayta();
-        ohjelmointi2_1.tayta();
-        
-        japani4_1.tulosta(System.out);
-        ohjelmointi2_1.tulosta(System.out);
+    } 
     
+    
+    /**
+     * Tulostetaan tapaamisen tiedot
+     * @param os teitovirta johon tulostetaan 
+     */
+    public void tulosta(OutputStream os) {
+        //tulsota(new PrintStream(os));
+    }
+    
+    
+    /**
+     * Tulostetaan tapaamisen tiedot
+     * @param out tietovirta johon tulostetaan
+     */
+    public void tulosta(PrintStream out) {
+        out.println(String.format("Meeting ID: %03d", tapaaminenID) + String.format(" randon nro: ", RandomNumero.rand(1, 100)));
+        out.println(milloin());
+        out.println("Aloitusaika: " + aloitusaika());
+        out.println("Loppuu: "+ lopetusaika());
+        out.println("Paikka: " + missa());
+        out.println("HUOM! "+muu);
     }
 
     
+    /**
+     * @return tapaamisen paikka
+     */
+    private String missa() {
+        return this.paikka;
+    }
 
-    private void tayta() {
-        // TODO Auto-generated method stub
+    
+    /**
+     * @return tapaamisen lopetusaika laskettuna ja string-muotona
+     */
+    private String lopetusaika() {
+        int loppuh = 0;
+        int loppumin = this.min + this.kesto;
         
+        while(loppumin >= 60){
+            loppumin = loppumin -60;
+            loppuh++;
+        }
+        loppuh = loppuh + this.hour;
+        //return String.format("%02d", loppuh)+":"+String.format("%02d", loppumin);
+        return String.format("%02d:%02d", loppuh, loppumin);
     }
 
-    private void tulosta(PrintStream out) {
-        // TODO Auto-generated method stub
+
+    /**
+     * @return tapaamisen päivämäärät stringina
+     */
+    private String milloin() {
+        //TODO: lisaa pv ja kk takistuskoodi
+        if (this.paiva > 31 || kkausi >12) return "Wrong date or month";
         
+        return this.paiva +"."+this.kkausi+"."+this.vuosi;
     }
+    
+    
+    /**
+     * @return tapaamisen aloitusaika stringina
+     */
+    private String aloitusaika() {
+        if (hour>22 || min >60) return "Check the time";
+        return this.hour+":"+this.min;
+    }
+
 
-    private void rekisteroi() {
-        // TODO Auto-generated method stub
+    /**
+     * Antaa tapaamiselle seuraavan tunnusnumeron
+     * @example
+     * <pre name="test">
+     *    Tapaaminen saksa_1 = new Tapaaminen();
+     *      saksa_1.getmID() === 0;
+     *      saksa_1.rekisteroi();
+     *    Tapaaminen ohjelmointi_1 = new Tapaaminen();
+     *      ohjelmointi_1.rekisteroi();
+     *    int n1 = saksa_1.getmID();
+     *    int n2 = ohjelmointi_1.getmID();
+     *    n1 === 1;
+     *    n2 === 2;
+     * </pre>
+     */
+    public void rekisteroi() {
+        this.tapaaminenID = nextmID;
+        nextmID++;
+    }
+    
+    
+    /**
+     * @return kyseisen tapaamisen ID
+     */
+    public int getmID() {
+        return this.tapaaminenID;
+    }
+    
+    
+    /**
+     * @return kyseisen tapaamisen kID (eli kurssin ID), joka kertoo mihin kurssiin kyseinen tapaaminen liittyy
+     */
+    public int getkID() {
+        return this.kID;
+    }
+    
+    
+    //==========================================================================
+    /**
+     * @param args ei käytössä
+     */
+    public static void main(String[] args) {
+    
+        Tapaaminen japani4_1 = new Tapaaminen();
+        Tapaaminen ohjelmointi2_1 = new Tapaaminen();
         
+        japani4_1.rekisteroi();
+        japani4_1.tayta();
+        
+        ohjelmointi2_1.rekisteroi();
+        ohjelmointi2_1.tayta();
+        
+        japani4_1.tulosta(System.out);
+        ohjelmointi2_1.tulosta(System.out);
+    
     }
 
 }
-- 
GitLab