From f51bed84b64284c2f99d081054314944ad9f3e1d Mon Sep 17 00:00:00 2001
From: aichinos <aichinos@jyu.fi>
Date: Tue, 18 Mar 2025 23:47:48 +0200
Subject: [PATCH] =?UTF-8?q?en=20ymm=C3=A4rr=C3=A4=20miten=20git=20toimii,?=
 =?UTF-8?q?=20kun=20muutokset=20n=C3=A4k=C3=B6j=C3=A4=C3=A4n=20h=C3=A4vinn?=
 =?UTF-8?q?yt?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 mmkurssit/src/mmkurssit/Kurssit.java    | 21 +++++----
 mmkurssit/src/mmkurssit/Tapaaminen.java | 33 ++++++++++++-
 mmkurssit/src/mmkurssit/Tapaamiset.java | 63 +++++++++++++++++++++++++
 mmkurssit/tiedot/kurssit.dat            |  2 +
 4 files changed, 109 insertions(+), 10 deletions(-)
 create mode 100644 mmkurssit/tiedot/kurssit.dat

diff --git a/mmkurssit/src/mmkurssit/Kurssit.java b/mmkurssit/src/mmkurssit/Kurssit.java
index 117e30e..24865be 100644
--- a/mmkurssit/src/mmkurssit/Kurssit.java
+++ b/mmkurssit/src/mmkurssit/Kurssit.java
@@ -17,7 +17,7 @@ public class Kurssit {
 
     private Kurssi[] kurssit;
     private int kpl = 0;
-    private static String tiedostonNimi = "";
+    private static String tiedostonNimi = "tiedot";
     
     private static final int MAX_KPL = 5;//montako kurssia yhdelle taulukolle
     
@@ -66,7 +66,7 @@ public class Kurssit {
     }
     
     
- /**
+    /**
      * HUOM!!   Tee loppuun asti!!! 12.3.
      * Lukee kurssi-lista tiedostosta. 
      * @param hakemisto tiedoston hakemisto
@@ -84,7 +84,7 @@ public class Kurssit {
                     continue;
                 }
                 Kurssi kurssi = new Kurssi();
-                kurssi.parse(s);//parse pitää muokata!!
+                kurssi.parse(s);
                 lisaa(kurssi);
             }
         } catch (FileNotFoundException e) {
@@ -160,17 +160,22 @@ public class Kurssit {
             //taulukko.lisaa(ohjelmointi2);
             //taulukko.lisaa(japani4);
             //taulukko.lisaa(ohjelmointi2);
+            for (int i=0; i<taulukko.getKpl(); i++) {
+                Kurssi kurssi = taulukko.anna(i);
+                System.out.println("Säilytetty taulukon paikalla: " + i);
+                kurssi.tulosta(System.out);
+            }
         } catch (SailoException e) {
             System.err.println(e.getMessage());
         }
         
         
-        System.out.println("=======================Kurssit testi==========================");
+        System.out.println("=====================================");
         
-        for (int i=0; i<taulukko.getKpl(); i++) {
-            Kurssi kurssi = taulukko.anna(i);
-            System.out.println("Säilytetty taulukon paikalla: " + i);
-            kurssi.tulosta(System.out);
+        try {
+            taulukko.tallenna("tiedot");
+        } catch (SailoException e) {
+            System.err.println(e.getMessage());
         }
     }
    
diff --git a/mmkurssit/src/mmkurssit/Tapaaminen.java b/mmkurssit/src/mmkurssit/Tapaaminen.java
index bf72f49..e970ffd 100644
--- a/mmkurssit/src/mmkurssit/Tapaaminen.java
+++ b/mmkurssit/src/mmkurssit/Tapaaminen.java
@@ -148,8 +148,9 @@ public class Tapaaminen {
      * </pre>
      */
     public void rekisteroi() {
-        this.tapaaminenID = nextmID;
-        nextmID++;
+        this.setmID(nextmID);
+        //this.tapaaminenID = nextmID;
+        //nextmID++;
     }
     
     
@@ -161,6 +162,16 @@ public class Tapaaminen {
     }
     
     
+    /**
+     * Varmistetaan, että nextmID on isompi kuin nykyisen suurin nro
+     * @param nro asetettava tapaaminenID
+     */
+    public void setmID(int nro) {
+        this.tapaaminenID = nro;
+        if (this.tapaaminenID >= nextmID) nextmID = this.tapaaminenID+1;
+    }
+    
+    
     /**
      * @return kyseisen tapaamisen kID (eli kurssin ID), joka kertoo mihin kurssiin kyseinen tapaaminen liittyy
      */
@@ -176,6 +187,24 @@ public class Tapaaminen {
     }
     
     
+    
+    /**
+     * @param rivi tiedostosta luettu ja käsitteltävä rivi
+     */
+    public void parse(String rivi) {
+        // TODO Auto-generated method stub
+        
+    }
+    
+    
+    @Override
+    public String toString() {
+        //TODO toteutus!!
+        return "";
+        
+    }
+    
+    
     //==========================================================================
     /**
      * @param args ei käytössä
diff --git a/mmkurssit/src/mmkurssit/Tapaamiset.java b/mmkurssit/src/mmkurssit/Tapaamiset.java
index 42cecdb..066d01e 100644
--- a/mmkurssit/src/mmkurssit/Tapaamiset.java
+++ b/mmkurssit/src/mmkurssit/Tapaamiset.java
@@ -1,8 +1,14 @@
 package mmkurssit;
 
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.FileNotFoundException;
+import java.io.FileOutputStream;
+import java.io.PrintStream;
 import java.util.ArrayList;
 import java.util.Collection;
 import java.util.List;
+import java.util.Scanner;
 
 /**
  * Tietorakenne (tällä kerralla taulukko), jossa säilytetään tapaamiset alkioina.
@@ -13,6 +19,7 @@ import java.util.List;
 public class Tapaamiset {
 
     private Collection<Tapaaminen> alkiot = new ArrayList<Tapaaminen>();
+    private static String tiedostonNimi = "tiedot";
     
 //======================================================
     
@@ -31,6 +38,13 @@ public class Tapaamiset {
     }
     
     
+    /**
+     * @return listan pituus
+     */
+    public int listankoko() {
+        return this.alkiot.size();
+    }
+    
     /**
      * @param kurssiID kyseisen kurssin ID
      * @return Lisa, jossa on tapaamisia, jonka kID on sama kuin parametriksi annettu kurssiID
@@ -83,6 +97,55 @@ public class Tapaamiset {
     }
 
     
+    
+    /**
+     * HUOM!!   Tee loppuun asti!!! 12.3.
+     * Lukee kurssi-lista tiedostosta. 
+     * @param folderName tiedoston hakemisto
+     * @throws SailoException jos lukeminen ei onnistu
+     */
+    public void lueTiedostosta(String folderName) throws SailoException {
+        tiedostonNimi = folderName + "/tapaamiset.dat";
+        
+        File ftied = new File(tiedostonNimi);
+        
+        try (Scanner fileIn = new Scanner(new FileInputStream(ftied))){
+            while ( fileIn.hasNext() ) {
+                String s = fileIn.nextLine();
+                if( s == null || "".equals(s) || s.charAt(0) == ';') {
+                    continue;
+                }
+                Tapaaminen tap = new Tapaaminen();
+                tap.parse(s);//parse pitää muokata!!
+                lisaa(tap);
+            }
+        } catch (FileNotFoundException e) {
+            throw new SailoException("Ei saa luettua tiedostoa" + tiedostonNimi);
+        }
+    }
+    
+    
+    /**
+     * Tallentaa kurssi-data tiedostoon.
+     * @param folderName mihin tallennetaan
+     * @throws SailoException jos tallennus ei onnistu
+     */
+    public void tallenna(String folderName) throws SailoException{
+        //TODO: hakemiston luominen tähän?
+        File ftied = new File(folderName + "/tapaamiset.dat");
+        try (PrintStream fileOut = new PrintStream(new FileOutputStream(ftied, true))){ 
+                                                                    // true = uusi text appendoidaan vanhan tekstin perälle
+            for(int i=0; i<listankoko(); i++) {
+                Tapaaminen tap = annaTapaaminen(i);
+                fileOut.println(tap.toString());
+            }
+        } catch (FileNotFoundException e) {
+            throw new SailoException("Tiedosto " + ftied.getAbsolutePath());
+        }
+        
+    }
+ 
+    
 //=======================================================
 
     /**
diff --git a/mmkurssit/tiedot/kurssit.dat b/mmkurssit/tiedot/kurssit.dat
new file mode 100644
index 0000000..f564c83
--- /dev/null
+++ b/mmkurssit/tiedot/kurssit.dat
@@ -0,0 +1,2 @@
+1|Esimerkkikurssi22|Kokko Vesa
+2|Esimerkkikurssi79|Kokko Vesa
-- 
GitLab