From 8111efbfe10f4592abf2963c55f57388b6f5eb06 Mon Sep 17 00:00:00 2001 From: Lahtinen Konsta Aleksi <konsta.a.lahtinen@student.jyu.fi> Date: Tue, 1 Apr 2025 13:05:51 +0300 Subject: [PATCH] reissun muokkaus --- Ohj2HT/src/Luokat/Kalenteri.java | 1 + Ohj2HT/src/Luokat/Reissu.java | 8 +- Ohj2HT/src/Luokat/Saaliit.java | 23 ++++-- Ohj2HT/src/Luokat/SaaliitJaReissu.java | 4 + .../fxKalenteri/KalenteriGUIController.java | 23 +++--- .../LisaaReissuGUIController.java | 4 +- Ohj2HT/src/fxReissu/ReissuGUIController.java | 82 ++++++++++++------- Ohj2HT/src/fxReissu/ReissuGUIView.fxml | 6 +- kalaLaskuri.dat | 4 +- reissut.dat | 6 +- saaliit.dat | 6 +- vieheLaskuri.dat | 4 +- 12 files changed, 107 insertions(+), 64 deletions(-) create mode 100644 Ohj2HT/src/Luokat/SaaliitJaReissu.java diff --git a/Ohj2HT/src/Luokat/Kalenteri.java b/Ohj2HT/src/Luokat/Kalenteri.java index ac0cf8f..2e833a6 100644 --- a/Ohj2HT/src/Luokat/Kalenteri.java +++ b/Ohj2HT/src/Luokat/Kalenteri.java @@ -111,6 +111,7 @@ public class Kalenteri { paivitaTulkit(); getKalaLaskuri().kasvata(getLajiTulkki().getIdFromValue(s.getLaji())); getVieheLaskuri().kasvata(getVieheTulkki().getIdFromValue(s.getViehe().tyyppi())); + this.saaliit.lisaa(s); } getReissut().lisaaListaan(r); diff --git a/Ohj2HT/src/Luokat/Reissu.java b/Ohj2HT/src/Luokat/Reissu.java index dc03460..58651c4 100644 --- a/Ohj2HT/src/Luokat/Reissu.java +++ b/Ohj2HT/src/Luokat/Reissu.java @@ -32,6 +32,12 @@ public class Reissu { this.saaliit = saaliit; this.poistetaanko = false; } + public void asetaKentat(LocalDate Pvm, String sijainti, String keli) { + this.Pvm = Pvm; + this.sijainti = sijainti; + this.keli = keli; + } + /** * get metodit palauttavat halutun asian halutussa muodossa * @@ -176,7 +182,7 @@ public class Reissu { int tagi = Integer.parseInt(t[0]); this.reissunTag = tagi; if (reissunTag > SeuraavanReissunTag) { - this.reissunTag = SeuraavanReissunTag +1; + SeuraavanReissunTag = this.reissunTag + 1; } else { SeuraavanReissunTag++; diff --git a/Ohj2HT/src/Luokat/Saaliit.java b/Ohj2HT/src/Luokat/Saaliit.java index 2903494..ace228d 100644 --- a/Ohj2HT/src/Luokat/Saaliit.java +++ b/Ohj2HT/src/Luokat/Saaliit.java @@ -1,16 +1,13 @@ package Luokat; -import fi.jyu.mit.fxgui.Dialogs; - import java.util.ArrayList; -import java.util.Arrays; import java.util.List; public class Saaliit { private Saalis[] saaliit; private int koko; private int index = 0; - + private List<Integer> poistettavatId = new ArrayList<>(); /** * muodostaja tyjhƤƤn taulukkoon @@ -99,12 +96,18 @@ public class Saaliit { saaliit.lisaa(s3); } - public void poista(int saaliinId) { + public void merkkaaPoistettavaksi(int saaliinId) { int poistettava = binHaku(saaliinId); if (poistettava == -1) { return; } - saaliit[poistettava] = null; + poistettavatId.add(poistettava); + } + + public void poista() { + for (int i : poistettavatId) { + saaliit[i] = null; + } } public int binHaku(int key) { @@ -124,4 +127,12 @@ public class Saaliit { } return -1; } + + public boolean loytyyko(Saalis saalis) { + int indeksi = binHaku(saalis.getSaaliinId()); + if (indeksi == -1) { + return false; + } + return true; + } } diff --git a/Ohj2HT/src/Luokat/SaaliitJaReissu.java b/Ohj2HT/src/Luokat/SaaliitJaReissu.java new file mode 100644 index 0000000..df4da9c --- /dev/null +++ b/Ohj2HT/src/Luokat/SaaliitJaReissu.java @@ -0,0 +1,4 @@ +package Luokat; + +public record SaaliitJaReissu(Saaliit saaliit, Reissu reissu) { +} diff --git a/Ohj2HT/src/fxKalenteri/KalenteriGUIController.java b/Ohj2HT/src/fxKalenteri/KalenteriGUIController.java index bab8673..dfa68e2 100644 --- a/Ohj2HT/src/fxKalenteri/KalenteriGUIController.java +++ b/Ohj2HT/src/fxKalenteri/KalenteriGUIController.java @@ -11,7 +11,6 @@ import javafx.fxml.FXML; import javafx.fxml.Initializable; import javafx.scene.control.Label; import javafx.scene.control.TextField; -import javafx.scene.input.KeyEvent; import java.awt.Desktop; import java.io.IOException; @@ -155,13 +154,10 @@ public class KalenteriGUIController implements Initializable { return; } } - if ( reissumaara.get() - aluksi > 0){ - if (kalenteri.tallennaTietyt()) { + if (kalenteri.tallennaTietyt()) { Dialogs.showMessageDialog("Tallennus onnistui!"); aluksi = reissumaara.get(); - } } - } @@ -192,13 +188,11 @@ public class KalenteriGUIController implements Initializable { if (reissunNimi == null || reissunNimi.trim().isEmpty()) return; Reissu valittuReissu = this.reissutLista.getSelectedObject(); - + int saaliitLkm = valittuReissu.getSaaliit().size(); ModalController.showModal( KalenteriMain.class.getResource("/fxReissu/ReissuGUIView.fxml"), - "Reissu " + this.reissutLista.getSelectedText(),null, valittuReissu); + "Reissu " + this.reissutLista.getSelectedText(),null, new SaaliitJaReissu(kalenteri.getSaaliit(),valittuReissu)); - - // Poistaminen if (valittuReissu.getpoistetaanko()) { onkoPoistettu = true; @@ -207,8 +201,9 @@ public class KalenteriGUIController implements Initializable { for (Saalis s: valittuReissu.getSaaliit()){ kalenteri.getKalaLaskuri().vahenna(kalenteri.getLajiTulkki().getIdFromValue(s.getLaji())); kalenteri.getVieheLaskuri().vahenna(kalenteri.getVieheTulkki().getIdFromValue(s.getViehe().tyyppi())); - kalenteri.getSaaliit().poista(s.getSaaliinId()); + kalenteri.getSaaliit().merkkaaPoistettavaksi(s.getSaaliinId()); } + kalenteri.getSaaliit().poista(); kalenteri.getReissut().removeReissu(); System.out.println("JƤlkeen " + kalenteri.getReissut().getReissut().size()); List<Reissu> r = kalenteri.getReissut().getReissut(); @@ -219,7 +214,13 @@ public class KalenteriGUIController implements Initializable { kirjoitaReissut(); tekstienPaivitys(); } - + return; + } + if (saaliitLkm < valittuReissu.getSaaliit().size()) { + for (int i = saaliitLkm; i < valittuReissu.getSaaliit().size(); i++) { + kalenteri.getKalaLaskuri().kasvata(kalenteri.getLajiTulkki().getIdFromValue(valittuReissu.getSaaliit().get(i).getLaji())); + } + tekstienPaivitys(); } diff --git a/Ohj2HT/src/fxLisaaReissu/LisaaReissuGUIController.java b/Ohj2HT/src/fxLisaaReissu/LisaaReissuGUIController.java index 617a821..d80953c 100644 --- a/Ohj2HT/src/fxLisaaReissu/LisaaReissuGUIController.java +++ b/Ohj2HT/src/fxLisaaReissu/LisaaReissuGUIController.java @@ -75,9 +75,7 @@ public class LisaaReissuGUIController implements Initializable, ModalControllerI ModalController.showModal(KalenteriMain.class.getResource("/fxKaljoja/KalojaGUIView.fxml"), "LisƤƤ saalis",null,saaliit); - for (Saalis saalis : saaliit) { - kale.getSaaliit().lisaa(saalis); - } + liitaKaloja(); } diff --git a/Ohj2HT/src/fxReissu/ReissuGUIController.java b/Ohj2HT/src/fxReissu/ReissuGUIController.java index e8aa77f..177b6c6 100644 --- a/Ohj2HT/src/fxReissu/ReissuGUIController.java +++ b/Ohj2HT/src/fxReissu/ReissuGUIController.java @@ -4,6 +4,8 @@ import java.time.LocalDate; import java.util.List; import Luokat.Reissu; +import Luokat.Saaliit; +import Luokat.SaaliitJaReissu; import Luokat.Saalis; import fi.jyu.mit.fxgui.Dialogs; import fi.jyu.mit.fxgui.ModalController; @@ -21,10 +23,10 @@ import javafx.scene.control.TextField; * @version 29.1.2025 * Controller tietyn reissun nƤyttƤmisikkunaa varten */ -public class ReissuGUIController implements ModalControllerInterface<Reissu> { +public class ReissuGUIController implements ModalControllerInterface<SaaliitJaReissu> { private String label; private Reissu r; - + private Saaliit s; @FXML private Label reissuLabel; @@ -44,34 +46,63 @@ public class ReissuGUIController implements ModalControllerInterface<Reissu> { + @FXML public void handleLisaa() { + lisaaSaaliita(); + } + + @FXML + public void handleJatka() { + jatka(); + ModalController.closeStage(jatkaNappi); + } + + private void jatka() { + LocalDate date = Reissu.sToDate(ReissuPvm.getText()); + if (date == null) { + Dialogs.showMessageDialog("Virheellinen pƤivƤmƤƤrƤmuoto: " + ReissuPvm.getText() + "\nSyƶtƤ muodossa pp-kk-vvvv."); + return; + } + String uusPvm = ReissuPvm.getText(); + r.asetaKentat(Reissu.sToDate(uusPvm), ReissuSijainti.getText(), ReissuKeli.getText()); + for (Saalis saalis : r.getSaaliit()) { + if (!s.loytyyko(saalis)) { + s.lisaa(saalis); + saalis.setReissunTagi(r.getTag()); + } + } + + } + + @FXML + void handlePoista() { + r.poistetaan(); + + ModalController.closeStage(ReissuSijainti); + } + @Override - public Reissu getResult() { + public SaaliitJaReissu getResult() { String pvm = ReissuPvm.getText(); - - return new Reissu(Reissu.sToDate(pvm),ReissuSijainti.getText(), ReissuKeli.getText(), List.of(), false); + return new SaaliitJaReissu(s,r); } @Override - public void setDefault(Reissu reissu) { - if (reissu == null) return; - - this.r = reissu; - - ReissuPvm.appendText(reissu.getPvmString()); - ReissuKeli.appendText(reissu.getKeli()); - ReissuSijainti.appendText(reissu.getSijainti()); - + public void setDefault(SaaliitJaReissu sr) { + if (sr == null) return; + + this.r = sr.reissu(); + this.s = sr.saaliit(); + ReissuPvm.appendText(r.getPvmString()); + ReissuKeli.appendText(r.getKeli()); + ReissuSijainti.appendText(r.getSijainti()); + ReissunSaalis.clear(); - for(Saalis s : reissu.getSaaliit()){ + for(Saalis s : r.getSaaliit()){ Platform.runLater(()->{ReissunSaalis.appendText( "Sait " + s.getLaji() + " " + s.getKoko()+ ", vieheellƤ " + s.getViehe().vari()+ " " + s.getViehe().tyyppi());ReissunSaalis.appendText("\n");}); } } - @FXML public void handleLisaa() { - lisaaSaaliita(); - } - private void lisaaSaaliita() { LocalDate date = Reissu.sToDate(ReissuPvm.getText()); if (date == null) { @@ -96,21 +127,12 @@ public class ReissuGUIController implements ModalControllerInterface<Reissu> { @FXML public void initialize() { - + } @Override public void handleShown() { } - @FXML - void handleJatka() { - ModalController.closeStage(jatkaNappi); - } - @FXML - void handlePoista() { - r.poistetaan(); - - ModalController.closeStage(ReissuSijainti); - } + } \ No newline at end of file diff --git a/Ohj2HT/src/fxReissu/ReissuGUIView.fxml b/Ohj2HT/src/fxReissu/ReissuGUIView.fxml index d2386a8..75d46f2 100644 --- a/Ohj2HT/src/fxReissu/ReissuGUIView.fxml +++ b/Ohj2HT/src/fxReissu/ReissuGUIView.fxml @@ -25,17 +25,17 @@ <RowConstraints minHeight="10.0" prefHeight="30.0" vgrow="SOMETIMES" /> </rowConstraints> <children> - <TextField fx:id="ReissuPvm" editable="false" promptText="SyƶtƤ pvm" GridPane.columnIndex="1"> + <TextField fx:id="ReissuPvm" promptText="SyƶtƤ pvm" GridPane.columnIndex="1"> <GridPane.margin> <Insets right="5.0" /> </GridPane.margin> </TextField> - <TextField fx:id="ReissuSijainti" editable="false" promptText="SyƶtƤ sijainti" GridPane.columnIndex="1" GridPane.rowIndex="1"> + <TextField fx:id="ReissuSijainti" promptText="SyƶtƤ sijainti" GridPane.columnIndex="1" GridPane.rowIndex="1"> <GridPane.margin> <Insets right="5.0" /> </GridPane.margin> </TextField> - <TextField fx:id="ReissuKeli" editable="false" promptText="SyƶtƤ keli" GridPane.columnIndex="1" GridPane.rowIndex="2"> + <TextField fx:id="ReissuKeli" promptText="SyƶtƤ keli" GridPane.columnIndex="1" GridPane.rowIndex="2"> <GridPane.margin> <Insets right="5.0" /> </GridPane.margin> diff --git a/kalaLaskuri.dat b/kalaLaskuri.dat index 0be46e8..7449d4e 100644 --- a/kalaLaskuri.dat +++ b/kalaLaskuri.dat @@ -1,6 +1,6 @@ -1|2 +1|3 2|2 3|1 4|1 5|1 -6|0 +6|1 diff --git a/reissut.dat b/reissut.dat index 03715b0..d51a09f 100644 --- a/reissut.dat +++ b/reissut.dat @@ -1,5 +1,5 @@ 1|17.11.2025|Vuontee|aurinkoinen 2|16.11.2025|Tikkakoski|sateinen -3|11.05.2025|Laukaa|aurinkoinen -5|19.03.2025|Rovaniemi|Aurinkoinen -7|12.03.2024|Laukaa|Pilvinen +3|18.05.2025|Laukaa|aurinkoinen +7|30.03.2025|Rovaniemi|aurinkoinen +6|12.03.2024|Laukaa|Pilvinen diff --git a/saaliit.dat b/saaliit.dat index 1c6ca5c..9c94054 100644 --- a/saaliit.dat +++ b/saaliit.dat @@ -2,8 +2,8 @@ 3|2|1|2|1|hopea 4|4|1|3|1|vihreƤ 6|2|1|1|1|hopea -7|5|1|5|1|kupari 8|3|2|6|1|hopeinen -9|1|2|7|1|sininen -10|3|3|7|2|keltainen 11|1|3|1|3|sininen +12|6|2|7|2|sininen +13|5|1|3|1|sininen +14|1|3|6|2|punainen diff --git a/vieheLaskuri.dat b/vieheLaskuri.dat index 6d7f15d..edf95a1 100644 --- a/vieheLaskuri.dat +++ b/vieheLaskuri.dat @@ -1,3 +1,3 @@ -1|5 -2|1 +1|4 +2|2 3|1 -- GitLab