/// <summary>
/// starts the initialization of the global objects
/// </summary>
public static void Init()
{
try
{
if(!m_initDone)
{
Program.SplashScreen = new SplashScreenForm();
Program.SplashScreen.Show();
Program.SplashScreen.Logger = MainLog;
Program.SplashScreen.InfoAdd("initializing logger...");
Program.MainLog.Log("Initialising...\n");
Program.SplashScreen.InfoAppendLast("<OK>");
Program.SplashScreen.InfoAdd("starting sql server...");
// load settings from file
IniFile = new STA.Settings.INIFile(GetDataPath("ED-IBE.ini"), false, true);
// prepare architecture-dependend files
PrepareDepFiles();
// start database process (if not running)
DBProcess.DBProcessParams newProcessParams = new DBProcess.DBProcessParams() { };
newProcessParams.Commandline = IniFile.GetValue("DB_Server", "Commandline", @"bin\mysqld.exe");
newProcessParams.Commandargs = IniFile.GetValue("DB_Server", "CommandArgs", @"--defaults-file=Elite.ini --console");
newProcessParams.Workingdirectory = IniFile.GetValue("DB_Server", "WorkingDirectory", @"..\..\..\RNDatabase\Database");
newProcessParams.Port = IniFile.GetValue<UInt16>("DB_Server", "Port", "3306");
newProcessParams.DBStartTimeout = IniFile.GetValue<Int16>("DB_Server", "DBStartTimeout", "60");
Program.SplashScreen.InfoAppendLast("on port " + newProcessParams.Port + "...");
EliteDBProcess = new DBProcess(newProcessParams);
if (EliteDBProcess.WasRunning)
Program.SplashScreen.InfoAppendLast("already running...<OK>");
else
Program.SplashScreen.InfoAppendLast("<OK>");
// connecT to the database
Program.SplashScreen.InfoAdd("connect to sql server...");
DBConnector.ConnectionParams newConnectionParams = new DBConnector.ConnectionParams() { };
newConnectionParams.Name = IniFile.GetValue("DB_Connection", "Name", "master");
newConnectionParams.Server = IniFile.GetValue("DB_Connection", "Server", "localhost");
newConnectionParams.Port = IniFile.GetValue<UInt16>("DB_Server", "Port", "3306");
newConnectionParams.Database = IniFile.GetValue("DB_Connection", "Database", "Elite_DB");
newConnectionParams.User = IniFile.GetValue("DB_Connection", "User", "RN_User");
newConnectionParams.Pass = IniFile.GetValue("DB_Connection", "Pass", "Elite");
newConnectionParams.ConnectTimeout = IniFile.GetValue<Int16>("DB_Connection", "ConnectTimeout", "60");
newConnectionParams.StayAlive = IniFile.GetValue<Boolean>("DB_Connection", "StayAlive", "false");
newConnectionParams.TimeOut = IniFile.GetValue<Int16>("DB_Connection", "TimeOut", "10000");
DBCon = new DBConnector(newConnectionParams);
DBCon.Connect();
Program.SplashScreen.InfoAppendLast("<OK>");
/* **************** database is running ********************** */
/* perform updates */
Updater.DBUpdate();
Program.SplashScreen.InfoAdd("preparing global objects...");
// prepare colors-object
Colors = new GUIColors();
// preprare main data object
Data = new IBE.SQL.EliteDBIO();
Data.PrepareBaseTables();
// create global paths-object
//Paths = new ProgramPaths();
// prepare settings
// Settings = new Settings();
// Settings.BaseData = Data.BaseData;
// prepare commanders log
CommandersLog = new CommandersLog();
CommandersLog.BaseData = Data.BaseData;
// prepare price analysis
PriceAnalysis = new PriceAnalysis(new DBConnector(DBCon.ConfigData, true));
PriceAnalysis.BaseData = Data.BaseData;
//// starting the external data interface
//ExternalData = new ExternalDataInterface();
// Companion IO
CompanionIO = new IBECompanion.CompanionData(Program.GetDataPath());
if(CompanionIO.ConditionalLogIn())
CompanionIO.GetProfileDataAsync();
// initializing the object for the actual condition
actualCondition = new Condition();
// initializing the LogfileScanner
//LogfileScanner = new EDLogfileScanner();
JournalScanner = new EDJournalScanner();
// EDDN Interface
EDDNComm = new IBE.EDDN.EDDNCommunicator();
// EDSMComm Interface
EDSMComm = new IBE.EDSM.EDStarmapInterface(Program.DBCon);
CommandersLog.registerJournalScanner(JournalScanner);
CommandersLog.registerExternalTool(CompanionIO);
CompanionIO.registerJournalScanner(JournalScanner);
PriceAnalysis.registerJournalScanner(JournalScanner);
PriceAnalysis.registerExternalTool(CompanionIO);
EDSMComm.registerJournalScanner(JournalScanner);
actualCondition.RegisterJournalScanner(JournalScanner);
EDDNComm.RegisterJournalScanner(JournalScanner);
// Plausibility-Checker
PlausibiltyCheck = new PlausibiltyChecker();
/// early variant of DoSpecial();
Updater.DoSpecial_Early();
Program.SplashScreen.InfoAppendLast("<OK>");
m_initDone = true;
}
}
catch (Exception ex)
{
CErr.processError(ex, "Error while initializing the program object");
}
}