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 a81aafad61977acadcb9961768517517780a6692..6f2a2e0998ea216c3992f89836a4b63f3238d576 100644 --- a/src/main/java/fi/utu/tech/ooj/exercise0/KirjaKokoelma.java +++ b/src/main/java/fi/utu/tech/ooj/exercise0/KirjaKokoelma.java @@ -1,14 +1,15 @@ package fi.utu.tech.ooj.exercise0; import java.util.ArrayList; - +import java.io.PrintStream; +import java.util.List; public class KirjaKokoelma { private String kokoelmanOmistaja; private ArrayList<Kirja> kirjaListaus; - public KirjaKokoelma(String kokoelmanOmistaja, ArrayList<Kirja> kirjaListaus) { + public KirjaKokoelma(String kokoelmanOmistaja) { this.kokoelmanOmistaja = kokoelmanOmistaja; - this.kirjaListaus = kirjaListaus; + this.kirjaListaus = new ArrayList<>(); } public String getKokoelmanOmistaja() { @@ -27,4 +28,34 @@ public class KirjaKokoelma { this.kirjaListaus.add(kirja); } + public void tulostaKokoelma(PrintStream out) { + if (this.kirjaListaus.isEmpty()) { + out.println("Kokoelma on tyhjä"); + } else { + for (Kirja kirja : kirjaListaus) { + out.println(kirja); + } + } + } + public List<Kirja> etsiKirjat(String hakusana, KirjanTiedot kentta) throws IllegalArgumentException { + if (hakusana == null || hakusana.isEmpty() || kentta == null) { + throw new IllegalArgumentException("Hakusana ja kenttä eivät saa olla tyhjä merkkijono"); + } + List<Kirja> hakutulokset = new ArrayList<>(); + + for (Kirja kirja : kirjaListaus) { + String kentanSisalto = switch (kentta) { + case NIMI -> kirja.getKirjanNimi(); + case KIRJAILIJA -> kirja.getKirjailijanNimi(); + case JULKAISUVUOSI -> String.valueOf(kirja.getJulkaisuVuosi()); + }; + if (kentanSisalto.toLowerCase().contains(hakusana.toLowerCase())) { + 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 d91f99de676a5505a681ef238344d70a00f67a6f..87dd460476ed5da77ff3ef87d1a84dc3c9692e08 100644 --- a/src/main/java/fi/utu/tech/ooj/exercise0/Main.java +++ b/src/main/java/fi/utu/tech/ooj/exercise0/Main.java @@ -4,6 +4,7 @@ import java.util.ArrayList; import java.util.Arrays; import java.util.List; import java.util.Scanner; +import static fi.utu.tech.ooj.exercise0.KirjanTiedot.NIMI; public class Main { @@ -23,7 +24,6 @@ public class Main { } vastaukset.add(vastaus); } - System.out.println(vastaukset); return vastaukset; } /* @@ -34,35 +34,27 @@ public class Main { public static KirjaKokoelma luoKokoelma(String lopetusmerkki) { String[] kysyttäväOmistaja = {"Omistaja"}; String omistaja = kysyTietoja(kysyttäväOmistaja, "/loppu").toString(); - ArrayList kirjalista = new ArrayList<>(); + KirjaKokoelma kokoelma = new KirjaKokoelma(omistaja); while (true) { String[] kirjantiedot = {"Kirjan nimi: ", "Kirjailijan nimi: ", "Julkaisuvuosi:"}; ArrayList<String> kirjanTiedot = kysyTietoja(kirjantiedot, lopetusmerkki); - if (kirjanTiedot.contains(lopetusmerkki) || kirjanTiedot.size() < 3) { + if (kirjanTiedot.size() < 3) { break; } - String kirjanNimi = kirjanTiedot.get(0); - String kirjailijanNimi = kirjanTiedot.get(1); - int julkaisuVuosi = Integer.parseInt(kirjanTiedot.get(2)); - System.out.println(julkaisuVuosi); - Kirja kirja = new Kirja(kirjanNimi, kirjailijanNimi, julkaisuVuosi); - kirjalista.add(kirja); - System.out.println(kirja); - System.out.println(kirja); + Kirja kirja = new Kirja(kirjanTiedot.get(0), kirjanTiedot.get(1), Integer.valueOf(kirjanTiedot.get(2))); + kokoelma.lisaaKirja(kirja); } - KirjaKokoelma kokoelma = new KirjaKokoelma(omistaja,kirjalista); - System.out.println(kokoelma); return kokoelma; } public static void main(String[] args) { //Luo ensin uusi KirjaKokoelma olio, Käytä tehtävän 5 rutiinia KirjaKokoelma kokoelma = luoKokoelma("/loppu"); //Sen jälkeen tulosta kokoelma näyttöön käyttämällä tehtävän 6 rutiinia - + kokoelma.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(kokoelma.etsiKirjat("erkki",NIMI)); } }