diff --git a/src/main/java/fi/utu/tech/ooj/exercise0/Kirja.java b/src/main/java/fi/utu/tech/ooj/exercise0/Kirja.java new file mode 100644 index 0000000000000000000000000000000000000000..709fc310dd3a387a351b8e128a02edb104e36bf0 --- /dev/null +++ b/src/main/java/fi/utu/tech/ooj/exercise0/Kirja.java @@ -0,0 +1,42 @@ +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 String getKirjailijanNimi() { + return kirjailijanNimi; + } + + public int getJulkaisuVuosi() { + return julkaisuVuosi; + } + + public void setKirjanNimi(String kirjanNimi) { + this.kirjanNimi = kirjanNimi; + } + + public void setKirjailijanNimi(String kirjailijanNimi) { + this.kirjailijanNimi = kirjailijanNimi; + } + + public void setJulkaisuVuosi(int julkaisuVuosi) { + this.julkaisuVuosi = julkaisuVuosi; + } + @Override + public String toString(){ + return "Kirja: " + this.kirjanNimi+ "\n" + "Kirjailija: " + this.kirjailijanNimi + "\n" + + "Julkaisuvuosi: " + this.julkaisuVuosi + "\n"; + } +} diff --git a/src/main/java/fi/utu/tech/ooj/exercise0/KirjaKokoelma.java b/src/main/java/fi/utu/tech/ooj/exercise0/KirjaKokoelma.java new file mode 100644 index 0000000000000000000000000000000000000000..9f97f69cc2145a1695dcc0c1113f6e270ed983f8 --- /dev/null +++ b/src/main/java/fi/utu/tech/ooj/exercise0/KirjaKokoelma.java @@ -0,0 +1,66 @@ +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; + this.kirjaListaus = new ArrayList<Kirja>(); + } + + public String getKokoelmanOmistaja() { + return kokoelmanOmistaja; + } + + public ArrayList<Kirja> getKirjaListaus() { + return kirjaListaus; + } + + public void setKokoelmanOmistaja(String kokoelmanOmistaja) { + this.kokoelmanOmistaja = kokoelmanOmistaja; + } + public void lisaaKirja(Kirja uusiKirja){ + this.kirjaListaus.add(uusiKirja); + } + public void tulostaKokoelma(PrintStream out){ + if (kirjaListaus.isEmpty()){ + out.println("Kokoelma on tyhjä."); + }else { + for (Kirja kirja : kirjaListaus){ + out.println(kirja.toString()); + } + } + } + public List<Kirja> etsiKirjat(String hakusana, KirjanTiedot kentta) throws IllegalArgumentException{ + if(hakusana == null || hakusana.isEmpty() || kentta == null){ + throw new IllegalArgumentException("Hakusana tai kenttä on tyhjä"); + } + List<Kirja> kirjat = new ArrayList<>(); + + for (Kirja kirja : kirjaListaus) { + String tieto = ""; + switch (kentta) { + case NIMI: + tieto = kirja.getKirjanNimi(); + break; + case KIRJAILIJA: + tieto = kirja.getKirjailijanNimi(); + break; + case JULKAISUVUOSI: + tieto = String.valueOf(kirja.getJulkaisuVuosi()); + break; + default: + break; + } + if (tieto.contains(hakusana)){ + kirjat.add(kirja); + } + } + return kirjat; + } +} 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..dfffa62cb23fb0503622b91a9d2752bc7acc023c 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,46 @@ 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 lukija = new Scanner(System.in); + ArrayList<String> vastaukset = new ArrayList<String>(); + int i = 0; + while (i<kysyttavat.length){ + System.out.print("Anna " +kysyttavat[i]+": "); + String vastaus = lukija.nextLine(); + + if (vastaus.equals(lopetusmerkki)){ + break; + }else { + vastaukset.add(vastaus); + i++; + } + } + System.out.println(); + 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) { + String[] kysymykset = {"kirjan nimi", "kirjailijan nimi", "julkaisuvuosi"}; + String[] uusiNimi ={"Kokoelmanomistaja"}; + ArrayList<String> nimi = kysyTietoja(uusiNimi,lopetusmerkki); + KirjaKokoelma uusiKokoelma = new KirjaKokoelma(nimi.get(0)); + + while(true){ + ArrayList<String> tiedot = kysyTietoja(kysymykset,lopetusmerkki); + if (tiedot.size()<3){ + break; + }else { + Kirja uusiKirja = new Kirja(tiedot.get(0),tiedot.get(1),Integer.parseInt(tiedot.get(2))); + uusiKokoelma.lisaaKirja(uusiKirja); + } + } + return uusiKokoelma; + } /** * Main class. @@ -32,19 +59,18 @@ public class Main { * @param args Command line arguments */ public static void main(String[] args) { - /* - * Testin jälkeen alla olevan rivin voi joko kommentoida tai poistaa. - */ - System.out.println("*** Harjoitustyöpohja käynnistyy ***"); - - //Luo ensin uusi KirjaKokoelma olio, Käytä tehtävän 5 rutiinia - - - //Sen jälkeen tulosta kokoelma näyttöön käyttämällä tehtävän 6 rutiinia + KirjaKokoelma uusiKokoelma = luoKokoelma("lopeta"); + uusiKokoelma.tulostaKokoelma(System.out); + try { + List<Kirja> loydetytKirjat = uusiKokoelma.etsiKirjat("harry", KirjanTiedot.KIRJAILIJA); + for (Kirja kirja : loydetytKirjat) { + System.out.println(kirja.toString()); + } + } catch (IllegalArgumentException e) { + System.out.println(e.getMessage()); + } - //Lopuksi hae jokin kirja kokoelmasta käyttäen tehtävän 7 rutiinia - //Tulosta hakutulos. Sen voit tehdä suoraan main-metodissa. } }