package other;

import java.io.*;
import other.PathHelp;

/**
 * SettingsHandler Klasse
 * Verwaltet die Serialisierung des SettingsData- Objektes 
 * und stellt die aktuelle Instanz dem restlichen Progamm zur Verfügung
 */
public class SettingsHandler {
	
	// Attribute
	private SettingsData mSettingsData;
	
	/**
	 * Default-Konstruktor
	 */
	public SettingsHandler(){
		readObject();
	}

	/* ##########################################################################
	 * 						ÖFFENTLICHE METHODEN
	 * ##########################################################################*/	
	
	/**
	 * Liefert das aktuelle SettingsData-Objekt
	 * @return das aktuelle SettingsData-Objekt
	 */
	public SettingsData getData(){
		return mSettingsData;
	}
	
	/**
	 * Liest von der Konfigurationsdatei ein
	 * SettingsData-Objekt ein.
	 */
	public void readObject(){
		try {
			FileInputStream fs = new FileInputStream(PathHelp.specFileConfig());
			ObjectInputStream is = new ObjectInputStream(fs);
			mSettingsData = (SettingsData)is.readObject();
			is.close();
		}catch (Exception e){
			mSettingsData = new SettingsData();
			writeObject();
			System.out.println("SettingsData konnte nicht gelesen werden.");
		} 
	}
	
	/**
	 * Speichert das aktuelle SettingsData-Objekt in die 
	 * Konfigurationsdatei.
	 */
	public void writeObject(){
		try {
			FileOutputStream fs = new FileOutputStream(PathHelp.specFileConfig());
			ObjectOutputStream os = new ObjectOutputStream(fs);
			os.writeObject(mSettingsData);
			os.close();
		}catch (IOException e){
			System.out.println("SettingsData konnte nicht gespeichert werden.");
		} 
	}
	
}
