diff --git a/src/main/java/fi/lpam/dataluokat/Asiakas.java b/src/main/java/fi/lpam/dataluokat/Asiakas.java index cd847b9..7f0676e 100644 --- a/src/main/java/fi/lpam/dataluokat/Asiakas.java +++ b/src/main/java/fi/lpam/dataluokat/Asiakas.java @@ -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 */ public static ArrayList haeKaikki() { + ArrayList 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 */ private static ArrayList parsiResultSet(ResultSet rs) { ArrayList 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,7 +114,6 @@ public class Asiakas implements TietokantaOlio { /** * Tallentaa uuden asiakkaan tietokantaan. Tietokanta luo automaattisesti id:n asiakkaalle. - * */ private boolean tallennaUusi() { try (Connection tietokanta = Tietokanta.haeYhteys()) { @@ -393,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; @@ -411,6 +368,9 @@ public class Asiakas implements TietokantaOlio { } public String getOsoite() { + if (osoite == null) { + osoite = haeString("osoite"); + } return osoite; } @@ -419,6 +379,9 @@ public class Asiakas implements TietokantaOlio { } public int getMaanantaiKpl() { + if (maanantaiKpl == 0) { + maanantaiKpl = haeInt("maanantaiKpl"); + } return maanantaiKpl; }