diff --git a/VerkkokauppaIO.java b/VerkkokauppaIO.java index 56a714abb09505e8e430b1d669e9a5e4d38f5efe..7c2361bfe92fca9e70caebca835ae86be75719e6 100644 --- a/VerkkokauppaIO.java +++ b/VerkkokauppaIO.java @@ -11,11 +11,12 @@ import java.util.Scanner; public class VerkkokauppaIO { public static void main(String[] args) { + // Tähän voi kirjoittaa koodia, jolla testata // kirjoitus- ja lukumetodien toimintaa helposti } - private static final String EROTIN = ";"; + public static final String EROTIN = ";"; public static void kirjoitaTiedosto(String tiedostonNimi, String sisalto) { @@ -67,9 +68,10 @@ public class VerkkokauppaIO { kirjoitaTiedosto(tiedostonNimi, data); } + /** * Palauttaa uuden asiakasolion annetun datarivin perusteella. - * Rivillä tulee olla asiakasnumero, nimi ja tehdyt ostot tässä + * Rivillä tulee olla asiakastyyppi, asiakasnumero, nimi ja tehdyt ostot tässä * järjestyksessä erotettuna merkillä * <code>VerkkokauppaIO.EROTIN</code> * @@ -77,15 +79,25 @@ public class VerkkokauppaIO { * @return uuden Asiakas-olion dataan perustuen */ public static Asiakas parsiAsiakas(String data) { - String[] tiedot = data.split(VerkkokauppaIO.EROTIN); - // Tässä vaiheessa tulee tietää tietojen järjestys - String asNro = tiedot[0]; - String nimi = tiedot[1]; - double ostot = Double.parseDouble(tiedot[2]); + String[] tiedot = data.split(VerkkokauppaIO.EROTIN); + + if (tiedot[0].equals("KantaAsiakas")) { + String asNro = tiedot[1]; + String nimi = tiedot[2]; + double ostot = Double.parseDouble(tiedot[3]); + int alennus = Integer.parseInt(tiedot[4]); + + return new KantaAsiakas(asNro, nimi, ostot, alennus); + } else { + String asNro = tiedot[1]; + String nimi = tiedot[2]; + double ostot = Double.parseDouble(tiedot[3]); - return new Asiakas(asNro, nimi, ostot); + return new Asiakas(asNro, nimi, ostot); + } } + /** * Metodi lukee asiakkaat annetun nimisestä tiedostosta ja * palauttaa sisällön mukaisen listan Asiakas-olioita. @@ -138,4 +150,54 @@ public class VerkkokauppaIO { } return null; } + + public static void kirjoitaOstotapahtumat(ArrayList<Ostotapahtuma> ostotapahtumat, String tiedostonNimi) { + StringBuilder data = new StringBuilder(); + for (Ostotapahtuma ostotapahtuma : ostotapahtumat) { + data.append(ostotapahtuma.getData(EROTIN)).append("\n"); + } + kirjoitaTiedosto(tiedostonNimi, data.toString()); + } + + public static ArrayList<Ostotapahtuma> lueOstotapahtumat(String tiedostonNimi) { + ArrayList<Ostotapahtuma> ostotapahtumat = new ArrayList<>(); + ArrayList<String> data = lueTiedosto(tiedostonNimi); + for (String rivi : data) { + ostotapahtumat.add(new Ostotapahtuma(rivi.split(EROTIN))); + } + return ostotapahtumat; + } + + public static void kirjoitaMyyjat(ArrayList<Myyja> myyjat, String tiedostonNimi) { + StringBuilder data = new StringBuilder(); + for (Myyja myyja : myyjat) { + data.append(myyja.getData(EROTIN)).append("\n"); + } + kirjoitaTiedosto(tiedostonNimi, data.toString()); + } + + public static ArrayList<Myyja> lueMyyjat(String tiedostonNimi) { + ArrayList<Myyja> myyjat = new ArrayList<>(); + ArrayList<String> data = lueTiedosto(tiedostonNimi); + for (String rivi : data) { + myyjat.add(new Myyja(rivi.split(EROTIN))); + } + return myyjat; + } + + public void lataaTiedot() { + asiakkaat = VerkkokauppaIO.lueAsiakkaat("asiakkaat.txt"); + myyjat = VerkkokauppaIO.lueMyyjat("myyjat.txt"); + tuotteet = VerkkokauppaIO.lueTuotteet("tuotteet.dat"); + ostotapahtumat = VerkkokauppaIO.lueOstotapahtumat("ostotapahtumat.txt"); + System.out.println("Tiedot ladattu onnistuneesti."); + } + + public void tallennaTiedot() { + VerkkokauppaIO.kirjoitaAsiakkaat(asiakkaat, "asiakkaat.txt"); + VerkkokauppaIO.kirjoitaMyyjat(myyjat, "myyjat.txt"); + VerkkokauppaIO.kirjoitaTuotteet(tuotteet, "tuotteet.dat"); + VerkkokauppaIO.kirjoitaOstotapahtumat(ostotapahtumat, "ostotapahtumat.txt"); + System.out.println("Tiedot tallennettu onnistuneesti."); + } } diff --git a/VerkkokauppaUI.java b/VerkkokauppaUI.java index 66ea3b2f2e93b455930dc0af9e1275f2164792fd..216b6d9631d631059dbdd361330495db331d978a 100644 --- a/VerkkokauppaUI.java +++ b/VerkkokauppaUI.java @@ -17,6 +17,7 @@ public class VerkkokauppaUI { public void aloita() { int valinta = -1; // joku muu kuin 0 while (valinta != 0) { + lataaTiedot(); tulostaMenu(); valinta = lueKokonaisluku(0, 4, "Anna valinta"); if (valinta == 1) { @@ -29,6 +30,7 @@ public class VerkkokauppaUI { ostotapahtumaMenu(); // ei vielä toteutettu... } } + tallennaTiedot(); }