From 690668d61ab2d1dad702d3e6cc02fddc3b5ff828 Mon Sep 17 00:00:00 2001 From: Lahtinen Konsta Aleksi <konsta.a.lahtinen@student.jyu.fi> Date: Fri, 21 Mar 2025 15:40:25 +0200 Subject: [PATCH] poistaminen toimii --- Ohj2HT/src/Luokat/Kalenteri.java | 38 +++++++++++++++++-- Ohj2HT/src/Luokat/Laskuri.java | 4 ++ Ohj2HT/src/Luokat/Reissu.java | 1 - Ohj2HT/src/Luokat/Reissut.java | 3 -- Ohj2HT/src/Luokat/TiedostonHiplailija.java | 18 ++++++++- .../fxKalenteri/KalenteriGUIController.java | 18 +++++++-- kalaLaskuri.dat | 24 +----------- reissut.dat | 7 +--- saaliit.dat | 15 ++------ vieheLaskuri.dat | 17 +-------- 10 files changed, 76 insertions(+), 69 deletions(-) diff --git a/Ohj2HT/src/Luokat/Kalenteri.java b/Ohj2HT/src/Luokat/Kalenteri.java index 72d0aa1..1ebcf53 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 3566abe..d731ecf 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 27e9898..9137317 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 fcc0756..4bc8368 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 4e1fc05..dba0117 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 6979690..3850fbd 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 251ca30..fbb0867 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 0a5cd88..719b3f9 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 947805a..7fc4648 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 3d8d94b..c088711 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 -- GitLab