package Databases;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.Scanner;

import QCM.*;

public class QCMDatabase implements Serializable {

	private ArrayList<QCM> QCMList = new ArrayList<QCM>();
	private ArrayList<SessionQCM> SessionList = new ArrayList<SessionQCM>();

	
	public void addQCM(QCM q){
		QCMList.add(q);
		}
	
	public void addSession(SessionQCM q){
		SessionList.add(q);
		}

	public QCM getQCM(String nom){ 
			for (int i = 0; i < QCMList.size(); i++) {
				if (QCMList.get(i).getNom()==nom)
					return QCMList.get(i);
			}
			return null;
	}
	
	public QCM listQCM(){
		
		if (QCMList.size() == 0){
			System.out.println("Pas de QCM!");
			return null;
		}
		
		for (int i = 0; i < QCMList.size()-1; i++){
		System.out.println((i+1)+") "+QCMList.get(i).getNom());
		}
		System.out.println("Entrez le numéro du QCM désiré et appuyez sur entrée");
		Scanner sc = new Scanner(System.in);
		return QCMList.get(sc.nextInt());
	}
	
	public SessionQCM listSession(){
		
		if (SessionList.size() == 0){
			System.out.println("Pas de Sessions!");
			return null;
		}
		
		for (int i = 0; i < SessionList.size()-1; i++){
		System.out.println((i+1)+"):");
		SessionList.get(i).afficherSession();
		}
		System.out.println("Entrez le numéro de la Session désirée et appuyez sur entrée");
		Scanner sc = new Scanner(System.in);
		return SessionList.get(sc.nextInt());
	}
	
	public boolean save(String file){
		
		try {
		      FileOutputStream fichier = new FileOutputStream(file);
		      ObjectOutputStream oos = new ObjectOutputStream(fichier);
		      oos.writeObject(this);
		      oos.close();
		      fichier.close();
		      return true;
		    } catch (final java.io.IOException e){
		        return false;
		    }
	}
	
	public boolean load(String file){
		
		try {
		      FileInputStream fichier = new FileInputStream(file);
		      ObjectInputStream ois = new ObjectInputStream(fichier);
		      
		      try {
		    	QCMDatabase Object = (QCMDatabase) ois.readObject();
				QCMList=Object.getQCMList();
				SessionList=Object.getSessionList();
				ois.close();
				fichier.close();
		      	} 
		      	catch (ClassNotFoundException e) {ois.close(); fichier.close(); return false;}
		      
		      return true;
		    } 
			catch (final java.io.IOException e) {return false;}
	}
	

	
	public ArrayList<QCM> getQCMList() {
		return QCMList;
	}

	public ArrayList<SessionQCM> getSessionList() {
		return SessionList;
	}


	public QCMDatabase(String file){
		load(file); //mélol
		
	}
	
	public QCMDatabase(){
	
	}
	
	
}
