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 d7979d3f0188db2bf6012b09781745fc2cd50c00..8dee929ce1d58a8d898344f7d7cf332d1aa3aaff 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 671986486f595baf13591c6fa12ec108f92ea52b..a8af380ec377f7f14b9d826a1abf3fa8dad9768f 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 783d3d0cf21955651017c6638f3eb43bf992a6b9..1de271fed1ee317607b3884dc4709a5973437907 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. }