From 3b1433d4c38e852880af623923cc979918911add Mon Sep 17 00:00:00 2001 From: Jaakko Nurminen <jaajnu@utu.fi> Date: Thu, 16 Mar 2023 19:53:15 +0200 Subject: [PATCH] Add initial exercise implementation --- .../java/fi/utu/tech/ooj/exercise0/Kirja.java | 7 +++ .../utu/tech/ooj/exercise0/KirjaKokoelma.java | 50 +++++++++++++++++++ .../java/fi/utu/tech/ooj/exercise0/Main.java | 47 ++++++++++++++--- 3 files changed, 96 insertions(+), 8 deletions(-) diff --git a/src/main/java/fi/utu/tech/ooj/exercise0/Kirja.java b/src/main/java/fi/utu/tech/ooj/exercise0/Kirja.java index 0b3f5f9..ffc06c6 100644 --- a/src/main/java/fi/utu/tech/ooj/exercise0/Kirja.java +++ b/src/main/java/fi/utu/tech/ooj/exercise0/Kirja.java @@ -34,4 +34,11 @@ public class Kirja { public void setJulkaisuVuosi(int julkaisuVuosi) { this.julkaisuVuosi = julkaisuVuosi; } + + @Override + public String toString() { + return "Kirja: " + kirjanNimi + "\n" + + "Kirjailija: " + kirjailijanNimi + "\n" + + "Julkaisuvuosi: " + julkaisuVuosi; + } } diff --git a/src/main/java/fi/utu/tech/ooj/exercise0/KirjaKokoelma.java b/src/main/java/fi/utu/tech/ooj/exercise0/KirjaKokoelma.java index 1e41bf7..baaff67 100644 --- a/src/main/java/fi/utu/tech/ooj/exercise0/KirjaKokoelma.java +++ b/src/main/java/fi/utu/tech/ooj/exercise0/KirjaKokoelma.java @@ -1,6 +1,8 @@ package fi.utu.tech.ooj.exercise0; +import java.io.PrintStream; import java.util.ArrayList; +import java.util.List; public class KirjaKokoelma { private String kokoelmanOmistaja; @@ -22,4 +24,52 @@ public class KirjaKokoelma { public void setKokoelmanOmistaja(String kokoelmanOmistaja) { this.kokoelmanOmistaja = kokoelmanOmistaja; } + + public void lisaaKirja(Kirja kirja) { + kirjaListaus.add(kirja); + } + + public void tulostaKokoelma(PrintStream out) { + if (kirjaListaus.size() == 0) { + out.println("Kirjakokoelma on tyhjä"); + } + + for (Kirja kirja : kirjaListaus) { + out.println(kirja.toString()); + } + } + + public List<Kirja> etsiKirjat(String hakusana, KirjanTiedot kentta) throws IllegalArgumentException { + if (hakusana == null || hakusana == "") { + throw new IllegalArgumentException("Hakusana ei voi olla tyhjä tai null!"); + } + + if (kentta == null) { + throw new IllegalArgumentException("Kenttä ei voi olla null!"); + } + + List<Kirja> hakutulokset = new ArrayList<>(); + + for (Kirja kirja : kirjaListaus) { + if (kentta.equals(KirjanTiedot.NIMI)) { + if (kirja.getKirjanNimi().contains(hakusana)) { + hakutulokset.add(kirja); + } + } + + if (kentta.equals(KirjanTiedot.KIRJAILIJA)) { + if (kirja.getKirjailijanNimi().contains(hakusana)) { + hakutulokset.add(kirja); + } + } + + if (kentta.equals(KirjanTiedot.JULKAISUVUOSI)) { + if (Integer.toString(kirja.getJulkaisuVuosi()).contains(hakusana)) { + hakutulokset.add(kirja); + } + } + } + + return hakutulokset; + } } diff --git a/src/main/java/fi/utu/tech/ooj/exercise0/Main.java b/src/main/java/fi/utu/tech/ooj/exercise0/Main.java index 783d3d0..9cf3cea 100644 --- a/src/main/java/fi/utu/tech/ooj/exercise0/Main.java +++ b/src/main/java/fi/utu/tech/ooj/exercise0/Main.java @@ -12,9 +12,21 @@ public class Main { * Kirjoita tähän tehtävän 4 ratkaisu. Rutiinin signatuuria ei saa muuttaa. Aloita tehtävä poistamalla * kommenttimerkit alla olevan rutiinin rungon ympäriltä. */ - /*public static ArrayList<String> kysyTietoja(String[] kysyttavat, String lopetusmerkki) { - - }*/ + public static ArrayList<String> kysyTietoja(String[] kysyttavat, String lopetusmerkki) { + Scanner lukija = new Scanner(System.in); + ArrayList<String> vastaukset = new ArrayList<>(); + + for (String kysymys : kysyttavat) { + System.out.print(kysymys + ": "); + String vastaus = lukija.nextLine(); + + if (vastaus.equals(lopetusmerkki)) { + break; + } + vastaukset.add(vastaus); + } + return vastaukset; + } /* @@ -22,9 +34,26 @@ public class Main { * kommenttimerkit alla olevan rutiinin rungon ympäriltä. */ - /*public static KirjaKokoelma luoKokoelma(String lopetusmerkki) { + public static KirjaKokoelma luoKokoelma(String lopetusmerkki) { + String[] kokoelmanOmistaja = new String[] {"Kirjakokoelman omistaja"}; + ArrayList<String> omistaja = kysyTietoja(kokoelmanOmistaja, lopetusmerkki); + + KirjaKokoelma kirjaKokoelma = new KirjaKokoelma(omistaja.get(0)); + String[] kirjanKysyttavat = new String[] {"Kirjan nimi", "Kirjailijan nimi", "Ilmestymisvuosi"}; - }*/ + while (true) { + ArrayList<String> kirjanTiedot = kysyTietoja(kirjanKysyttavat, lopetusmerkki); + + if (kirjanTiedot.size() != 3) { + break; + } + + Kirja kirja = new Kirja(kirjanTiedot.get(0), kirjanTiedot.get(1), Integer.valueOf(kirjanTiedot.get(2))); + kirjaKokoelma.lisaaKirja(kirja); + } + + return kirjaKokoelma; + } /** * Main class. @@ -35,16 +64,18 @@ public class Main { /* * Testin jälkeen alla olevan rivin voi joko kommentoida tai poistaa. */ - System.out.println("*** Harjoitustyöpohja käynnistyy ***"); - //Luo ensin uusi KirjaKokoelma olio, Käytä tehtävän 5 rutiinia + //Luo ensin uusi KirjaKokoelma olio, Käytä tehtävän 5 rutiinia + KirjaKokoelma omaKokoelma = luoKokoelma("!lopeta"); //Sen jälkeen tulosta kokoelma näyttöön käyttämällä tehtävän 6 rutiinia - + omaKokoelma.tulostaKokoelma(System.out); //Lopuksi hae jokin kirja kokoelmasta käyttäen tehtävän 7 rutiinia //Tulosta hakutulos. Sen voit tehdä suoraan main-metodissa. + System.out.println(omaKokoelma.etsiKirjat("1337", KirjanTiedot.JULKAISUVUOSI)); + } } -- GitLab