/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package museatest;

import be.hogent.iii.musea.bo.Kunstenaar;
import be.hogent.iii.musea.bo.Kunstwerk;
import be.hogent.iii.musea.bo.KunstwerkenBeheer;
import be.hogent.iii.musea.bo.Museum;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Date;

/**
 *
 * @author vongenae
 */
public class Main {

    KunstwerkenBeheer beheer;
    Museum[] musea = null;
    Kunstenaar[] kunstenaars= null;
    
    Main() {
        // aanmaken object KunstwerkenBeheer
        try {
            beheer = (KunstwerkenBeheer) Class.forName("be.hogent.iii.musea.bo.jdbc.JDBCKunstwerkenBeheer").newInstance();
        } catch (Exception e)  {
            System.out.println("Aanmaak KunstwerkenBeheer-object mislukt");
            e.printStackTrace();
            throw (new RuntimeException(e));
        }
    }
    
    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
        Main test = new Main();
        test.overzichtMusea();
        test.overzichtKunstenaars();
        test.overzichtKunstwerken();  
        test.testLogins();
        test.reserveer();
    }

    private void overzichtMusea() {        
        // musea ophalen
        System.out.println("Lijst musea");  
        try {
            musea = beheer.getMusea();
            for (int i = 0; i < musea.length; i++) {
                System.out.println(musea[i].getId() + " " + musea[i].getNaam());
            }
        } catch (Exception e) {
            System.out.println("Ophalen musea mislukt");
            e.printStackTrace();
        }
        System.out.println();  
    }
    
    private void overzichtKunstenaars() {
        // kunstenaars ophalen
        System.out.println("Lijst kunstenaars");
        try {
            kunstenaars = beheer.getKunstenaars();
            for (int i = 0; i < kunstenaars.length; i++) {
                System.out.println(kunstenaars[i].getId() + " " + kunstenaars[i].getNaam());
            }
        } catch (Exception e) {
            System.out.println("Ophalen kunstenaars mislukt");
            e.printStackTrace();
        }
        System.out.println();                    
    }
    
    private void overzichtKunstwerken() {
        // kunstwerken ophalen 
        System.out.println("Lijst kunstwerken");
        if (musea != null && kunstenaars != null) {
            try {
                for (int i = 0; i < kunstenaars.length; i++) {
                    System.out.println(kunstenaars[i].getNaam());
                    for (int j = 0; j < musea.length; j++) {                        
                        Kunstwerk[] kunstwerken = beheer.zoekKunstwerken(kunstenaars[i].getId(), musea[j].getId());
                        if (kunstwerken.length > 0) {
                            System.out.println(musea[j].getNaam());
                        }
                        for (int k = 0 ; k < kunstwerken.length; k++) {
                            System.out.println(kunstwerken[k].getId() + " " + kunstwerken[k].getTitel() + " " + kunstwerken[k].getUrlFiguur());
                        }
                    }
                    System.out.println();
                    
                }
            } catch (Exception e) {
                System.out.println("Ophalen kunstwerken mislukt");
                e.printStackTrace();
            }
        }        
    }
    
    private void testLogins() {
        System.out.println("Logins testen");
        try {
            if (!beheer.controleerLogin("EG", "EG_WW")) {
                System.out.println("Gebruiker EG ontbreekt");
            }
            if (!beheer.controleerLogin("MSKB", "MSKB_WW")) {
                System.out.println("Gebruiker EG ontbreekt");
            }
            System.out.println("Gelukt!");
        } catch (Exception e) {
            System.out.println("Logins testen mislukt");
            e.printStackTrace();            
        }
        System.out.println();
    }
    
    private void reserveer() {
        System.out.println("Reservatie toevoegen");
        try {
            DateFormat datumFormatering = new SimpleDateFormat("dd/MM/yy");
            Date startDatum = datumFormatering.parse("20/10/09");
            Date eindDatum = datumFormatering.parse("25/10/09");
            if (beheer.reserveer("KA1", "EG", startDatum, eindDatum)) {
                System.out.println("Reservatie gelukt");
            } else {
                System.out.println("Reservatie mislukt");
            }
        } catch (Exception e) {
            System.out.println("Reservatie toevoegen mislukt");
            e.printStackTrace();
        }
    }
}
