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