From fd55a24875c44e2e85780a7bf41a70698c41c0f6 Mon Sep 17 00:00:00 2001
From: Sanna Herrala <skherr@utu.fi>
Date: Sat, 1 Apr 2023 16:06:46 +0300
Subject: [PATCH] =?UTF-8?q?Tehty=20teht=C3=A4v=C3=A4=207,=20siistitty=20ko?=
 =?UTF-8?q?odia?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 .../java/fi/utu/tech/ooj/exercise0/Kirja.java | 22 ++-------
 .../utu/tech/ooj/exercise0/KirjaKokoelma.java | 35 +++++++++++++-
 .../java/fi/utu/tech/ooj/exercise0/Main.java  | 46 ++++++++++---------
 3 files changed, 63 insertions(+), 40 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 1abeff9..3edfa7d 100644
--- a/src/main/java/fi/utu/tech/ooj/exercise0/Kirja.java
+++ b/src/main/java/fi/utu/tech/ooj/exercise0/Kirja.java
@@ -12,38 +12,26 @@ public class Kirja {
         this.julkaisuVuosi = julkaisuVuosi;
     }
 
-    /*
-    getters
-    */
-
-    private String getKirjanNimi(){
+    // Getters & setters
+    public String getKirjanNimi(){
         return kirjanNimi;
     }
-
-    private String getKirjailijanNimi(){
+    public String getKirjailijanNimi(){
         return kirjailijanNimi;
     }
-
-    private int getJulkaisuVuosi(){
+    public int getJulkaisuVuosi(){
         return julkaisuVuosi;
     }
-
-    /*
-    setters
-    */
-
     private void setKirjanNimi(String uusiNimi){
         this.kirjanNimi = uusiNimi;
     }
-
     private void setKirjailijanNimi(String uusiKirjailijanNimi){
         this.kirjailijanNimi = uusiKirjailijanNimi;
     }
-
     private void setJulkaisuVuosi (int uusiVuosi){
         this.julkaisuVuosi = uusiVuosi;
     }
-
+    // getters ja setters loppuu
     public String toString(){
         String kirjanNimi = this.kirjanNimi;
         String kirjailija = this.kirjailijanNimi;
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 4389a41..edac280 100644
--- a/src/main/java/fi/utu/tech/ooj/exercise0/KirjaKokoelma.java
+++ b/src/main/java/fi/utu/tech/ooj/exercise0/KirjaKokoelma.java
@@ -45,7 +45,40 @@ public class KirjaKokoelma {
     }
 
     public List<Kirja> etsiKirjat(String hakusana, KirjanTiedot kentta) throws IllegalArgumentException{
+        ArrayList<Kirja> kirjalistaus = this.getKirjaListaus();
+        ArrayList<Kirja> vaustausLista = new ArrayList<>();
 
-        return null;
+        if(hakusana == null || hakusana.isEmpty() || kentta == null){
+            throw new IllegalArgumentException("Hakusanaa tai kenttää ei annettu");
+        }
+
+        switch (kentta){
+            case NIMI:
+                kirjalistaus.forEach(kirja -> {
+                    String kirjanNimi = kirja.getKirjanNimi();
+                    if(kirjanNimi.contains(hakusana)){
+                        vaustausLista.add(kirja);
+                    }
+                });
+                break;
+            case KIRJAILIJA:
+                kirjalistaus.forEach(kirja -> {
+                    String kirjailijanNimi = kirja.getKirjailijanNimi();
+                    if(kirjailijanNimi.contains(hakusana)){
+                        vaustausLista.add(kirja);
+                    }
+                });
+                break;
+            case JULKAISUVUOSI:
+                kirjalistaus.forEach(kirja -> {
+                    String kirjanJulkaisuvuosi = String.valueOf(kirja.getJulkaisuVuosi());
+                    if(kirjanJulkaisuvuosi.contains(hakusana)){
+                        vaustausLista.add(kirja);
+                    }
+                });
+                break;
+        }
+
+        return vaustausLista;
     }
 }
\ No newline at end of file
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 4c5876e..6ef0f16 100644
--- a/src/main/java/fi/utu/tech/ooj/exercise0/Main.java
+++ b/src/main/java/fi/utu/tech/ooj/exercise0/Main.java
@@ -1,10 +1,7 @@
 package fi.utu.tech.ooj.exercise0;
 
-import java.io.OutputStream;
-import java.io.OutputStreamWriter;
 import java.io.PrintStream;
 import java.util.ArrayList;
-import java.util.Arrays;
 import java.util.List;
 import java.util.Scanner;
 
@@ -20,19 +17,17 @@ public class Main {
     public static ArrayList<String> kysyTietoja(String[] kysyttavat, String lopetusmerkki) {
         int kysymyslistanPituus = kysyttavat.length;
         int indx = 0;
-        boolean lopetetaanko = false;
-        String kysymys = "";
-
-        Scanner sc = new Scanner(System.in);
+        boolean lopetetaanko;
+        String kysymys;
         String vastaus;
         ArrayList<String> vastausLista = new ArrayList<>();
+        Scanner sc = new Scanner(System.in);
 
         do{
             kysymys = kysyttavat[indx];
             vastaus = kysyKysymysJaPalautaVastaus(kysymys, lopetusmerkki, sc);
 
             if (vastaus.equals(lopetusmerkki)){
-               // sc.close();
                 break;
             }
             else{
@@ -52,16 +47,6 @@ public class Main {
         return vastaus;
     }
 
-    public static int tarkistaSeuraavanKysymyksenIndx(int indx, int kysymyslistanPituus){
-
-        if(indx == kysymyslistanPituus-1){
-            indx = 0;
-        }
-        else{
-            indx += 1;
-        }
-        return indx;
-    }
     public static boolean tarkistaLopetetaanko(int indx, int listanPituus){
         boolean lopetetaanko = false;
 
@@ -79,7 +64,6 @@ public class Main {
 
     public static KirjaKokoelma luoKokoelma(String lopetusmerkki) {
         KirjaKokoelma uusiKokoelma = new KirjaKokoelma();
-
         String kokoelmanOmistaja = pyydaOmistajanNimi(lopetusmerkki);
         uusiKokoelma.uusiKirjaKokoelma(kokoelmanOmistaja);
 
@@ -89,7 +73,7 @@ public class Main {
 
         do{
             ArrayList<String> kirjanTiedot = kysyTietoja(kysymykset, lopetusmerkki);
-            boolean onkoKirjallaKaikkiTiedot = tarkistaOnkoKaikkiTiedot(kirjanTiedot,kysymyslistanPituus);
+            boolean onkoKirjallaKaikkiTiedot = tarkistaOnkoKaikkiKirjanTiedot(kirjanTiedot,kysymyslistanPituus);
 
             if(onkoKirjallaKaikkiTiedot){
                 Kirja luotuKirja = new Kirja();
@@ -120,7 +104,7 @@ public class Main {
         return omistaja;
     }
 
-    public static boolean tarkistaOnkoKaikkiTiedot(ArrayList<String> luotuKirja, int kysymyslistanPituus){
+    public static boolean tarkistaOnkoKaikkiKirjanTiedot(ArrayList<String> luotuKirja, int kysymyslistanPituus){
         boolean onKaikkiTiedot = false;
 
         if(luotuKirja.size() == kysymyslistanPituus){
@@ -145,14 +129,32 @@ public class Main {
         KirjaKokoelma kokoelmaYksi = luoKokoelma("seis");
 
         //Sen jälkeen tulosta kokoelma näyttöön käyttämällä tehtävän 6 rutiinia
+        System.out.println("\n----------------------------------");
+        System.out.println("------ Kokoelman tulostus --------");
+        System.out.println("----------------------------------");
 
         PrintStream out = new PrintStream(System.out);
         kokoelmaYksi.tulostaKokoelma(out);
         out.println();
-        out.close();
 
         //Lopuksi hae jokin kirja kokoelmasta käyttäen tehtävän 7 rutiinia
         //Tulosta hakutulos. Sen voit tehdä suoraan main-metodissa.
 
+        out.println("\n-----------------------------");
+        out.println("------ Kirjojen haku --------");
+        out.println("-----------------------------");
+
+        List<Kirja> haetutKirjatNimi = kokoelmaYksi.etsiKirjat("ko", KirjanTiedot.NIMI);
+        haetutKirjatNimi.forEach(kirja -> out.println(kirja.toString()));
+
+        out.println("-----------------------------");
+        List<Kirja> haetutKirjatKirjailija = kokoelmaYksi.etsiKirjat("p", KirjanTiedot.KIRJAILIJA);
+        haetutKirjatKirjailija.forEach(kirja -> out.println(kirja.toString()));
+
+        out.println("-----------------------------");
+        List<Kirja> haetutKirjatVuosi = kokoelmaYksi.etsiKirjat("2002", KirjanTiedot.JULKAISUVUOSI);
+        haetutKirjatVuosi.forEach(kirja -> out.println(kirja.toString()));
+
+
     }
 }
-- 
GitLab