From 129d61f71555db62b3c82ca3f8d798a3cd8f9263 Mon Sep 17 00:00:00 2001 From: Amanda Yli-Talonen <amanda.e.yli-talonen@utu.fi> Date: Mon, 28 Aug 2023 14:15:42 +0000 Subject: [PATCH] Upload New File --- Verkkokauppa.java | 236 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 236 insertions(+) create mode 100644 Verkkokauppa.java diff --git a/Verkkokauppa.java b/Verkkokauppa.java new file mode 100644 index 0000000..4a045c7 --- /dev/null +++ b/Verkkokauppa.java @@ -0,0 +1,236 @@ +import java.util.ArrayList; +import java.util.HashMap; + +public class Verkkokauppa { + private HashMap<String, Asiakas> asiakkaat; + private HashMap<String,Tuote> tuotteet; + private HashMap<String, Myyja> myyjat; + private ArrayList<Ostotapahtuma> tapahtumat; + + public Verkkokauppa() { + asiakkaat = new HashMap<>(); + tuotteet = new HashMap<>(); + myyjat = new HashMap<>(); + tapahtumat = new ArrayList<>(); + } + + public void lisaaAsiakas(String avain, Asiakas asiakas) { + asiakkaat.put(avain, asiakas); + } + + public void lisaaTuote(String avain, Tuote tuote) { + tuotteet.put(avain, tuote); + } + + public void lisaaMyyja(String avain, Myyja myyja) { + myyjat.put(avain, myyja); + } + + public void lisaaTapahtuma(Ostotapahtuma tapahtuma) { + tapahtumat.add(tapahtuma); + } + + /** + * Yrittää poistaa annetun asiakkaan asiakalistasta. + * + * @param asiakas asiakas, jonka poistoa yritetään + * @return true, jos asiakas löytyi ja poistettiin, muuten false + */ + public boolean poistaAsiakas(String avain) { + if (asiakkaat.containsKey(avain)) { + asiakkaat.remove(avain); + return true; + } + return false; + } + + /** + * Yrittää poistaa annetun tuotteen tuotelistasta. + * + * @param tuote tuote, jonka poistoa yritetään + * @return true, jos tuote löytyi ja poistettiin, muuten false + */ + public boolean poistaTuote(String avain) { + if (tuotteet.containsKey(avain)) { + tuotteet.remove(avain); + return true; + } + return false; + } + + /** + * Yrittää poistaa annetun myyjän myyjalistasta. + * + * @param myyja myyja, jonka poistoa yritetään + * @return true, jos myyjä löytyi ja poistettiin, muuten false + */ + public boolean poistaMyyja(String avain) { + if (myyjat.containsKey(avain)) { + myyjat.remove(avain); + return true; + } + return false; + } + + /** + * Yrittää poistaa annetun tapahtuman ostotapahtumalistasta. + * + * @param tapahtuma ostotapahtuma, jonka poistoa yritetään + * @return true, jos ostotapahtuma löytyi ja poistettiin, muuten false + */ + public boolean poistaOstotapahtuma(Ostotapahtuma tapahtuma) { + if (tapahtumat.contains(tapahtuma)) { + tapahtumat.remove(tapahtuma); + return true; + } + return false; + } + + /** + * Palauttaa annetun asiakasnumeron mukaisen asiakkaan tai + * <code>null</code>, jos asiakasta ei löydy + * + * @param asiakasnumero halutun asiakkaan asiakasnumero + * @return pyydetyn asiakkaan tai null, jos asiakasta ei löydy + */ + public Asiakas annaAsiakas(String asiakasnumero) { + for (String avain : asiakkaat.keySet()) { + if (asiakkaat.get(avain).getAsiakasNumero().equals(asiakasnumero)) { + return asiakkaat.get(avain); + } + } + return null; + } + + /** + * Palauttaa annetun nimen mukaisen tuotteen tai + * <code>null</code>, jos tuotetta ei löydy + * + * @param nimi halutun tuotteen nimi + * @return pyydetyn tuotteen tai null, jos tuotetta ei löydy + */ + public Tuote annaTuote(String nimi) { + for (String avain : tuotteet.keySet()) { + if (tuotteet.get(avain).getNimi().equals(nimi)) { + return tuotteet.get(avain); + } + } + return null; + } + + /** + * Palauttaa annetun tunnisteen mukaisen myyjän tai + * <code>null</code>, jos myyjää ei löydy + * + * @param tunniste halutun myyjän tunniste + * @return pyydetyn myyjän tai null, jos myyjää ei löydy + */ + public Myyja annaMyyja(String tunniste) { + for (String avain : myyjat.keySet()) { + if (myyjat.get(avain).getTunniste().equals(tunniste)) { + return myyjat.get(avain); + } + } + return null; + } + + /** + * Palauttaa annetun indeksin mukaisen ostotapahtuman listasta. + * Huomaa, että indeksointi alkaa nollasta, mutta tapahtumien listaamisessa + * indeksit on ilmoitettu alkaen ykkösestä. + * + * @param indeksi indeksi jonka kohdalta tapahtuma palautetaan + * @return annetun indeksin mukaisen ostotapahtuman + */ + public Ostotapahtuma annaTapahtuma(int indeksi) { + if (tapahtumat.size() > indeksi) { + return tapahtumat.get(indeksi); + } + return null; + } + + + /** + * Palauttaa kaikki asiakkaat yhtenä merkkijonona. + * + * @return asiakalistan merkkijonona + */ + public String listaaAsiakkaat() { + // Tekee otsikkorivin + // \t on tabulaattori, joka tasaa tulosteen + // sarakkeisiin; \n tekee rivinvaihdon + StringBuilder s = new StringBuilder("Asiakasnumero\tNimi\t\t\tOstoja\tKanta-asiakas\n"); + for (String avain : asiakkaat.keySet()) { + s.append(asiakkaat.get(avain).getAsiakasNumero() + "\t\t\t"); + s.append(asiakkaat.get(avain).getNimi() + "\t"); + s.append(asiakkaat.get(avain).getOstojaTehty() + "\t\t"); + if (asiakkaat.get(avain) instanceof KantaAsiakas) { + s.append("On\n"); + } else { + s.append("Ei\n"); + } + } + return s.toString(); + } + + /** + * Palauttaa kaikki myyjät yhtenä merkkijonona + * + * @return myyjät merkkijonona + */ + public String listaaMyyjat() { + // Tekee otsikkorivin + // \t on tabulaattori, joka tasaa tulosteen + // sarakkeisiin; \n tekee rivinvaihdon + StringBuilder s = new StringBuilder("Tunniste\tNimi\t\t\tProvisiot\n"); + for (String avain : myyjat.keySet()) { + s.append(myyjat.get(avain).getTunniste() + "\t\t"); + s.append(myyjat.get(avain).getNimi() + "\t\t"); + s.append(myyjat.get(avain).getProvisiot() + "\n"); + } + return s.toString(); + } + + /** + * Palautta kaikki tuotteet yhtenä merkkijonona. + * + * @return tuotteet merkkijonona + */ + public String listaaTuotteet() { + // Tekee otsikkorivin + // \t on tabulaattori, joka tasaa tulosteen + // sarakkeisiin; \n tekee rivinvaihdon + StringBuilder s = new StringBuilder("Nimi\tSaldo\t\t\tHinta\tVirtuaalinen\n"); + for (String avain : tuotteet) { + s.append(tuotteet.get(avain).getNimi() + "\t"); + s.append(tuotteet.get(avain).getSaldo() + "\t\t"); + s.append(tuotteet.get(avain).getHinta() + "\t"); + if (tuotteet.get(avain) instanceof VirtuaalinenTuote) { + s.append("Kyllä\n"); + } else { + s.append("Ei\n"); + } + } + return s.toString(); + } + + /** + * Palauttaa kaikki tapahtumat yhtenä merkkijonona. + * + * @return tapahtumat merkkijonona + */ + public String listaaTapahtumat() { + StringBuilder s = new StringBuilder("Numero\tTuote\tAsiakas\tMyyjä\tKpl\tHinta\n"); + int n = 1; + for (Ostotapahtuma tapahtuma : tapahtumat) { + s.append(n++ + "\t"); + s.append(tapahtuma.getTuote().getNimi() + "\t"); + s.append(tapahtuma.getAsiakas().getNimi() + "\t"); + s.append(tapahtuma.getMyyja().getNimi() + "\t"); + s.append(tapahtuma.getMaara() + "\t"); + s.append(tapahtuma.getHinta() + "\n"); + } + return s.toString(); + + } +} -- GitLab