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 1abeff94b160d34cdd1093537cf7c3e9d76e588f..3edfa7d54bf71bda28144b76fbfb0f73e9e9877d 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 4389a412dcc3f5d705edde14bc4b4d99310c5d46..edac2809b381ff7d9063e5be6ae7e188f9176e8f 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 4c5876eae01f8af548ad1ada997d0991bc47157b..6ef0f16ac636934b882cbb40e3c652b8c7278f22 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())); + + } }