22 |
} |
} |
23 |
public class SQLLITE : ISQLLITE |
public class SQLLITE : ISQLLITE |
24 |
{ |
{ |
25 |
|
private struct OldNewProgram |
26 |
|
{ |
27 |
|
public IPROGRAMME OldProgram; |
28 |
|
public IPROGRAMME NewProgram; |
29 |
|
} |
30 |
public static ISQLLITE Create(string database, EventHandler<EventArgs> OnInstanceCreated) |
public static ISQLLITE Create(string database, EventHandler<EventArgs> OnInstanceCreated) |
31 |
{ |
{ |
32 |
return new SQLLITE(database, OnInstanceCreated); |
return new SQLLITE(database, OnInstanceCreated); |
303 |
source_invalid = new List<IPROGRAMME>(); |
source_invalid = new List<IPROGRAMME>(); |
304 |
gbpvr_programs = gbpvr_programs.OrderBy(s => s.start_time).ToList(); |
gbpvr_programs = gbpvr_programs.OrderBy(s => s.start_time).ToList(); |
305 |
List<SQLLITE.IPROGRAMME> source_valid = new List<IPROGRAMME>(); |
List<SQLLITE.IPROGRAMME> source_valid = new List<IPROGRAMME>(); |
306 |
|
|
307 |
|
List<OldNewProgram> source_update = new List<OldNewProgram>(); |
308 |
//if (range == null) |
//if (range == null) |
309 |
//{ |
//{ |
310 |
// gLog.Warn.WriteLine("The DateTimeRange passed in is null...returning the original program list"); |
// gLog.Warn.WriteLine("The DateTimeRange passed in is null...returning the original program list"); |
354 |
if (xmltv_entry == null) |
if (xmltv_entry == null) |
355 |
{ |
{ |
356 |
gLog.Warn.WriteLine("Invalidating GB-PVR Program: oid='{0}' channel_oid='{1}' title='{2}' start='{3}'", program.oid, program.channel_oid, program.name, program.start_time.ToDateTimeString()); |
gLog.Warn.WriteLine("Invalidating GB-PVR Program: oid='{0}' channel_oid='{1}' title='{2}' start='{3}'", program.oid, program.channel_oid, program.name, program.start_time.ToDateTimeString()); |
357 |
source_invalid.Add(program); |
source_invalid.Add(program); |
|
// remove database entry |
|
|
if (!RemoveProgramDatabaseEntry(program)) |
|
|
{ |
|
|
gLog.Error.WriteLine("Failed to remove entry with oid: '{0}'", program.oid); |
|
|
} |
|
358 |
} |
} |
359 |
else |
else |
360 |
{ |
{ |
404 |
source_valid.Add(updated_program); |
source_valid.Add(updated_program); |
405 |
if (needsupdate) |
if (needsupdate) |
406 |
{ |
{ |
407 |
// update database entry |
//// update database entry |
408 |
if (!UpdateProgramDatabaseEntry(program, updated_program)) |
//if (!UpdateProgramDatabaseEntry(program, updated_program)) |
409 |
{ |
//{ |
410 |
gLog.Error.WriteLine("Failed to update entry with oid: '{0}'", program.oid); |
// gLog.Error.WriteLine("Failed to update entry with oid: '{0}'", program.oid); |
411 |
} |
//} |
412 |
|
OldNewProgram p = new OldNewProgram(); |
413 |
|
p.OldProgram = program; |
414 |
|
p.NewProgram = updated_program; |
415 |
|
source_update.Add(p); |
416 |
} |
} |
417 |
|
|
418 |
} |
} |
419 |
index++; |
index++; |
420 |
} |
} |
421 |
|
|
|
//for (int i = 0; i < programs.Count(); i++) |
|
|
//{ |
|
|
// var gbpvr_entry = gbpvr[i]; |
|
|
// var xmltv_entry = gbpvr_entry.AsXMLTVProgramDefinition(sqlite); |
|
|
// if (!xmltv[i].Equals(xmltv_entry)) |
|
|
// { |
|
|
// gLog.Warn.WriteLine("Warning GBPVR Program oid: {0} might be invalid", gbpvr_entry.oid); |
|
|
// } |
|
|
//} |
|
422 |
|
|
423 |
source_valid = source_valid.OrderBy(s => s.channel_oid).ThenBy(s => s.start_time).ToList(); |
source_valid = source_valid.OrderBy(s => s.channel_oid).ThenBy(s => s.start_time).ToList(); |
424 |
source_invalid = source_invalid.OrderBy(s => s.channel_oid).ThenBy(s => s.start_time).ToList(); |
source_invalid = source_invalid.OrderBy(s => s.channel_oid).ThenBy(s => s.start_time).ToList(); |
425 |
|
|
426 |
|
if (source_invalid.Count > 0) |
427 |
|
{ |
428 |
|
foreach (var old_program in source_invalid) |
429 |
|
{ |
430 |
|
// remove database entry |
431 |
|
if (!RemoveProgramDatabaseEntry(old_program)) |
432 |
|
{ |
433 |
|
gLog.Error.WriteLine("Failed to remove program with oid: '{0}'", old_program.oid); |
434 |
|
} |
435 |
|
else |
436 |
|
{ |
437 |
|
gLog.Info.WriteLine("Removed program with oid: '{0}'", old_program.oid); |
438 |
|
} |
439 |
|
} |
440 |
|
} |
441 |
|
else |
442 |
|
{ |
443 |
|
gLog.Info.WriteLine("No old GB-PVR Programs needed to be removed."); |
444 |
|
} |
445 |
|
|
446 |
|
if (source_update.Count > 0) |
447 |
|
{ |
448 |
|
foreach (var p in source_update) |
449 |
|
{ |
450 |
|
// remove database entry |
451 |
|
if (!UpdateProgramDatabaseEntry(p.OldProgram,p.NewProgram)) |
452 |
|
{ |
453 |
|
gLog.Error.WriteLine("Failed to update program with oid: '{0}'", p.OldProgram.oid); |
454 |
|
} |
455 |
|
else |
456 |
|
{ |
457 |
|
gLog.Info.WriteLine("Upated program with oid: '{0}'", p.OldProgram.oid); |
458 |
|
} |
459 |
|
} |
460 |
|
} |
461 |
|
else |
462 |
|
{ |
463 |
|
gLog.Info.WriteLine("No GB-PVR Programs needed to be updated."); |
464 |
|
} |
465 |
|
|
466 |
gLog.Info.WriteLine("Total XMLTV Programs: 0x{0:x8}", xmltv_programs.Count); |
gLog.Info.WriteLine("Total XMLTV Programs: 0x{0:x8}", xmltv_programs.Count); |
467 |
gLog.Info.WriteLine("Updated: 0x{0:x8} GB-PVR Programs", source_valid.Count); |
gLog.Info.WriteLine("Updated: 0x{0:x8} GB-PVR Programs", source_valid.Count); |
468 |
gLog.Info.WriteLine("Removed: 0x{0:x8} GB-PVR Programs", source_invalid.Count); |
gLog.Info.WriteLine("Removed: 0x{0:x8} GB-PVR Programs", source_invalid.Count); |
679 |
{ |
{ |
680 |
try |
try |
681 |
{ |
{ |
682 |
gLog.Info.WriteLine("Removing old program with oid: '{0}'", old_program.oid); |
gLog.Verbose.Info.WriteLine("Removing old program with oid: '{0}'", old_program.oid); |
683 |
con.Open(); |
con.Open(); |
684 |
string command_text = string.Format(@"DELETE FROM [{0}] WHERE [oid] = @oid;", TABLES.PROGRAMME); |
string command_text = string.Format(@"DELETE FROM [{0}] WHERE [oid] = @oid;", TABLES.PROGRAMME); |
685 |
gLog.Verbose.Debug.WriteLine("Executing Command: '{0}'", command_text); |
gLog.Verbose.Debug.WriteLine("Executing Command: '{0}'", command_text); |
687 |
{ |
{ |
688 |
cmd.Parameters.Add(new SQLiteParameter("oid", old_program.oid)); |
cmd.Parameters.Add(new SQLiteParameter("oid", old_program.oid)); |
689 |
int rowsupdated = cmd.ExecuteNonQuery(); |
int rowsupdated = cmd.ExecuteNonQuery(); |
690 |
gLog.Info.WriteLine("Updated '{0}' rows", rowsupdated); |
gLog.Verbose.Info.WriteLine("Updated '{0}' rows", rowsupdated); |
691 |
} |
} |
692 |
con.Clone(); |
con.Clone(); |
693 |
result = true; |
result = true; |
715 |
{ |
{ |
716 |
try |
try |
717 |
{ |
{ |
718 |
gLog.Info.WriteLine("Updating old program with oid: '{0}'", old_program.oid); |
gLog.Verbose.Info.WriteLine("Updating old program with oid: '{0}'", old_program.oid); |
719 |
con.Open(); |
con.Open(); |
720 |
//string command_text = string.Format(@"UPDATE [{0}] SET [name]=@name,[sub_title]=@subtitle, WHERE [OID] = @oid", TABLES.PROGRAMME); |
//string command_text = string.Format(@"UPDATE [{0}] SET [name]=@name,[sub_title]=@subtitle, WHERE [OID] = @oid", TABLES.PROGRAMME); |
721 |
string command_text = string.Empty; |
string command_text = string.Empty; |
747 |
cmd.Parameters.Add(new SQLiteParameter("unique_identifier", new_program.unique_identifier)); |
cmd.Parameters.Add(new SQLiteParameter("unique_identifier", new_program.unique_identifier)); |
748 |
cmd.Parameters.Add(new SQLiteParameter("rating", new_program.rating)); |
cmd.Parameters.Add(new SQLiteParameter("rating", new_program.rating)); |
749 |
int rowsupdated = cmd.ExecuteNonQuery(); |
int rowsupdated = cmd.ExecuteNonQuery(); |
750 |
gLog.Info.WriteLine("Updated '{0}' rows", rowsupdated); |
gLog.Verbose.Info.WriteLine("Updated '{0}' rows", rowsupdated); |
751 |
} |
} |
752 |
con.Clone(); |
con.Clone(); |
753 |
result = true; |
result = true; |