package main;
import java.awt.Dialog.ModalityType;
import java.io.IOException;
import java.util.Collection;
import logging.Logger;
import main.config.Config;
import main.error.VideothekException;
import model.CurrentDate;
import model.PriceCategory;
import model.Warning;
import model.data.DataBase;
import model.data.exceptions.DataException;
import GUI.MainWindow;
import GUI.dialogs.CreatedWarningsDialog;
import GUI.dialogs.SetCurrentDateDialog;
/**
*
* @author Waldemar Smirnow
* @author Volha Baranouskaya
*/
public class Programm
{
private static MainWindow mainWindow;
private static boolean resetWarnings = false;
public static void start()
{
Logger.get().write("Programm gestartet!");
Logger.get().write("CurrentDate wird gesetzt");
if(Config.get().getSetting(Config.Settings.SETDATEONSTARTUP).equals("true"))
{
try
{
SetCurrentDateDialog dialog = new SetCurrentDateDialog(null, true);
dialog.setVisible(true);
dialog.setModalityType(ModalityType.APPLICATION_MODAL);
// falls gewollt, merken, dass mahnungen
// zurückgesetzt werden sollen...
resetWarnings = dialog.resetWarnings;
}
catch(Exception e)
{
e.printStackTrace();
Logger.get().write("Fehler beim Setzen von CurrentDate!");
}
}
Logger.get().write("Aktuelles Currentdate ist: " + CurrentDate.get());
Logger.get().write("XML-Daten werden geladen.");
try
{
DataBase.loadData();
// falls keine preiskategorie vorhanden, eine defaultkategorie anlegen
if(PriceCategory.findAll().size() == 0)
{
try
{
PriceCategory defaultPriceCategory = new PriceCategory("A", 1.0f);
}
catch (VideothekException e)
{
Logger.get().write("Fehler beim Erstellen der Default-Preiskategorie: " + e.getMessage());
}
}
// falls kein mahnungspreis angegeben, default-wert setzen
if(!Config.get().hasSetting(Config.Settings.WARNINGPRICE))
{
Config.get().setSetting(Config.Settings.WARNINGPRICE, "10.0f");
}
if(resetWarnings)
{
for(model.InRent ir : model.InRent.findAll())
{
ir.setWarned(false);
}
}
Logger.get().write("Daten erfolgreich geladen.");
}
catch (DataException e1)
{
Logger.get().write("Es gab einen Fehler beim Laden!");
}
mainWindow = new MainWindow();
mainWindow.getMainFrame().setVisible(true);
// falls x und y größe gespeichert, laden und setzten!
if(Config.get().hasSetting(Config.Settings.MAINWINDOWRESX)
&& Config.get().hasSetting(Config.Settings.MAINWINDOWRESY))
{
int resX = Integer.parseInt(Config.get().getSetting(Config.Settings.MAINWINDOWRESX));
int resY = Integer.parseInt(Config.get().getSetting(Config.Settings.MAINWINDOWRESY));
mainWindow.getMainFrame().setSize(resX, resY);
}
}
public static void shutdown()
{
// aktuelle größe vom hauptfenster speichern für nächstes mal.
int resX, resY;
resX = (int)mainWindow.getMainFrame().getSize().getWidth();
resY = (int)mainWindow.getMainFrame().getSize().getHeight();
Config.get().setSetting(Config.Settings.MAINWINDOWRESX, Integer.toString(resX));
Config.get().setSetting(Config.Settings.MAINWINDOWRESY, Integer.toString(resY));
mainWindow.getMainFrame().dispose();
try
{
// mahnungen in dateien schreiben
Collection<Warning> createdWarnings = Warning.createPendingWarnings();
// falls welche erstellt, anzeigen
if(createdWarnings.size() > 0)
{
CreatedWarningsDialog dialog = new CreatedWarningsDialog(null, createdWarnings);
dialog.setVisible(true);
}
DataBase.saveData();
Config.saveAll();
}
catch (Exception e1)
{
e1.printStackTrace();
}
Logger.get().write("Programm wird beendet!");
try
{
Logger.get().close();
}
catch (IOException e)
{
e.printStackTrace();
}
}
}