Compare commits
4 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 25b50b313c | |||
| 639a8186b9 | |||
| bc92197541 | |||
| ede75c8692 |
@@ -1,6 +1,7 @@
|
||||
package fi.lpam.dataluokat;
|
||||
|
||||
import fi.lpam.gui.virheDialogit.SiirtoVirhe;
|
||||
import javafx.scene.control.Alert;
|
||||
|
||||
import java.sql.*;
|
||||
import java.time.DayOfWeek;
|
||||
@@ -29,7 +30,6 @@ public class Asiakas implements TietokantaOlio {
|
||||
}
|
||||
|
||||
/**
|
||||
* Vain MultiColumnListViewin käyttöön
|
||||
* @param nimi Asiakkaan nimi
|
||||
*/
|
||||
public Asiakas(String nimi) {
|
||||
@@ -40,65 +40,9 @@ public class Asiakas implements TietokantaOlio {
|
||||
* Kun luetaan asiakas tietokannasta
|
||||
*/
|
||||
private Asiakas(int id,
|
||||
String nimi,
|
||||
String osoite,
|
||||
int maanantaiKpl,
|
||||
int tiistaiKpl,
|
||||
int keskiviikkoKpl,
|
||||
int torstaiKpl,
|
||||
int perjantaiKpl,
|
||||
int salaatit,
|
||||
int pääruoat,
|
||||
int jälkiruoat,
|
||||
String erityisruokavalio,
|
||||
String avainTieto,
|
||||
String lisätiedot,
|
||||
String laskutusOsoite,
|
||||
String yhteyshenkilönNimi,
|
||||
String yhteyshenkilönPuhelinnumero,
|
||||
String yhteyshenkilönSähköposti,
|
||||
int lauantaiKpl,
|
||||
int sunnuntaiKpl,
|
||||
int dinnerMaanantaiKpl,
|
||||
int dinnerTiistaiKpl,
|
||||
int dinnerKeskiviikkoKpl,
|
||||
int dinnerTorstaiKpl,
|
||||
int dinnerPerjantaiKpl,
|
||||
int dinnerLauantaiKpl,
|
||||
int dinnerSunnuntaiKpl,
|
||||
int dinnerSalaatit,
|
||||
int dinnerPääruoat,
|
||||
int dinnerJälkiruoat) {
|
||||
String nimi) {
|
||||
this.id = id;
|
||||
this.nimi = nimi;
|
||||
this.osoite = osoite;
|
||||
this.maanantaiKpl = maanantaiKpl;
|
||||
this.tiistaiKpl = tiistaiKpl;
|
||||
this.keskiviikkoKpl = keskiviikkoKpl;
|
||||
this.torstaiKpl = torstaiKpl;
|
||||
this.perjantaiKpl = perjantaiKpl;
|
||||
this.lauantaiKpl = lauantaiKpl;
|
||||
this.sunnuntaiKpl = sunnuntaiKpl;
|
||||
this.salaatit = salaatit;
|
||||
this.pääruoat = pääruoat;
|
||||
this.jälkiruoat = jälkiruoat;
|
||||
this.erityisruokavalio = erityisruokavalio;
|
||||
this.avainTieto = avainTieto;
|
||||
this.lisätiedot = lisätiedot;
|
||||
this.laskutusOsoite = laskutusOsoite;
|
||||
this.yhteyshenkilönNimi = yhteyshenkilönNimi;
|
||||
this.yhteyshenkilönPuhelinnumero = yhteyshenkilönPuhelinnumero;
|
||||
this.yhteyshenkilönSähköposti = yhteyshenkilönSähköposti;
|
||||
this.dinnerMaanantaiKpl = dinnerMaanantaiKpl;
|
||||
this.dinnerTiistaiKpl = dinnerTiistaiKpl;
|
||||
this.dinnerKeskiviikkoKpl = dinnerKeskiviikkoKpl;
|
||||
this.dinnerTorstaiKpl = dinnerTorstaiKpl;
|
||||
this.dinnerPerjantaiKpl = dinnerPerjantaiKpl;
|
||||
this.dinnerLauantaiKpl = dinnerLauantaiKpl;
|
||||
this.dinnerSunnuntaiKpl = dinnerSunnuntaiKpl;
|
||||
this.dinnerSalaatit = dinnerSalaatit;
|
||||
this.dinnerPääruoat = dinnerPääruoat;
|
||||
this.dinnerJälkiruoat = dinnerJälkiruoat;
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -106,15 +50,16 @@ public class Asiakas implements TietokantaOlio {
|
||||
* @return ArrayList<Asiakas>
|
||||
*/
|
||||
public static ArrayList<Asiakas> haeKaikki() {
|
||||
ArrayList<Asiakas> asiakkaat = new ArrayList<>();
|
||||
try (Connection tietokanta = Tietokanta.haeYhteys()) {
|
||||
Statement stmt = tietokanta.createStatement();
|
||||
ResultSet rs = stmt.executeQuery("select * from asiakkaat");
|
||||
return parsiResultSet(rs);
|
||||
ResultSet rs = stmt.executeQuery("select id, nimi from asiakkaat");
|
||||
asiakkaat = parsiResultSet(rs);
|
||||
} catch (SQLException e) {
|
||||
SiirtoVirhe alert = new SiirtoVirhe(e);
|
||||
alert.showAndWait();
|
||||
return null;
|
||||
}
|
||||
return asiakkaat;
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -129,7 +74,7 @@ public class Asiakas implements TietokantaOlio {
|
||||
sbIDt.append(", ").append(IDt[i]);
|
||||
}
|
||||
try (Connection tietokanta = Tietokanta.haeYhteys()) {
|
||||
String sql = "select * from asiakkaat where id in (" + sbIDt + ")";
|
||||
String sql = "select id, nimi from asiakkaat where id in (" + sbIDt + ")";
|
||||
Statement stmt = tietokanta.createStatement();
|
||||
ResultSet rs = stmt.executeQuery(sql);
|
||||
|
||||
@@ -149,49 +94,15 @@ public class Asiakas implements TietokantaOlio {
|
||||
}
|
||||
|
||||
/**
|
||||
* Käsittelee ResultSettiä
|
||||
* Olettaa resultsetin sisältävän id:n ja nimen
|
||||
* @param rs saatu ResultSet
|
||||
* @return ArrayList<Asiakas>
|
||||
*/
|
||||
private static ArrayList<Asiakas> parsiResultSet(ResultSet rs) {
|
||||
ArrayList<Asiakas> asiakkaat = new ArrayList<>();
|
||||
|
||||
try {
|
||||
while (rs.next()) {
|
||||
int i = 1;
|
||||
Asiakas uusi = new Asiakas(
|
||||
rs.getInt(i++),
|
||||
rs.getString(i++),
|
||||
rs.getString(i++),
|
||||
rs.getInt(i++),
|
||||
rs.getInt(i++),
|
||||
rs.getInt(i++),
|
||||
rs.getInt(i++),
|
||||
rs.getInt(i++),
|
||||
rs.getInt(i++),
|
||||
rs.getInt(i++),
|
||||
rs.getInt(i++),
|
||||
rs.getString(i++),
|
||||
rs.getString(i++),
|
||||
rs.getString(i++),
|
||||
rs.getString(i++),
|
||||
rs.getString(i++),
|
||||
rs.getString(i++),
|
||||
rs.getString(i++),
|
||||
rs.getInt(i++),
|
||||
rs.getInt(i++),
|
||||
rs.getInt(i++),
|
||||
rs.getInt(i++),
|
||||
rs.getInt(i++),
|
||||
rs.getInt(i++),
|
||||
rs.getInt(i++),
|
||||
rs.getInt(i++),
|
||||
rs.getInt(i++),
|
||||
rs.getInt(i++),
|
||||
rs.getInt(i++),
|
||||
rs.getInt(i++)
|
||||
);
|
||||
asiakkaat.add(uusi);
|
||||
asiakkaat.add(new Asiakas(rs.getInt("id"), rs.getString("nimi")));
|
||||
}
|
||||
}
|
||||
catch (SQLException e) {
|
||||
@@ -203,10 +114,8 @@ public class Asiakas implements TietokantaOlio {
|
||||
|
||||
/**
|
||||
* Tallentaa uuden asiakkaan tietokantaan. Tietokanta luo automaattisesti id:n asiakkaalle.
|
||||
*
|
||||
*/
|
||||
@Override
|
||||
public boolean tallennaUusi() {
|
||||
private boolean tallennaUusi() {
|
||||
try (Connection tietokanta = Tietokanta.haeYhteys()) {
|
||||
PreparedStatement stmt = tietokanta.prepareStatement("INSERT INTO asiakkaat (nimi, osoite, " +
|
||||
"maanantaiKpl, tiistaiKpl, keskiviikkoKpl, torstaiKpl, perjantaiKpl, lauantaiKpl, sunnuntaiKpl, salaatit, pääruoat, jälkiruoat, " +
|
||||
@@ -268,8 +177,7 @@ public class Asiakas implements TietokantaOlio {
|
||||
/**
|
||||
* Päivittää kutsuvan asiakkaan tiedot tietokantaan
|
||||
*/
|
||||
@Override
|
||||
public boolean päivitäTietokantaan() {
|
||||
private boolean päivitäTietokantaan() {
|
||||
try (Connection tietokanta = Tietokanta.haeYhteys()) {
|
||||
PreparedStatement stmt = tietokanta.prepareStatement("UPDATE asiakkaat set nimi = ?, osoite = ?, " +
|
||||
"maanantaiKpl = ?, tiistaiKpl = ?, keskiviikkoKpl = ?, torstaiKpl = ?, perjantaiKpl = ?, lauantaiKpl = ?, sunnuntaiKpl = ?, salaatit = ?, pääruoat = ?, jälkiruoat = ?, " +
|
||||
@@ -395,6 +303,53 @@ public class Asiakas implements TietokantaOlio {
|
||||
};
|
||||
}
|
||||
|
||||
private String haeString(String sarake) {
|
||||
try (Connection conn = Tietokanta.haeYhteys()) {
|
||||
PreparedStatement stmt = conn.prepareStatement("select ? from asiakkaat where id = ?");
|
||||
stmt.setString(1, sarake);
|
||||
stmt.setInt(2, this.id);
|
||||
ResultSet rs = stmt.executeQuery();
|
||||
rs.next();
|
||||
return rs.getString(1);
|
||||
}
|
||||
catch (Exception e) {
|
||||
Alert alert = new SiirtoVirhe(e);
|
||||
alert.showAndWait();
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
private int haeInt(String sarake) {
|
||||
try (Connection conn = Tietokanta.haeYhteys()) {
|
||||
PreparedStatement stmt = conn.prepareStatement("select ? from asiakkaat where id = ?");
|
||||
stmt.setString(1, sarake);
|
||||
stmt.setInt(2, this.id);
|
||||
ResultSet rs = stmt.executeQuery();
|
||||
rs.next();
|
||||
return rs.getInt(1);
|
||||
}
|
||||
catch (Exception e) {
|
||||
Alert alert = new SiirtoVirhe(e);
|
||||
alert.showAndWait();
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
private Date haeDate(String sarake) {
|
||||
try (Connection conn = Tietokanta.haeYhteys()) {
|
||||
PreparedStatement stmt = conn.prepareStatement("select ? from asiakkaat where id = ?");
|
||||
stmt.setString(1, sarake);
|
||||
stmt.setInt(2, this.id);
|
||||
ResultSet rs = stmt.executeQuery();
|
||||
rs.next();
|
||||
return rs.getDate(1);
|
||||
}
|
||||
catch (Exception e) {
|
||||
Alert alert = new SiirtoVirhe(e);
|
||||
alert.showAndWait();
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
public int getId() {
|
||||
return id;
|
||||
@@ -413,6 +368,9 @@ public class Asiakas implements TietokantaOlio {
|
||||
}
|
||||
|
||||
public String getOsoite() {
|
||||
if (osoite == null) {
|
||||
osoite = haeString("osoite");
|
||||
}
|
||||
return osoite;
|
||||
}
|
||||
|
||||
@@ -421,6 +379,9 @@ public class Asiakas implements TietokantaOlio {
|
||||
}
|
||||
|
||||
public int getMaanantaiKpl() {
|
||||
if (maanantaiKpl == 0) {
|
||||
maanantaiKpl = haeInt("maanantaiKpl");
|
||||
}
|
||||
return maanantaiKpl;
|
||||
}
|
||||
|
||||
|
||||
@@ -86,8 +86,7 @@ public class Kierros implements TietokantaOlio {
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public boolean tallennaUusi() {
|
||||
private boolean tallennaUusi() {
|
||||
try (Connection tietokanta = Tietokanta.haeYhteys()) {
|
||||
PreparedStatement stmt = tietokanta.prepareStatement("insert into kierrokset (kierrosNumero, asiakkaat) values (?, ?)", Statement.RETURN_GENERATED_KEYS);
|
||||
stmt.setInt(1, kierrosNumero);
|
||||
@@ -114,8 +113,7 @@ public class Kierros implements TietokantaOlio {
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean päivitäTietokantaan() {
|
||||
private boolean päivitäTietokantaan() {
|
||||
try (Connection tietokanta = Tietokanta.haeYhteys()) {
|
||||
PreparedStatement stmt = tietokanta.prepareStatement("update kierrokset set asiakkaat = ?, kierrosnumero = ? where id = ?");
|
||||
stmt.setString(1, muutaAsiakkaatMerkkijonoksi());
|
||||
|
||||
@@ -103,8 +103,7 @@ public class Kuljetus implements TietokantaOlio {
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean tallennaUusi() {
|
||||
private boolean tallennaUusi() {
|
||||
try (Connection tietokanta = Tietokanta.haeYhteys()) {
|
||||
PreparedStatement stmt = tietokanta.prepareStatement("INSERT INTO kuljetukset (asiakasID, nimi, kuljetusPäivämäärä, kuljetusKierros, tyyppi, salaatit, pääruoat, jälkiruoat, ruokarajoite, osoite, avainTieto, lisätieto) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)", Statement.RETURN_GENERATED_KEYS);
|
||||
stmt.setInt(1, asiakasID);
|
||||
@@ -139,8 +138,7 @@ public class Kuljetus implements TietokantaOlio {
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean päivitäTietokantaan() {
|
||||
private boolean päivitäTietokantaan() {
|
||||
try (Connection tietokanta = Tietokanta.haeYhteys()) {
|
||||
PreparedStatement stmt = tietokanta.prepareStatement("UPDATE kuljetukset set asiakasID = ?, nimi = ?, kuljetusPäivämäärä = ?, kuljetusKierros = ?, tyyppi = ?, salaatit = ?, pääruoat = ?, jälkiruoat = ?, ruokarajoite = ?, osoite = ?, avainTieto = ?, lisätieto = ? WHERE id = ?");
|
||||
stmt.setInt(1, asiakasID);
|
||||
|
||||
@@ -1,12 +1,16 @@
|
||||
package fi.lpam.dataluokat;
|
||||
|
||||
public interface TietokantaOlio {
|
||||
/**
|
||||
* Tallentaa joko uuden, tai päivittää olemassa olevaa riviä
|
||||
* @return onnistuiko operaatio
|
||||
*/
|
||||
boolean tallenna();
|
||||
|
||||
boolean tallennaUusi();
|
||||
|
||||
boolean päivitäTietokantaan();
|
||||
|
||||
/**
|
||||
* Poistaa kutsuvan olion rivin tietokannasta
|
||||
* @return onnistuiko operaatio
|
||||
*/
|
||||
boolean poista();
|
||||
|
||||
boolean tallenna();
|
||||
}
|
||||
@@ -7,7 +7,6 @@ import fi.lpam.gui.elementit.TabPohja;
|
||||
import fi.lpam.Main;
|
||||
import javafx.geometry.Insets;
|
||||
import javafx.geometry.Pos;
|
||||
import javafx.geometry.Side;
|
||||
import javafx.scene.Scene;
|
||||
import javafx.scene.control.*;
|
||||
import javafx.scene.image.Image;
|
||||
@@ -298,12 +297,7 @@ public class AsiakasIkkuna extends Stage {
|
||||
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();
|
||||
}
|
||||
läpi = käsiteltäväAsiakas.tallenna();
|
||||
yritykset++;
|
||||
if (yritykset > maxYritykset) {
|
||||
break;
|
||||
|
||||
@@ -192,11 +192,7 @@ public class KuljetusListat extends TabPohja {
|
||||
private void tallennaKierros() {
|
||||
try {
|
||||
for (Kuljetus kuljetus : tableView.getItems()) {
|
||||
if (kuljetus.getId() > 0) {
|
||||
kuljetus.päivitäTietokantaan();
|
||||
} else {
|
||||
kuljetus.tallennaUusi();
|
||||
}
|
||||
kuljetus.tallenna();
|
||||
}
|
||||
tallennusStatus.setText("Tallennettu: Kyllä");
|
||||
btnTulosta.setDisable(false);
|
||||
|
||||
Reference in New Issue
Block a user