diff --git a/Ohj2HT/src/Luokat/Kalenteri.java b/Ohj2HT/src/Luokat/Kalenteri.java index 72d0aa1c9425868af05f3b96990f010e0a1a5729..1ebcf53103ce4d8153c2b69520102fd2e682b8e0 100644 --- a/Ohj2HT/src/Luokat/Kalenteri.java +++ b/Ohj2HT/src/Luokat/Kalenteri.java @@ -1,6 +1,6 @@ package Luokat; -import fi.jyu.mit.fxgui.Dialogs; +import java.io.File; /** * Pääluokka sisältää kaikki reissut ja samalla kaikki saaliit ja vieheet sekä laskurit @@ -12,6 +12,7 @@ public class Kalenteri { private Tulkki lajit; private Tulkki vieheTulkki; private Tulkki kokoTulkki; + public Kalenteri() { String dir = System.getProperty("user.dir"); lajit = new Tulkki(dir + "/../lajit.dat"); @@ -47,9 +48,9 @@ public class Kalenteri { TiedostonHiplailija saalisLaskuri = new TiedostonHiplailija(System.getProperty("user.dir")+ "/../kalaLaskuri.dat"); TiedostonHiplailija vieheet = new TiedostonHiplailija(System.getProperty("user.dir")+ "/../vieheLaskuri.dat"); System.out.println(System.getProperty("user.dir")); - Tulkki lajit = new Tulkki(System.getProperty("user.dir") + "/../lajit.dat"); - Tulkki vieheTulkki = new Tulkki(System.getProperty("user.dir") + "/../vieheTyypit.dat"); - Tulkki kokoTulkki = new Tulkki(System.getProperty("user.dir") + "/../koot.dat"); + this.lajit = new Tulkki(System.getProperty("user.dir") + "/../lajit.dat"); + this.vieheTulkki = new Tulkki(System.getProperty("user.dir") + "/../vieheTyypit.dat"); + this.kokoTulkki = new Tulkki(System.getProperty("user.dir") + "/../koot.dat"); for (int i = aluksi; i < reissumaara; i++){ System.out.println(reissut.getReissut().get(i)); reissu.kirjoita(reissut.getReissut().get(i).toString()); @@ -70,4 +71,33 @@ public class Kalenteri { vieheet.sulje(); return true; } + + public boolean tallennaTietyt() { + this.lajit = new Tulkki(System.getProperty("user.dir") + "/../lajit.dat"); + this.vieheTulkki = new Tulkki(System.getProperty("user.dir") + "/../vieheTyypit.dat"); + this.kokoTulkki = new Tulkki(System.getProperty("user.dir") + "/../koot.dat"); + TiedostonHiplailija reissu = new TiedostonHiplailija(System.getProperty("user.dir") + "/../reissut.dat",false); + TiedostonHiplailija saalis = new TiedostonHiplailija(System.getProperty("user.dir")+ "/../saaliit.dat",false); + TiedostonHiplailija saalisLaskuri = new TiedostonHiplailija(System.getProperty("user.dir")+ "/../kalaLaskuri.dat",false); + TiedostonHiplailija vieheet = new TiedostonHiplailija(System.getProperty("user.dir")+ "/../vieheLaskuri.dat",false); + for (Reissu r : reissut.getReissut()) { + System.out.println(r); + reissu.kirjoita(r.toString()); + + for (Saalis s : r.getSaaliit()) { + saalis.kirjoita(s.tiedotTallenusMuodossa(lajit,vieheTulkki,kokoTulkki)); + } + } + for (String s : kalaLaskuri.tallennusTiedot()){ + saalisLaskuri.kirjoita(s); + } + for (String s : vieheLaskuri.tallennusTiedot()){ + vieheet.kirjoita(s); + } + reissu.sulje(); + saalis.sulje(); + saalisLaskuri.sulje(); + vieheet.sulje(); + return true; + } } diff --git a/Ohj2HT/src/Luokat/Laskuri.java b/Ohj2HT/src/Luokat/Laskuri.java index 3566abe0e18d3edb366e4da474a2f631af86c055..d731ecf4e5fce24f6af9ae36a0577e9b7c9fe8a1 100644 --- a/Ohj2HT/src/Luokat/Laskuri.java +++ b/Ohj2HT/src/Luokat/Laskuri.java @@ -59,6 +59,10 @@ public class Laskuri { arvot.put(id,1); } + public void vahenna(int id){ + arvot.put(id, arvot.get(id)-1); + } + public List<StringAndObject<String>> getArvotAsList(){ diff --git a/Ohj2HT/src/Luokat/Reissu.java b/Ohj2HT/src/Luokat/Reissu.java index 27e989863899d3fcfbef93862ba945c0e3f8812e..9137317aa3d63f537b3020256830a966f75f0cac 100644 --- a/Ohj2HT/src/Luokat/Reissu.java +++ b/Ohj2HT/src/Luokat/Reissu.java @@ -30,7 +30,6 @@ private boolean poistetaanko; this.poistetaanko = false; } - public int getTag() { return reissunTag; diff --git a/Ohj2HT/src/Luokat/Reissut.java b/Ohj2HT/src/Luokat/Reissut.java index fcc0756f61c031756019f62a3f7aa5e3de541d8e..4bc836827bfd9b130d44d8b7c678a85fab01f342 100644 --- a/Ohj2HT/src/Luokat/Reissut.java +++ b/Ohj2HT/src/Luokat/Reissut.java @@ -44,9 +44,6 @@ public class Reissut { if (saalis.getReissunTagi() == a.getTag()) { apuri.add(saalis); } - if (saalis.getReissunTagi() > a.getTag()) { - break; - } } a.setSaaliit(apuri); this.reissut.add(a); diff --git a/Ohj2HT/src/Luokat/TiedostonHiplailija.java b/Ohj2HT/src/Luokat/TiedostonHiplailija.java index 4e1fc05eeb0b446caf34514b2c44d020d9f5615d..dba0117ab3f7ec892f01fb841d92b63314c82e67 100644 --- a/Ohj2HT/src/Luokat/TiedostonHiplailija.java +++ b/Ohj2HT/src/Luokat/TiedostonHiplailija.java @@ -10,9 +10,11 @@ public class TiedostonHiplailija { private PrintStream kirjoittaja; private Scanner lukija; + private String tiedosto; public TiedostonHiplailija(String tiedosto) { try{ + this.tiedosto = tiedosto; this.kirjoittaja = new PrintStream(new FileOutputStream(tiedosto, true)); this.lukija = new Scanner(new FileInputStream(new File(tiedosto))); @@ -20,6 +22,17 @@ public class TiedostonHiplailija { System.err.println("Tiedosto ei aukea: " + ex.getMessage()); } } + + public TiedostonHiplailija(String tiedosto, boolean appendataanko){ + try{ + this.tiedosto = tiedosto; + this.kirjoittaja = new PrintStream(new FileOutputStream(tiedosto, appendataanko)); + this.lukija = new Scanner(new FileInputStream(new File(tiedosto))); + + } catch (FileNotFoundException ex) { + System.err.println("Tiedosto ei aukea: " + ex.getMessage()); + } + } public void kirjoita(String sisalto) { kirjoittaja.println(sisalto); @@ -38,14 +51,15 @@ public class TiedostonHiplailija { this.lukija.close(); } -public List<String> lueRivit() { + public List<String> lueRivit() { List<String> t = new ArrayList<>(); while (lukija.hasNextLine()) { String s = lukija.nextLine(); if (!s.startsWith(";") && !s.isEmpty()) t.add(s); } return t; -} + } + public static void main(String[] args) { TiedostonHiplailija t = new TiedostonHiplailija(System.getProperty("user.dir") + "/../reissut.dat"); diff --git a/Ohj2HT/src/fxKalenteri/KalenteriGUIController.java b/Ohj2HT/src/fxKalenteri/KalenteriGUIController.java index 6979690f9224c531e6452ad82b5e899daf1e5400..3850fbd18d800b71313e58f8f07a2fa787316cb6 100644 --- a/Ohj2HT/src/fxKalenteri/KalenteriGUIController.java +++ b/Ohj2HT/src/fxKalenteri/KalenteriGUIController.java @@ -2,6 +2,7 @@ package fxKalenteri; import java.awt.*; import fi.jyu.mit.fxgui.*; +import javafx.application.Platform; import javafx.beans.property.SimpleIntegerProperty; import javafx.beans.property.SimpleStringProperty; import javafx.collections.FXCollections; @@ -36,6 +37,7 @@ public class KalenteriGUIController implements Initializable { private SimpleIntegerProperty saalismaara = new SimpleIntegerProperty(); private SimpleStringProperty parasViehe = new SimpleStringProperty(); private int aluksi; + private boolean onkoPoistettu = false; private ObservableList<StringAndObject<String>> lista; @FXML private void handleTallenna() { tallenna(); @@ -91,7 +93,7 @@ public class KalenteriGUIController implements Initializable { * </pre> */ private void tekstienPaivitys() { - Saaliisi.setItems(FXCollections.observableArrayList(kalenteri.getKalaLaskuri().getArvotAsList())); + Platform.runLater(()-> Saaliisi.setItems(FXCollections.observableArrayList(kalenteri.getKalaLaskuri().getArvotAsList()))); reissumaara.set(kalenteri.getReissut().getReissut().size()); saalismaara.set(kalenteri.getKalaLaskuri().getSumma()); int paras = kalenteri.getVieheLaskuri().getSuurinId(); @@ -102,9 +104,15 @@ public class KalenteriGUIController implements Initializable { } private void tallenna() { - Dialogs.showMessageDialog("Tallennetetaan! Mutta ei toimi vielä"); kirjoitaLisaaReissu(); kalenteri.getReissut().sort(); + if (onkoPoistettu){ + if (kalenteri.tallennaTietyt()){ + Dialogs.showMessageDialog("Tallennus onnistui!"); + aluksi = reissumaara.get(); + return; + } + } if ( reissumaara.get() - aluksi > 0){ if (kalenteri.tallenna(aluksi, reissumaara.get())) { Dialogs.showMessageDialog("Tallennus onnistui!"); @@ -151,9 +159,13 @@ public class KalenteriGUIController implements Initializable { // Poistaminen if (valittuReissu.getpoistetaanko()) { + onkoPoistettu = true; System.out.println("Ennen poistoa " + kalenteri.getReissut().getReissut().size()); System.out.println(valittuReissu.getpoistetaanko()); - + for (Saalis s: valittuReissu.getSaaliit()){ + kalenteri.getKalaLaskuri().vahenna(kalenteri.getLajiTulkki().getIdFromValue(s.getLaji())); + kalenteri.getVieheLaskuri().vahenna(kalenteri.getVieheTulkki().getIdFromValue(s.getViehe().tyyppi())); + } kalenteri.getReissut().removeReissu(); System.out.println("Jälkeen " + kalenteri.getReissut().getReissut().size()); List<Reissu> r = kalenteri.getReissut().getReissut(); diff --git a/kalaLaskuri.dat b/kalaLaskuri.dat index 251ca303eb2b6dd98f1a1c441ef49bd93ecdd812..fbb0867299c6ac4d1d3aca497a88bcc152a77e54 100644 --- a/kalaLaskuri.dat +++ b/kalaLaskuri.dat @@ -1,27 +1,5 @@ -; saatujen kalalajien määrä, kenttien järjestys seuraava -; lajinId|määrä - -1|3 -2|2 -4|1 -5|1 -1|3 -2|2 -3|1 -4|1 -5|1 -1|3 +1|2 2|2 3|1 4|1 5|2 -1|3 -2|2 -3|2 -4|1 -5|2 -1|3 -2|3 -3|2 -4|1 -5|2 diff --git a/reissut.dat b/reissut.dat index 0a5cd889122642f1fa19ae60a1f16bede3783a25..719b3f95e18378a0027bed5ecfbbbfc11a4f9a69 100644 --- a/reissut.dat +++ b/reissut.dat @@ -1,9 +1,6 @@ -; Kenttien järjestys tiedostossa on seuraava: -; tag|PVM|Sijainti|Keli - -1|12.03.2025|Muurame|lumi sade -2|11.05.2025|Laukaa|aurinkoinen 4|17.11.2025|Vuontee|aurinkoinen 5|16.11.2025|Tikkakoski|sateinen +2|11.05.2025|Laukaa|aurinkoinen +4|20.03.2025|Keljo|aurinkoinen 6|18.03.2025|Muurame|Aurinkoinen 3|12.03.2024|Laukaa|Pilvinen diff --git a/saaliit.dat b/saaliit.dat index 947805a7d655be2fc89d84008bf517b13b3e84f9..7fc46485ca261a3416bd8a53262f6a8959c980ba 100644 --- a/saaliit.dat +++ b/saaliit.dat @@ -1,17 +1,8 @@ -; Kenttien järjestys tiedostossa on seuraava: -; saaliinId|laji|koko|ReissuTagi|vieheentyyppi|vieheenväri - -1|1|1|1|1|sinine -2|1|3|2|2|Fire tiger -3|2|1|2|1|hopea -4|4|1|3|1|vihreä 5|1|3|4|3|sininen 6|2|1|4|1|hopea 7|5|1|5|1|kupari +2|1|3|2|2|Fire tiger +3|2|1|2|1|hopea +5|5|1|4|3|musta 8|3|2|6|1|hopeinen 4|4|1|3|1|vihreä -4|4|1|3|1|vihreä -4|4|1|3|1|vihreä -4|4|1|3|1|vihreä -4|4|1|3|1|vihreä -4|4|1|3|1|vihreä diff --git a/vieheLaskuri.dat b/vieheLaskuri.dat index 3d8d94b5703446d6e98ac59b8ad5263216f11411..c088711a92b2e697158b3f80fef3924f48e054af 100644 --- a/vieheLaskuri.dat +++ b/vieheLaskuri.dat @@ -1,18 +1,3 @@ -; Kenttien järjestys tiedostossa seuraava -; Id|määrä - -1|5 -2|2 -3|1 -1|6 -2|2 -3|1 -1|6 -2|2 -3|2 -1|6 -2|3 -3|2 -1|6 +1|3 2|4 3|2