Projektin moduulirakenteen formatointi

Signed-off-by: laurimaaninka <lauri.maaninka@gmail.com>
This commit is contained in:
2026-04-12 20:25:49 +03:00
parent 8cf1d03e5c
commit e83bdee4d0
33 changed files with 82 additions and 92 deletions
@@ -1,204 +0,0 @@
package fi.lpam.gui;
import fi.lpam.dataluokat.Asiakas;
import fi.lpam.gui.elementit.IntegerSpinner;
import fi.lpam.gui.elementit.TabPohja;
import fi.lpam.Main;
import javafx.geometry.Insets;
import javafx.scene.Scene;
import javafx.scene.control.*;
import javafx.scene.image.Image;
import javafx.scene.layout.GridPane;
import javafx.stage.Stage;
import java.util.Objects;
public class AsiakasIkkuna extends Stage {
final Asiakas käsiteltäväAsiakas;
final TextField tfNimi, tfOsoite, tfRuokarajoitteet, tfAvainTieto, tfLisätiedot;
final IntegerSpinner tfMaanantai, tfTiistai, tfKeskiviikko, tfTorstai, tfPerjantai, tfSalaatit, tfPääruoat, tfJälkiruoat;
/**
* Luo ikkunan jossa muokataan saatua asiakasta
* @param käsiteltäväAsiakas voi olla uusi, tai vanha. Ikkuna ei välitä
*/
public AsiakasIkkuna(Asiakas käsiteltäväAsiakas) {
this.käsiteltäväAsiakas = käsiteltäväAsiakas;
this.setTitle("Asiakasikkuna");
GridPane root = new GridPane();
root.setPadding(new Insets(15));
root.setHgap(10);
root.setVgap(10);
root.setOnKeyPressed(e -> {
switch (e.getCode()) {
case ENTER: tallenna(); break;
case ESCAPE: close(); break;
default: break;
}});
root.addRow(root.getRowCount(), new Label("Vahvistetut kentät pakollisia"));
Label nimi = new Label("Asiakkaan etu- ja sukunimi");
nimi.setStyle("-fx-font-weight: bold;");
tfNimi = new TextField();
tfNimi.setPromptText("Pakollinen tieto");
root.addRow(root.getRowCount(), nimi, tfNimi);
Label osoite = new Label("Osoite");
osoite.setStyle("-fx-font-weight: bold;");
tfOsoite = new TextField();
tfOsoite.setPromptText("Pakollinen tieto");
root.addRow(root.getRowCount(), osoite, tfOsoite);
root.addRow(root.getRowCount(), new Label("Määrät per kuljetus"));
Label salaatit = new Label("Salaatit");
tfSalaatit = new IntegerSpinner();
root.addRow(root.getRowCount(), salaatit, tfSalaatit);
Label pääruoat = new Label("Pääruoat");
tfPääruoat = new IntegerSpinner();
root.addRow(root.getRowCount(), pääruoat, tfPääruoat);
Label jälkiruoat = new Label("Jälkiruoat");
tfJälkiruoat = new IntegerSpinner();
root.addRow(root.getRowCount(), jälkiruoat, tfJälkiruoat);
root.addRow(root.getRowCount(), new Label("Kuljetukset per päivä"));
Label maanantai = new Label("Maanantai");
tfMaanantai = new IntegerSpinner();
root.addRow(root.getRowCount(), maanantai, tfMaanantai);
Label tiistai = new Label("Tiistai");
tfTiistai = new IntegerSpinner();
root.addRow(root.getRowCount(), tiistai, tfTiistai);
Label keskiviikko = new Label("Keskiviikko");
tfKeskiviikko = new IntegerSpinner();
root.addRow(root.getRowCount(), keskiviikko, tfKeskiviikko);
Label torstai = new Label("Torstai");
tfTorstai = new IntegerSpinner();
root.addRow(root.getRowCount(), torstai, tfTorstai);
Label perjantai = new Label("Perjantai");
tfPerjantai = new IntegerSpinner();
root.addRow(root.getRowCount(), perjantai, tfPerjantai);
Label ruokarajoitteet = new Label("Ruokarajoitteet");
tfRuokarajoitteet = new TextField();
root.addRow(root.getRowCount(), ruokarajoitteet, tfRuokarajoitteet);
Label avainTieto = new Label("Avaintieto");
tfAvainTieto = new TextField();
root.addRow(root.getRowCount(), avainTieto, tfAvainTieto);
Label lisätiedot = new Label("Kuljetuksen lisätiedot");
tfLisätiedot = new TextField();
tfLisätiedot.setPromptText("Näkyy raporteilla");
root.addRow(root.getRowCount(), lisätiedot, tfLisätiedot);
Button peruuta = new Button("Peruuta");
peruuta.setFont(TabPohja.buttonFont);
peruuta.setMinWidth(160);
peruuta.setOnAction(_ -> this.close());
Button tallenna = new Button("Tallenna");
tallenna.setFont(TabPohja.buttonFont);
tallenna.setMinWidth(160);
tallenna.setOnAction(_ -> tallenna());
root.addRow(root.getRowCount(), peruuta, tallenna);
this.setScene(new Scene(root));
this.getIcons().add(new Image(Objects.requireNonNull(Main.class.getResourceAsStream("kuljetusruokalaatikko.jpg"))));
this.setAlwaysOnTop(true);
this.setResizable(false);
//Saatu asiakas on tullut muokattavaksi
if (käsiteltäväAsiakas.getId() > 0) {
näytäAsiakas();
}
}
/**
* Jos saadulla asiakkaalla on id (eli asiakas löytyy tietokannasta ja sillä on tietoja)
* tällä funktiolla täytetään asiakkaan tiedot ikkunan kenttiin
*/
private void näytäAsiakas() {
tfNimi.setText(käsiteltäväAsiakas.getNimi());
tfOsoite.setText(käsiteltäväAsiakas.getOsoite());
tfMaanantai.getValueFactory().setValue(käsiteltäväAsiakas.getMaanantaiKpl());
tfTiistai.getValueFactory().setValue(käsiteltäväAsiakas.getTiistaiKpl());
tfKeskiviikko.getValueFactory().setValue(käsiteltäväAsiakas.getKeskiviikkoKpl());
tfTorstai.getValueFactory().setValue(käsiteltäväAsiakas.getTorstaiKpl());
tfPerjantai.getValueFactory().setValue(käsiteltäväAsiakas.getPerjantaiKpl());
tfSalaatit.getValueFactory().setValue(käsiteltäväAsiakas.getSalaatit());
tfPääruoat.getValueFactory().setValue(käsiteltäväAsiakas.getPääruoat());
tfJälkiruoat.getValueFactory().setValue(käsiteltäväAsiakas.getJälkiruoat());
tfRuokarajoitteet.setText(käsiteltäväAsiakas.getErityisruokavalio());
tfAvainTieto.setText(käsiteltäväAsiakas.getAvainTieto());
tfLisätiedot.setText(käsiteltäväAsiakas.getLisätiedot());
}
private void tallenna() {
this.setAlwaysOnTop(false);
String nimi = tfNimi.getText();
String osoite = tfOsoite.getText();
if (nimi.isEmpty() || osoite.isEmpty()) {
Alert alert = new Alert(Alert.AlertType.INFORMATION);
alert.setTitle("Tarkista tiedot");
alert.setHeaderText(null);
alert.setContentText("Nimi tai osoite ei voi olla tyhjiä");
alert.showAndWait();
return;
}
käsiteltäväAsiakas.setNimi(nimi);
käsiteltäväAsiakas.setOsoite(osoite);
käsiteltäväAsiakas.setMaanantaiKpl(tfMaanantai.getValue());
käsiteltäväAsiakas.setTiistaiKpl(tfTiistai.getValue());
käsiteltäväAsiakas.setKeskiviikkoKpl(tfKeskiviikko.getValue());
käsiteltäväAsiakas.setTorstaiKpl(tfTorstai.getValue());
käsiteltäväAsiakas.setPerjantaiKpl(tfPerjantai.getValue());
käsiteltäväAsiakas.setSalaatit(tfSalaatit.getValue());
käsiteltäväAsiakas.setPääruoat(tfPääruoat.getValue());
käsiteltäväAsiakas.setJälkiruoat(tfJälkiruoat.getValue());
käsiteltäväAsiakas.setErityisruokavalio(tfRuokarajoitteet.getText());
käsiteltäväAsiakas.setAvainTieto(tfAvainTieto.getText());
käsiteltäväAsiakas.setLisätiedot(tfLisätiedot.getText());
boolean läpi = false;
int maxYritykset = 3;
int yritykset = 0;
while (!läpi) {
if (käsiteltäväAsiakas.getId() > 0) {
läpi = käsiteltäväAsiakas.päivitäTietokantaan();
}
else {
läpi = käsiteltäväAsiakas.tallennaUusi();
}
yritykset++;
if (yritykset > maxYritykset) {
break;
}
}
if (läpi) {
int viikonKuljetukset = käsiteltäväAsiakas.getMaanantaiKpl() + käsiteltäväAsiakas.getTiistaiKpl() + käsiteltäväAsiakas.getKeskiviikkoKpl() + käsiteltäväAsiakas.getTorstaiKpl() + käsiteltäväAsiakas.getPerjantaiKpl();
Alert alert = new Alert(Alert.AlertType.INFORMATION);
alert.setTitle("Onnistuimme!");
alert.setHeaderText("Asiakkaan tallentaminen onnistui!");
alert.setContentText(String.format("%s saa jatkossa yhteensä \n%s salaattia, %s pääruokaa ja %s jälkiruokaa viikossa",
käsiteltäväAsiakas.getNimi(), käsiteltäväAsiakas.getSalaatit()*viikonKuljetukset, käsiteltäväAsiakas.getPääruoat()*viikonKuljetukset, käsiteltäväAsiakas.getPääruoat()*viikonKuljetukset));
alert.showAndWait();
this.close();
}
this.setAlwaysOnTop(true);
}
}