} // ProcessEpgPayload static void ProcessEpgPayload(byte[] data, SqlCeConnection cn) { var tvaMain = XmlSerialization.Deserialize <TvaMain>(data, true); if ((tvaMain == null) || (tvaMain.ProgramDescription == null) || (tvaMain.ProgramDescription.LocationTable == null) || (tvaMain.ProgramDescription.LocationTable.Schedule == null)) { Console.WriteLine("Empty or invalid data!"); // there's nothing to process return; } // if var tvaSchedule = tvaMain.ProgramDescription.LocationTable.Schedule; var epgService = EpgService.FromItem(tvaSchedule); epgService.GetDatabaseId(cn); Log(">> Service {0} (db {1}): {2} events (t{3})", epgService.ServiceId, epgService.ServiceDatabaseId, epgService.Events.Length, Thread.CurrentThread.ManagedThreadId); // TODO: Provide fallback mechanism for deleting events pertaining to this service if (epgService.Events.Length == 0) { return; } var startTime = epgService.Events[0].StartTime; var today = new DateTime(startTime.Year, startTime.Month, startTime.Day, 0, 0, 0).ToUniversalTime(); var tomorrow = today + new TimeSpan(1, 0, 0, 0); EpgDbSerialization.DeleteEvents(cn, epgService.ServiceDatabaseId, today, tomorrow); epgService.Save(cn); } // ProcessFile
} // ForceUiCulture static void PrepareDatabase() { Console.Write("Conecting to database..."); UpdateDbStatus(1); Console.WriteLine(" ok"); Console.Write("Deleting old EPG data..."); EpgDbSerialization.DeleteAllEvents(DbFile, null, DateTime.Now - new TimeSpan(6, 0, 0)); Console.WriteLine(" ok"); if (XmlFilesPath != null) { Console.Write("Deleting old EPG XML data..."); foreach (var file in Directory.GetFiles(XmlFilesPath, "*.xml")) { try { File.Delete(file); } catch { // ignore } } // foreach Console.WriteLine(" ok"); } // if } // PrepareDatabase