public void ImportVisitedStations(string Filename)
{
String sqlString;
Int32 Counter = 0;
DBConnector lDBCon = new DBConnector(Program.DBCon.ConfigData, true);
try
{
List<StationVisit> History = JsonConvert.DeserializeObject<List<StationVisit>>(File.ReadAllText(Filename));
// gettin' some freaky performance
lDBCon.Execute("set global innodb_flush_log_at_trx_commit=2");
lDBCon.TransBegin("ImportVisitedStations");
sendProgressEvent(new ProgressEventArgs() { Info="import visited stations", CurrentValue=Counter, TotalValue=History.Count });
foreach(StationVisit VisitEvent in History)
{
String System = StructureHelper.CombinedNameToSystemName(VisitEvent.Station);
String Station = StructureHelper.CombinedNameToStationName(VisitEvent.Station);
//Debug.Print(System + "," + Location);
try
{
sqlString = String.Format("insert ignore into tbVisitedSystems(system_id, time)" +
" SELECT d.* FROM (SELECT" +
" (select id from tbSystems where systemname = {0}) as system_id," +
" {1} as time) as d",
DBConnector.SQLAString(DBConnector.SQLEscape(System)),
DBConnector.SQLDateTime(VisitEvent.Visited));
lDBCon.Execute(sqlString);
}
catch (Exception)
{
//Debug.Print("Error while importing system in history :" + System);
};
try
{
sqlString = String.Format("insert ignore into tbVisitedStations(station_id, time)" +
" SELECT d.* FROM (SELECT" +
" (select id from tbStations" +
" where stationname = {0}" +
" and system_id = (select id from tbSystems where systemname = {1})) as station_id," +
" {2} as time) as d",
DBConnector.SQLAString(DBConnector.SQLEscape(Station)),
DBConnector.SQLAString(DBConnector.SQLEscape(System)),
DBConnector.SQLDateTime(VisitEvent.Visited));
lDBCon.Execute(sqlString);
}
catch (Exception)
{
//Debug.Print("Error while importing station in history :" + Location);
};
Counter++;
sendProgressEvent(new ProgressEventArgs() { Info="import visited stations", CurrentValue=Counter, TotalValue=History.Count });
}
lDBCon.TransCommit();
lDBCon.Execute("set global innodb_flush_log_at_trx_commit=1");
lDBCon.Dispose();
}
catch (Exception ex)
{
if(lDBCon.TransActive())
lDBCon.TransRollback();
lDBCon.Execute("set global innodb_flush_log_at_trx_commit=1");
lDBCon.Dispose();
throw new Exception("Error while importing the history of visited stations", ex);
}
}