From b13c68724624faf11d398621b17a03c9c1d5c6d2 Mon Sep 17 00:00:00 2001
From: Roni Nousiainen <rmnous@utu.fi>
Date: Thu, 16 Mar 2023 12:26:08 +0200
Subject: [PATCH] =?UTF-8?q?teht=C3=A4v=C3=A4=20tehty?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 .../java/fi/utu/tech/ooj/exercise0/Kirja.java | 41 +++++++++++-
 .../utu/tech/ooj/exercise0/KirjaKokoelma.java | 63 ++++++++++++++++++-
 .../java/fi/utu/tech/ooj/exercise0/Main.java  | 36 ++++++++---
 3 files changed, 129 insertions(+), 11 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 d7979d3..8dee929 100644
--- a/src/main/java/fi/utu/tech/ooj/exercise0/Kirja.java
+++ b/src/main/java/fi/utu/tech/ooj/exercise0/Kirja.java
@@ -1,2 +1,41 @@
-package fi.utu.tech.ooj.exercise0;public class Kirja {
+package fi.utu.tech.ooj.exercise0;
+
+public class Kirja {
+    private String kirjanNimi;
+    private String kirjailijanNimi;
+    private int julkaisuVuosi;
+
+    public Kirja(String kirjanNimi, String kirjailijanNimi, int julkaisuVuosi) {
+        this.kirjanNimi = kirjanNimi;
+        this.kirjailijanNimi = kirjailijanNimi;
+        this.julkaisuVuosi = julkaisuVuosi;
+    }
+
+    public String getKirjanNimi() {
+        return kirjanNimi;
+    }
+
+    public void setKirjanNimi(String kirjanNimi) {
+        this.kirjanNimi = kirjanNimi;
+    }
+
+    public String getKirjailijanNimi() {
+        return kirjailijanNimi;
+    }
+
+    public void setKirjailijanNimi(String kirjailijanNimi) {
+        this.kirjailijanNimi = kirjailijanNimi;
+    }
+
+    public int getJulkaisuVuosi() {
+        return julkaisuVuosi;
+    }
+
+    public void setJulkaisuVuosi(int julkaisuVuosi) {
+        this.julkaisuVuosi = julkaisuVuosi;
+    }
+    @Override
+    public String toString() {
+        return "Kirja: " + this.getKirjanNimi() + "\nKirjailija: " + this.getKirjailijanNimi() + "\nJulkaisuvuosi: " + this.getJulkaisuVuosi();
+    }
 }
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 6719864..a8af380 100644
--- a/src/main/java/fi/utu/tech/ooj/exercise0/KirjaKokoelma.java
+++ b/src/main/java/fi/utu/tech/ooj/exercise0/KirjaKokoelma.java
@@ -1,2 +1,63 @@
-package fi.utu.tech.ooj.exercise0;public class KirjaKokoelma {
+package fi.utu.tech.ooj.exercise0;
+
+import java.io.PrintStream;
+import java.util.ArrayList;
+import java.util.List;
+
+public class KirjaKokoelma {
+    private String kokoelmanOmistaja;
+    private ArrayList<Kirja> kirjaListaus;
+
+    public KirjaKokoelma(String kokoelmanOmistaja) {
+        this.kokoelmanOmistaja = kokoelmanOmistaja;
+        kirjaListaus = new ArrayList<>();
+    }
+
+    public String getKokoelmanOmistaja() {
+        return kokoelmanOmistaja;
+    }
+
+    public void setKokoelmanOmistaja(String kokoelmanOmistaja) {
+        this.kokoelmanOmistaja = kokoelmanOmistaja;
+    }
+
+    public ArrayList<Kirja> getKirjaListaus() {
+        return kirjaListaus;
+    }
+    public void lisaaKirja(Kirja kirja) {
+        kirjaListaus.add(kirja);
+    }
+    public void tulostaKokoelma(PrintStream out) {
+        if (kirjaListaus.size() == 0) {
+            out.println("Kokoelma on tyhjä.");
+        } else {
+            for (Kirja k : kirjaListaus) {
+                out.println(k.toString());
+            }
+        }
+    }
+    public List<Kirja> etsiKirjat(String hakusana, KirjanTiedot kentta) throws IllegalArgumentException {
+        ArrayList<Kirja> tulokset = new ArrayList<>();
+        String regex = ".?" + hakusana + ".?";
+        if (hakusana == "" || hakusana == null) {
+            throw new IllegalArgumentException();
+        }
+        for (Kirja k : kirjaListaus) {
+            switch (kentta) {
+                case NIMI:
+                    if (k.getKirjanNimi().matches(regex)) {
+                        tulokset.add(k);
+                    } break;
+                case KIRJAILIJA:
+                    if (k.getKirjailijanNimi().matches(regex)) {
+                        tulokset.add(k);
+                    } break;
+                case JULKAISUVUOSI:
+                    if (String.valueOf(k.getJulkaisuVuosi()).matches(regex)) {
+                        tulokset.add(k);
+                    } break;
+            }
+        }
+        return tulokset;
+    }
 }
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..1de271f 100644
--- a/src/main/java/fi/utu/tech/ooj/exercise0/Main.java
+++ b/src/main/java/fi/utu/tech/ooj/exercise0/Main.java
@@ -12,19 +12,36 @@ 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 input = new Scanner(System.in);
+        ArrayList<String> vastaukset = new ArrayList<>();
+        for (String i : kysyttavat) {
+            System.out.print(i + ": ");
+            String vastaus = input.nextLine();
+            if (vastaus.equals(lopetusmerkki)) {
+                break;
+            }
+            vastaukset.add(vastaus);
+        } return vastaukset;
+    }
 
     /*
      * Kirjoita tähän tehtävän 5 ratkaisu. Rutiinin signatuuria ei saa muuttaa. Aloita tehtävä poistamalla
      * kommenttimerkit alla olevan rutiinin rungon ympäriltä.
      */
 
-    /*public static KirjaKokoelma luoKokoelma(String lopetusmerkki) {
-
-    }*/
+    public static KirjaKokoelma luoKokoelma(String lopetusmerkki) {
+        KirjaKokoelma kokoelma = new KirjaKokoelma("Omistaja");
+        String[] kysymykset = {"kirjan nimi","kirjailijan nimi","julkaisuvuosi"};
+        while (true) {
+            ArrayList<String> vastaukset = kysyTietoja(kysymykset, lopetusmerkki);
+            if (vastaukset.size() != 3) {
+                break;
+            }
+            Kirja kirja = new Kirja(vastaukset.get(0),vastaukset.get(1),Integer.valueOf(vastaukset.get(2)));
+            kokoelma.lisaaKirja(kirja);
+        } return kokoelma;
+    }
 
     /**
      * Main class.
@@ -38,12 +55,13 @@ public class Main {
         System.out.println("*** Harjoitustyöpohja käynnistyy ***");
 
         //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
+        System.out.println(kokoelma.etsiKirjat("",KirjanTiedot.NIMI));
         //Tulosta hakutulos. Sen voit tehdä suoraan main-metodissa.
 
     }
-- 
GitLab