/[xmltv_parser]/trunk/GBPVRProgramDatabaseFixer/Program.cs
ViewVC logotype

Diff of /trunk/GBPVRProgramDatabaseFixer/Program.cs

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

--- trunk/GBPVRProgramDatabaseFixer/Program.cs	2013/03/15 17:33:15	165
+++ trunk/GBPVRProgramDatabaseFixer/Program.cs	2013/03/16 13:16:42	166
@@ -18,14 +18,16 @@
         static string XMLTV_FILE = "";
         static string GBPVR_DATABASE = "";
 
-        static bool LOADING_XMLTV_FILE = false;
+        //static bool LOADING_XMLTV_FILE = false;
         static bool XMLTV_INSTANCE_CREATED = false;
-        static int LAST_REPORTED_XMLTV_PROGRESS = 0;
+        //static int LAST_REPORTED_XMLTV_PROGRESS = 0;
 
 
-        static bool LOADING_GBPVR_DATABASE = false;
+        //static bool LOADING_GBPVR_DATABASE = false;
         static bool SQLLIST_INSTANCE_CREATED = false;
-        static int LAST_REPORTED_SQLLITE_PROGRESS = 0;
+        //static int LAST_REPORTED_SQLLITE_PROGRESS = 0;
+
+        static int LAST_REPORTED_PROGRESS = 0;
 
         static FileInfo fi_XMLTVFILE;
         static FileInfo fi_GBPVRDATABASE;
@@ -99,113 +101,158 @@
 
         static void gLog_ReportProgress(object sender, ReportProgressEventArgs e) 
         {
-            if (!XMLTV_INSTANCE_CREATED && LOADING_XMLTV_FILE)
+            //if (!XMLTV_INSTANCE_CREATED && LOADING_XMLTV_FILE)
+            //{
+            //    if (LAST_REPORTED_XMLTV_PROGRESS != e.Progress)
+            //    {
+            //        ConsoleOverwritePreviosLine("XMLTV: {0} Loading: {1:00}%", fi_XMLTVFILE.Name, e.Progress);
+            //        LAST_REPORTED_XMLTV_PROGRESS = e.Progress;
+            //        if (e.Progress == 100)
+            //        {
+            //            Console.WriteLine("XMLTV: {0} Loading: {1:00}%", fi_XMLTVFILE.Name, e.Progress);
+            //        }
+            //    }
+            //}
+            //if (!SQLLIST_INSTANCE_CREATED && LOADING_GBPVR_DATABASE)
+            //{
+            //    if (LAST_REPORTED_SQLLITE_PROGRESS != e.Progress)
+            //    {
+            //        ConsoleOverwritePreviosLine("SQLLITE: {0} Loading: {1:00}%", fi_XMLTVFILE.Name, e.Progress);
+            //        LAST_REPORTED_SQLLITE_PROGRESS = e.Progress;
+            //        if (e.Progress == 100)
+            //        {
+            //            Console.WriteLine("SQLLITE: {0} Loading: {1:00}%", fi_XMLTVFILE.Name, e.Progress);
+            //        }
+            //    }
+            //}
+
+            object k = e.UserState;
+            if (k == null)
             {
-                if (LAST_REPORTED_XMLTV_PROGRESS != e.Progress)
+                if (sender == null)
                 {
-                    ConsoleOverwritePreviosLine("XMLTV: {0} Loading: {1:00}%", fi_XMLTVFILE.Name, e.Progress);
-                    LAST_REPORTED_XMLTV_PROGRESS = e.Progress;
-                    if (e.Progress == 100)
+                    if (LAST_REPORTED_PROGRESS != e.Progress)
                     {
-                        Console.WriteLine("XMLTV: {0} Loading: {1:00}%", fi_XMLTVFILE.Name, e.Progress);
+                        ConsoleOverwritePreviosLine("Progress: {0} ", e.Progress);
+                        LAST_REPORTED_PROGRESS = e.Progress;
+                        if (e.Progress == 100)
+                        {
+                            Console.WriteLine("Progress: {0} ", e.Progress);
+                        }
+                    }
+                }
+                else
+                {
+                    if (LAST_REPORTED_PROGRESS != e.Progress)
+                    {
+                        ConsoleOverwritePreviosLine("{0}: Progress: {1:00}%", sender.GetType().Name, e.Progress);
+                        LAST_REPORTED_PROGRESS = e.Progress;
+                        if (e.Progress == 100)
+                        {
+                            Console.WriteLine("{0}: Progress: {1:00}%", sender.GetType().Name, e.Progress);
+                        }
                     }
                 }
             }
-            if (!SQLLIST_INSTANCE_CREATED && LOADING_GBPVR_DATABASE)
+            else
             {
-                if (LAST_REPORTED_SQLLITE_PROGRESS != e.Progress)
+                if (sender == null)
+                {
+                    if (LAST_REPORTED_PROGRESS != e.Progress)
+                    {
+                        ConsoleOverwritePreviosLine("Progress: {0} ", k.ToString());
+                        LAST_REPORTED_PROGRESS = e.Progress;
+                        if (e.Progress == 100)
+                        {
+                            Console.WriteLine("Progress: {0} ", k.ToString());
+                        }
+                    }
+                }
+                else
                 {
-                    ConsoleOverwritePreviosLine("SQLLITE: {0} Loading: {1:00}%", fi_XMLTVFILE.Name, e.Progress);
-                    LAST_REPORTED_SQLLITE_PROGRESS = e.Progress;
-                    if (e.Progress == 100)
+                    if (LAST_REPORTED_PROGRESS != e.Progress)
                     {
-                        Console.WriteLine("SQLLITE: {0} Loading: {1:00}%", fi_XMLTVFILE.Name, e.Progress);
+                        ConsoleOverwritePreviosLine("{0}: {1}", sender.GetType().Name, k.ToString());
+                        LAST_REPORTED_PROGRESS = e.Progress;
+                        if (e.Progress == 100)
+                        {
+                            Console.WriteLine("{0}: {1}", sender.GetType().Name, k.ToString());
+                        }
                     }
                 }
             }
         }
         static void LoadXMLTVFile()
         {
-            LOADING_XMLTV_FILE = true;
+            //LOADING_XMLTV_FILE = true;
             if (string.IsNullOrEmpty(XMLTV_FILE))
             {
                 gLog.Error.WriteLine("XMLTV File is either a null or empty string.");
-                LOADING_XMLTV_FILE = false;
+                //LOADING_XMLTV_FILE = false;
                 return;
             }
             fi_XMLTVFILE = new FileInfo(XMLTV_FILE);
             if (!fi_XMLTVFILE.Exists)
             {
                 gLog.Error.WriteLine("Could not find XMLTV File: {0}", fi_XMLTVFILE.FullName);
-                LOADING_XMLTV_FILE = false;
+                //LOADING_XMLTV_FILE = false;
                 return;
             }
 
             XMLTV.Create(fi_XMLTVFILE.FullName, new EventHandler<EventArgs>(XMLTV_OnInstanceCreated));
             while (!XMLTV_INSTANCE_CREATED) { Application.DoEvents(); }
-            LOADING_XMLTV_FILE = false;
+            //LOADING_XMLTV_FILE = false;
         }
         static void XMLTV_OnInstanceCreated(object sender, EventArgs e) { XMLTV_INSTANCE_CREATED = true; }
 
         static void LoadGBPVRDatabase()
         {
-            LOADING_GBPVR_DATABASE = true;
+            //LOADING_GBPVR_DATABASE = true;
             if (string.IsNullOrEmpty(GBPVR_DATABASE))
             {
                 gLog.Error.WriteLine("GBPVR Datbase is either a null or empty string.");
-                LOADING_GBPVR_DATABASE = false;
+                //LOADING_GBPVR_DATABASE = false;
                 return;
             }
             fi_GBPVRDATABASE = new FileInfo(GBPVR_DATABASE);
             if (!fi_GBPVRDATABASE.Exists)
             {
                 gLog.Error.WriteLine("Could not find GBPVR Database: {0}", fi_GBPVRDATABASE.FullName);
-                LOADING_GBPVR_DATABASE = false;
+                //LOADING_GBPVR_DATABASE = false;
                 return;
             }
             sqlite = SQLLITE.Create(fi_GBPVRDATABASE.FullName, new EventHandler<EventArgs>(SQLLITE_OnInstanceCreated));
             while (!SQLLIST_INSTANCE_CREATED) { Application.DoEvents(); }
-            LOADING_GBPVR_DATABASE = false;
+            //LOADING_GBPVR_DATABASE = false;
         }
         static void SQLLITE_OnInstanceCreated(object sender, EventArgs e) { SQLLIST_INSTANCE_CREATED = true; }
 
 
-        static List<SQLLITE.IPROGRAMME> gbpvr_invalid_programs;
-        static List<SQLLITE.IPROGRAMME> gbpvr_valid_programs;
-        static List<SQLLITE.ICHANNEL> gbpvr_channels;
-        static List<SQLLITE.IRECORDING_SCHEDULE> gbpvr_recordings;
-        static List<libxmltv.Interfaces.IProgramDefinition> xmltv_programs;
+        //static List<SQLLITE.IPROGRAMME> gbpvr_invalid_programs;
+        //static List<SQLLITE.IPROGRAMME> gbpvr_valid_programs;
+        //static List<SQLLITE.ICHANNEL> gbpvr_channels;
+        //static List<SQLLITE.IRECORDING_SCHEDULE> gbpvr_recordings;
+        //static List<libxmltv.Interfaces.IProgramDefinition> xmltv_programs;
         static void PerformDatabaseProcessing()
         {
-           gbpvr_channels = sqlite.Channels;
-            //gbpvr_programs = sqlite.Programs;
-            gbpvr_invalid_programs = new List<SQLLITE.IPROGRAMME>();
-            gbpvr_valid_programs = new List<SQLLITE.IPROGRAMME>();
-            gbpvr_recordings = sqlite.Recordings;            
+            var sqllite_channels = sqlite.Channels;
+            var sqllite_recordings = sqlite.Recordings;
+            var sqllite_programs = sqlite.Programs;
             Type datatype;
             var xmlt_raw_program_data = (IProgramDefinitionList)XMLTV.CreateBindingSourceFromData(XMLTV.GetPrograms(), out datatype);
-            //xmltv_programs = xmlt_raw_program_data.ToList().OrderBy(p => p.ChannelNumber).ThenBy(p => DateTime.Parse(p.Start)).ToList();
-            //xmltv_programs = xmltv_programs.FindAll(p => p.Title == "Law & Order: Criminal Intent").ToList();
-            xmltv_programs = xmlt_raw_program_data.ToList().OrderBy(p => DateTime.Parse(p.Start)).ToList();
-            var gbpvr_programs_startdate_range = sqlite.GetProgramsDateRange(sqlite.Programs);
+            var xmltv_programs = xmlt_raw_program_data.ToList().OrderBy(p => DateTime.Parse(p.Start)).ToList();
+            var sqllite_programs_startdate_range = sqlite.GetProgramsDateRange(sqllite_programs);
             var xmltv_programs_startdate_range = GetXMLTVProgramStartDateRange(xmltv_programs);
-
-            gbpvr_valid_programs = sqlite.FilterProgramsByDateRange(sqlite.Programs, xmltv_programs_startdate_range, out gbpvr_invalid_programs);
+            var gbpvr_invalid_programs = new List<SQLLITE.IPROGRAMME>();
+            var gbpvr_valid_programs = sqlite.GetValidPrograms(sqllite_programs, xmltv_programs, out gbpvr_invalid_programs);
             xmltv_programs = xmltv_programs.OrderBy(s => s.ChannelNumber).ThenBy(s => DateTime.Parse(s.Start)).ToList();
-
-            gbpvr_channels.TrimExcess();
-            gbpvr_invalid_programs.TrimExcess();
-            gbpvr_valid_programs.TrimExcess();
-            gbpvr_recordings.TrimExcess();
-            xmltv_programs.TrimExcess();
-
-            
-            
-
-
-            CheckScheduledRecordingsForDiscrepancies(gbpvr_recordings);
-            
-            CheckProgramsForDiscrepancies(gbpvr_valid_programs.ToArray(), xmltv_programs.ToArray());
+            //sqllite_channels.TrimExcess();
+            //gbpvr_invalid_programs.TrimExcess();
+            //gbpvr_valid_programs.TrimExcess();
+            //sqllite_programs.TrimExcess();
+            //xmltv_programs.TrimExcess();
+            //CheckScheduledRecordingsForDiscrepancies(sqllite_recordings);
+            //CheckProgramsForDiscrepancies(gbpvr_valid_programs, xmltv_programs);
         }
 
         static IDateTimeRange GetXMLTVProgramStartDateRange(List<libxmltv.Interfaces.IProgramDefinition> programs)
@@ -224,64 +271,61 @@
 
         static void CheckScheduledRecordingsForDiscrepancies(List<SQLLITE.IRECORDING_SCHEDULE> gbpvr)
         {
-            //gLog.Warn.WriteLine("CheckScheduledRecordingsForDiscrepancies() has not been implemented");
-            var manual_gbpvr_recordings = gbpvr.FindAll(p => p.recording_type == 0).ToList();
-
-            foreach (var manual_recording in manual_gbpvr_recordings)
-            {
-                string title = manual_recording.filename;
-                DateTime start = manual_recording.manual_start_time;
-                DateTime end = manual_recording.manual_end_time;
-
-                long channel_oid = manual_recording.manual_channel_oid;
-
-                var found_channel = gbpvr_channels.Find(p => p.oid == channel_oid);
-                var channel_number = found_channel.channel_number;
-
-                var found_program = xmltv_programs.ToList().Find(p => 
-                    p.Title.ToLower() == title.ToLower() && 
-                    p.Start == start.ToDateTimeString() &&
-                    p.Stop == end.ToDateTimeString() &&
-                    p.ChannelNumber == channel_number
-                    );
+            ////gLog.Warn.WriteLine("CheckScheduledRecordingsForDiscrepancies() has not been implemented");
+            //var manual_gbpvr_recordings = gbpvr.FindAll(p => p.recording_type == 0).ToList();
 
-                if (found_program != null)
-                {
-                    gLog.Info.WriteLine("Recording might be valid: oid='{0}' programme_oid='{1}' title='{2}' start='{3}', end='{4}'", manual_recording.oid, manual_recording.programme_oid, title, start.ToDateTimeString(), end.ToDateTimeString());
-                }
-                else
-                {
-                    gLog.Warn.WriteLine("Recording may not be valid: oid='{0}' programme_oid='{1}' title='{2}' start='{3}', end='{4}'", manual_recording.oid, manual_recording.programme_oid, title, start.ToDateTimeString(), end.ToDateTimeString());
-
-                    // find the program on the channel at the start time
-                    var correct_program = xmltv_programs.ToList().Find(p => 
-                        p.ChannelNumber == channel_number &&
-                        p.Start == start.ToDateTimeString()
-                        );
-                    if (correct_program != null)
-                    {
-                        gLog.Warn.WriteLine("\tThis will be recorded: {0}", correct_program.ToString());
-                    }
-                }
-            }
-        }
-
-        static void CheckProgramsForDiscrepancies(SQLLITE.IPROGRAMME[] gbpvr, libxmltv.Interfaces.IProgramDefinition[] xmltv)
-        {
-            //gLog.Warn.WriteLine("CheckProgramsForDiscrepancies() has not been implemented");
-            if (gbpvr.Count() != xmltv.Count())
-            {
-                throw new ArgumentOutOfRangeException("gbpvr.Count/xmltv.Count", string.Format("gbpvr.Count: '0x{0:x8}' != xmltv.Count: '0x{1:x8}'", gbpvr.Count(),xmltv.Count()));
-            }
-            for (int i = 0; i < gbpvr.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);
-                }
-            }
+            //foreach (var manual_recording in manual_gbpvr_recordings)
+            //{
+            //    string title = manual_recording.filename;
+            //    DateTime start = manual_recording.manual_start_time;
+            //    DateTime end = manual_recording.manual_end_time;
+            //    long channel_oid = manual_recording.manual_channel_oid;
+            //    var found_channel = gbpvr_channels.Find(p => p.oid == channel_oid);
+            //    var channel_number = found_channel.channel_number;
+            //    var found_program = xmltv_programs.ToList().Find(p => 
+            //        p.Title.ToLower() == title.ToLower() && 
+            //        p.Start == start.ToDateTimeString() &&
+            //        p.Stop == end.ToDateTimeString() &&
+            //        p.ChannelNumber == channel_number
+            //        );
+            //    if (found_program != null)
+            //    {
+            //        gLog.Info.WriteLine("Recording might be valid: oid='{0}' programme_oid='{1}' title='{2}' start='{3}', end='{4}'", manual_recording.oid, manual_recording.programme_oid, title, start.ToDateTimeString(), end.ToDateTimeString());
+            //    }
+            //    else
+            //    {
+            //        gLog.Warn.WriteLine("Recording may not be valid: oid='{0}' programme_oid='{1}' title='{2}' start='{3}', end='{4}'", manual_recording.oid, manual_recording.programme_oid, title, start.ToDateTimeString(), end.ToDateTimeString());
+            //        // find the program on the channel at the start time
+            //        var correct_program = xmltv_programs.ToList().Find(p => 
+            //            p.ChannelNumber == channel_number &&
+            //            p.Start == start.ToDateTimeString()
+            //            );
+            //        if (correct_program != null)
+            //        {
+            //            gLog.Warn.WriteLine("\tThis will be recorded: {0}", correct_program.ToString());
+            //        }
+            //    }
+            //}
+        }
+
+        static void CheckProgramsForDiscrepancies(List<SQLLITE.IPROGRAMME> list_gbpvr, List<libxmltv.Interfaces.IProgramDefinition> list_xmltv)
+        {
+            ////gLog.Warn.WriteLine("CheckProgramsForDiscrepancies() has not been implemented");
+            //var gbpvr = list_gbpvr.ToArray();
+            //var xmltv = list_xmltv.ToArray();
+            ////if (gbpvr.Count() != xmltv.Count())
+            ////{
+            ////    throw new ArgumentOutOfRangeException("gbpvr.Count/xmltv.Count", string.Format("gbpvr.Count: '0x{0:x8}' != xmltv.Count: '0x{1:x8}'", gbpvr.Count(),xmltv.Count()));
+            ////}
+            ////for (int i = 0; i < gbpvr.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);
+            ////    }
+            ////}
         }
     }
 }

 

  ViewVC Help
Powered by ViewVC 1.1.22