package fi.utu.tech.ooj.exercise3;


import java.util.HashMap;
import java.util.HashSet;

public class Main {


    /**
     * Main class.
     *
     * @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 ***");

        HashSet<Ajoneuvo> ajoneuvot = new HashSet<Ajoneuvo>();
        HashSet<HenkiloAuto> henkiloautot = new HashSet<HenkiloAuto>();
        HashSet<KuormaAuto> kuormaautot = new HashSet<KuormaAuto>();
        */

        // ---Tehtävä 2 demonstrointi---
        System.out.println("---Tehtävä 2---");
        Kirjasto kirjasto = new Kirjasto("Turku", "Linnankatu");
        //sivukirjastot
        Kirjasto kirjasto1 = new Kirjasto("Feeniks", "Yliopisto");
        Kirjasto kirjasto2 = new Kirjasto("Nummi", "Halistentie");
        //kokoelmat
        KirjaKokoelma[] kokoelmat = {
                new KirjaKokoelma("fantasia"),
                new KirjaKokoelma("scifi"),
                new KirjaKokoelma("kauhu"),
                new KirjaKokoelma("draama"),
                new KirjaKokoelma("trilleri"),
                new KirjaKokoelma("rikos")
        };
        //lisätään kirjat kokoelmiin
        int indeksi = 1;
        for (KirjaKokoelma kokoelma : kokoelmat)
        {
            for (int i = 0; i < 2; i++) {
                kokoelma.lisaaKirja(new Kirja(
                        "Kirja" + indeksi,
                        "Kirjailija" + indeksi,
                        indeksi));
                indeksi++;
            }
        }
        // kokoelmat kirjastoihin
        kirjasto.lisaaKokoelma(kokoelmat[0]);
        kirjasto.lisaaKokoelma(kokoelmat[1]);
        kirjasto1.lisaaKokoelma(kokoelmat[2]);
        kirjasto1.lisaaKokoelma(kokoelmat[3]);
        kirjasto2.lisaaKokoelma(kokoelmat[4]);
        kirjasto2.lisaaKokoelma(kokoelmat[5]);
        //kirjastot sivukirjastoiksi
        kirjasto.lisaaSivukirjasto(kirjasto1);
        kirjasto.lisaaSivukirjasto(kirjasto2);

        System.out.println(kirjasto.toString());

        Kirjasto kopio = kirjasto.clone();
        System.out.println(kirjasto.equals(kopio));


        // ---tehtävä 3 demonstrointi---
        System.out.println("---Tehtävä 3---");
        HashMap<String, String> map = new HashMap<>();
        map.put("Hei", "Heippa");
        map.put("Moi", "Moikka");
        RandomMap rmap = new RandomMap<>(map);
        System.out.println(rmap.get("Hei"));
        System.out.println(rmap.get("terve") + "\n"); // Heippa tai Moikka


        // ---tehtävä 4 demonstrointi---
        System.out.println("---Tehtävä 4---");
        Triplet<String, Integer, Double> triplet = new Triplet<>();
        triplet.put("avain1", 1, 1.11);
        triplet.put("avain2", 2, 2.22);
        triplet.put("avain3", 3, 3.33);

        System.out.println(triplet.getFirstValue("avain1"));
        System.out.println(triplet.getSecondValue("avain3") + "\n");

        System.out.println(triplet.keySet());
        System.out.println(triplet.firstValues());
        System.out.println(triplet.secondValues() + "\n");

        System.out.println(triplet.containsKey("avain2")); // true
        System.out.println(triplet.containsKey("avain4")); // false
        System.out.println(triplet.containsValue(1, 1.11)); // true
        System.out.println(triplet.containsValue(4, 4.44) + "\n"); // false

        System.out.println(triplet.isEmpty()); // false
        System.out.println(triplet.size());
        triplet.remove("avain3");
        triplet.clear();
        System.out.println(triplet.isEmpty()); // true
    }
}