Ominaisuus valmis?

Signed-off-by: laurimaaninka <lauri.maaninka@gmail.com>
This commit is contained in:
2026-04-09 23:35:21 +03:00
parent 4067ae188b
commit 8cd7e23587
6 changed files with 38 additions and 47 deletions
+2 -9
View File
@@ -1,18 +1,11 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<project version="4"> <project version="4">
<component name="DataSourceManagerImpl" format="xml" multifile-model="true"> <component name="DataSourceManagerImpl" format="xml" multifile-model="true">
<data-source source="LOCAL" name="tietokanta" uuid="8c9f99af-23ef-4827-90d5-7f18c4b74bec"> <data-source source="LOCAL" name="testikanta.db" uuid="99c09b65-0631-4e8f-9a1e-89c4fd901b4e">
<driver-ref>sqlite.xerial</driver-ref> <driver-ref>sqlite.xerial</driver-ref>
<synchronize>true</synchronize> <synchronize>true</synchronize>
<jdbc-driver>org.sqlite.JDBC</jdbc-driver> <jdbc-driver>org.sqlite.JDBC</jdbc-driver>
<jdbc-url>jdbc:sqlite:$PROJECT_DIR$/tietokanta.db</jdbc-url> <jdbc-url>jdbc:sqlite:C:\Users\TheHy\Ohjelmointi\Ruokamanageri\testikanta.db</jdbc-url>
<working-dir>$ProjectFileDir$</working-dir>
</data-source>
<data-source source="LOCAL" name="Kuljetusruokasovellus" uuid="c8259506-eca1-4fc2-b380-a099ca4c8bb4">
<driver-ref>sqlite.xerial</driver-ref>
<synchronize>true</synchronize>
<jdbc-driver>org.sqlite.JDBC</jdbc-driver>
<jdbc-url>jdbc:sqlite:C:\Users\TheHy\OneDrive\Kuljetusruokasovellus\tietokanta.db</jdbc-url>
<working-dir>$ProjectFileDir$</working-dir> <working-dir>$ProjectFileDir$</working-dir>
</data-source> </data-source>
</component> </component>
-10
View File
@@ -1,10 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="db-forest-configuration">
<data version="2">.
----------------------------------------
1:0:8c9f99af-23ef-4827-90d5-7f18c4b74bec
2:0:c8259506-eca1-4fc2-b380-a099ca4c8bb4
.</data>
</component>
</project>
+26 -3
View File
@@ -16,6 +16,21 @@ public class Kuljetus implements TietokantaOlio {
private int salaatit, pääruoat, jälkiruoat; private int salaatit, pääruoat, jälkiruoat;
private String osoite, lisätieto, avainTieto, ruokarajoite; private String osoite, lisätieto, avainTieto, ruokarajoite;
public Kuljetus(Kuljetus vanha) {
this.id = vanha.id;
this.asiakasID = vanha.asiakasID;
this.nimi = vanha.nimi;
this.kuljetusPäivämäärä = vanha.kuljetusPäivämäärä;
this.kuljetusKierros = vanha.kuljetusKierros;
this.salaatit = vanha.salaatit;
this.pääruoat = vanha.pääruoat;
this.jälkiruoat = vanha.jälkiruoat;
this.osoite = vanha.osoite;
this.lisätieto = vanha.lisätieto;
this.avainTieto = vanha.avainTieto;
this.ruokarajoite = vanha.ruokarajoite;
}
public Kuljetus(Asiakas asiakas, LocalDate pvm, int kuljetusKierros) { public Kuljetus(Asiakas asiakas, LocalDate pvm, int kuljetusKierros) {
this.asiakasID = asiakas.getId(); this.asiakasID = asiakas.getId();
this.nimi = asiakas.getNimi(); this.nimi = asiakas.getNimi();
@@ -276,9 +291,17 @@ public class Kuljetus implements TietokantaOlio {
} }
public void palautaMäärät(Asiakas asiakas) { public void palautaMäärät(Asiakas asiakas) {
setSalaatit(asiakas.getSalaatit()); int kuljetusKerroin = switch (kuljetusPäivämäärä.getDayOfWeek()) {
setPääruoat(asiakas.getPääruoat()); case MONDAY -> asiakas.getMaanantaiKpl();
setJälkiruoat(asiakas.getJälkiruoat()); case TUESDAY -> asiakas.getTiistaiKpl();
case WEDNESDAY -> asiakas.getKeskiviikkoKpl();
case THURSDAY -> asiakas.getTorstaiKpl();
case FRIDAY -> asiakas.getPerjantaiKpl();
default -> 0;
};
setSalaatit(asiakas.getSalaatit() * kuljetusKerroin);
setPääruoat(asiakas.getPääruoat() * kuljetusKerroin);
setJälkiruoat(asiakas.getJälkiruoat() * kuljetusKerroin);
setLisätieto(asiakas.getLisätiedot()); setLisätieto(asiakas.getLisätiedot());
} }
@@ -141,7 +141,7 @@ public class Asiakashallinta extends TabPohja {
if (valittuAsiakas != null) { if (valittuAsiakas != null) {
Alert alert = new Alert(Alert.AlertType.CONFIRMATION); Alert alert = new Alert(Alert.AlertType.CONFIRMATION);
alert.setTitle("Oletko varma?"); alert.setTitle("Oletko varma?");
alert.setHeaderText("Poistetaanko valittu valittu asiakas?"); alert.setHeaderText("Poistetaanko valittu asiakas?");
alert.setContentText(valittuAsiakas.getNimi()); alert.setContentText(valittuAsiakas.getNimi());
Optional<ButtonType> result = alert.showAndWait(); Optional<ButtonType> result = alert.showAndWait();
if (result.isPresent() && result.get() == ButtonType.OK) { if (result.isPresent() && result.get() == ButtonType.OK) {
@@ -9,7 +9,6 @@ import fi.lpam.gui.elementit.MaaraTableColumn;
import fi.lpam.gui.elementit.TabPohja; import fi.lpam.gui.elementit.TabPohja;
import javafx.beans.property.SimpleBooleanProperty; import javafx.beans.property.SimpleBooleanProperty;
import javafx.beans.value.ObservableValue;
import javafx.collections.FXCollections; import javafx.collections.FXCollections;
import javafx.collections.ObservableList; import javafx.collections.ObservableList;
import javafx.geometry.Pos; import javafx.geometry.Pos;
@@ -19,7 +18,6 @@ import javafx.scene.control.cell.PropertyValueFactory;
import javafx.scene.control.cell.TextFieldTableCell; import javafx.scene.control.cell.TextFieldTableCell;
import javafx.scene.layout.BorderPane; import javafx.scene.layout.BorderPane;
import javafx.scene.layout.HBox; import javafx.scene.layout.HBox;
import javafx.util.Callback;
import java.time.LocalDate; import java.time.LocalDate;
import java.util.ArrayList; import java.util.ArrayList;
@@ -95,7 +93,7 @@ public class KuljetusListat extends TabPohja {
TableColumn<Kuljetus, Boolean> tcNappi = new TableColumn<>("Kuljeta"); TableColumn<Kuljetus, Boolean> tcNappi = new TableColumn<>("Kuljeta");
tcNappi.setMinWidth(100); tcNappi.setMinWidth(100);
tcNappi.setCellFactory(_ -> new KuljetaTableCell(asiakkaat, tableView)); tcNappi.setCellFactory(_ -> new KuljetaTableCell(asiakkaat));
tcNappi.setCellValueFactory(features -> new SimpleBooleanProperty(features.getValue() != null)); tcNappi.setCellValueFactory(features -> new SimpleBooleanProperty(features.getValue() != null));
TableColumn<Kuljetus, String> tcNimi = new TableColumn<>("Nimi"); TableColumn<Kuljetus, String> tcNimi = new TableColumn<>("Nimi");
@@ -3,49 +3,36 @@ package fi.lpam.gui.elementit;
import fi.lpam.dataluokat.Asiakas; import fi.lpam.dataluokat.Asiakas;
import fi.lpam.dataluokat.Kuljetus; import fi.lpam.dataluokat.Kuljetus;
import fi.lpam.gui.KuljetusListat; import fi.lpam.gui.KuljetusListat;
import javafx.collections.FXCollections;
import javafx.collections.ObservableList;
import javafx.geometry.Insets; import javafx.geometry.Insets;
import javafx.scene.control.Button; import javafx.scene.control.Button;
import javafx.scene.control.ContentDisplay; import javafx.scene.control.ContentDisplay;
import javafx.scene.control.TableCell; import javafx.scene.control.TableCell;
import javafx.scene.control.TableView;
import javafx.scene.layout.StackPane; import javafx.scene.layout.StackPane;
import java.sql.Array;
import java.util.ArrayList;
import java.util.Collections;
import java.util.HashMap; import java.util.HashMap;
public class KuljetaTableCell extends TableCell<Kuljetus, Boolean> { public class KuljetaTableCell extends TableCell<Kuljetus, Boolean> {
private final Button nappi = new Button("Vaihda");
private final StackPane paddedNappi = new StackPane(); private final StackPane paddedNappi = new StackPane();
public KuljetaTableCell(final HashMap<Integer, Asiakas> asiakkaat, final TableView<Kuljetus> table) { public KuljetaTableCell(HashMap<Integer, Asiakas> asiakkaat) {
paddedNappi.setPadding(new Insets(3)); paddedNappi.setPadding(new Insets(3));
Button nappi = new Button("Muuta");
paddedNappi.getChildren().add(nappi); paddedNappi.getChildren().add(nappi);
nappi.setOnAction(_ -> { nappi.setOnMouseClicked(_ -> {
getTableView().getSelectionModel().select(getIndex());
Kuljetus kuljetus = getTableRow().getItem(); Kuljetus kuljetus = getTableRow().getItem();
System.out.println(kuljetus);
if (kuljetus == null) return; if (kuljetus == null) return;
if (kuljetus.kuljetetaan()) { if (kuljetus.kuljetetaan()) {
kuljetus.nollaa(); kuljetus.nollaa();
System.out.println("Nollattu"); } else {
System.out.println(kuljetus); kuljetus.palautaMäärät(asiakkaat.get(kuljetus.getAsiakasID()));
} }
else { getTableRow().setItem(new Kuljetus(kuljetus));
Asiakas asiakas = asiakkaat.get(kuljetus.getAsiakasID());
System.out.println(asiakas);
kuljetus.palautaMäärät(asiakas);
System.out.println("Palautettu");
}
table.refresh();
KuljetusListat.tallennusStatus.setText("Tallennettu: Ei"); KuljetusListat.tallennusStatus.setText("Tallennettu: Ei");
}); });
} }
/** places an add button in the row only if the row is not empty. */
@Override protected void updateItem(Boolean item, boolean empty) { @Override protected void updateItem(Boolean item, boolean empty) {
super.updateItem(item, empty); super.updateItem(item, empty);
if (!empty) { if (!empty) {