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..f1f7497cac854aad14f01b55797f1248a27c1345 --- /dev/null +++ b/src/main/java/fi/utu/tech/ooj/exercise0/Kirja.java @@ -0,0 +1,41 @@ +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.kirjailijanNimi = kirjailijanNimi; + this.kirjanNimi = kirjanNimi; + this.julkaisuVuosi = julkaisuVuosi; + } + + public int getJulkaisuVuosi() { + return julkaisuVuosi; + } + + public String getKirjailijanNimi() { + return kirjailijanNimi; + } + + public String getKirjanNimi() { + return kirjanNimi; + } + + public void setJulkaisuVuosi(int julkaisuVuosi) { + this.julkaisuVuosi = julkaisuVuosi; + } + + public void setKirjailijanNimi(String kirjailijanNimi) { + this.kirjailijanNimi = kirjailijanNimi; + } + + public void setKirjanNimi(String kirjanNimi) { + this.kirjanNimi = kirjanNimi; + } + @Override + public String toString(){ + return "Kirja: " + kirjanNimi + "\nKirjailija: " + kirjailijanNimi + "\nJulkaisuvuosi: " + 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..ac4ca9532cb5164938f0ea8b9b5855afcc537004 --- /dev/null +++ b/src/main/java/fi/utu/tech/ooj/exercise0/KirjaKokoelma.java @@ -0,0 +1,78 @@ +package fi.utu.tech.ooj.exercise0; +import java.util.ArrayList; +import java.io.PrintStream; +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<>(); + + } + + public String getKokoelmanOmistaja() { + return kokoelmanOmistaja; + } + + public ArrayList<Kirja> getKirjaListaus() { + return kirjaListaus; + } + + public void setKirjaListaus(ArrayList<Kirja> kirjaListaus) { + this.kirjaListaus = kirjaListaus; + } + + public void setKokoelmanOmistaja(String kokoelmanOmistaja) { + this.kokoelmanOmistaja = kokoelmanOmistaja; + } + + public void lisaaKirja(Kirja kirja){ + this.kirjaListaus.add(kirja); + } + + public void tulostaKokoelma(PrintStream out){ + if (kirjaListaus.isEmpty()){ + out.print("Kokoelma on tyhjä"); + out.close(); + } else { + for (Kirja kirja : kirjaListaus){ + out.print(kirja); + + } + } + } + public List<Kirja> etsiKirjat(String hakusana, KirjanTiedot kentta) throws IllegalArgumentException { + List<Kirja> lista = new ArrayList<>(); + + try { + switch (kentta){ + case NIMI: + for (Kirja kirja : kirjaListaus){ + if (kirja.getKirjanNimi().contains(hakusana)){ + lista.add(kirja); + } + } + case KIRJAILIJA: + for (Kirja kirja: kirjaListaus){ + if (kirja.getKirjailijanNimi().contains(hakusana)){ + lista.add(kirja); + } + } + case JULKAISUVUOSI: + for (Kirja kirja: kirjaListaus){ + if (kirja.getJulkaisuVuosi() == Integer.valueOf(hakusana)){ + lista.add(kirja); + } + } + } + + } catch (IllegalArgumentException e) { + + } + return lista; + } +} 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..535bb2ff52868a16de92e4c8cd53b97f3954fc06 100644 --- a/src/main/java/fi/utu/tech/ooj/exercise0/Main.java +++ b/src/main/java/fi/utu/tech/ooj/exercise0/Main.java @@ -1,5 +1,6 @@ package fi.utu.tech.ooj.exercise0; +import java.io.PrintStream; import java.util.ArrayList; import java.util.Arrays; import java.util.List; @@ -12,19 +13,52 @@ 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> lista = new ArrayList<>(); + for (String alkio : kysyttavat){ + System.out.println(alkio); + String vastaus = lukija.nextLine(); + if (vastaus.equals(lopetusmerkki)){ + break; + } + lista.add(vastaus); + } + + return lista; + } /* * 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){ + Scanner lukija = new Scanner(System.in); + System.out.print("Kokoelman omistaja: "); + String omistaja = lukija.nextLine(); + + KirjaKokoelma kokoelma = new KirjaKokoelma(omistaja); + + String[] kysymykset = {"Kirjan nimi", "Kirjailija", "Julkaisuvuosi"}; + + while (true){ + + ArrayList<String> apulista = new ArrayList<>(); + for (String tieto : kysyTietoja(kysymykset, lopetusmerkki)){ + apulista.add(tieto); + } + if (apulista.size() != 3) { + break; + } else { + int apu = Integer.valueOf(apulista.get(2)); + Kirja kirja = new Kirja(apulista.get(0), apulista.get(1), apu); + kokoelma.lisaaKirja(kirja); + } + } + return kokoelma; + } - }*/ /** * Main class. @@ -32,19 +66,24 @@ 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 ***"); + + String[] kysymykset = {"Kirjan nimi", "Kirjailija", "Julkaisuvuosi"}; //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 + PrintStream out = new PrintStream(System.out); + + kokoelma.tulostaKokoelma(out); //Lopuksi hae jokin kirja kokoelmasta käyttäen tehtävän 7 rutiinia + //Tulosta hakutulos. Sen voit tehdä suoraan main-metodissa. + System.out.println(kokoelma.etsiKirjat("joku", KirjanTiedot.NIMI)); + } }