ViewVC Help
View File | Revision Log | Show Annotations | Download File | View Changeset | Root Listing
root/xmltv_parser/trunk/GBPVRProgramDatabaseFixer/SQLLITE.cs
(Generate patch)

Comparing trunk/GBPVRProgramDatabaseFixer/SQLLITE.cs (file contents):
Revision 195 by william, Sat Mar 16 21:44:30 2013 UTC vs.
Revision 196 by william, Sat Mar 16 21:53:19 2013 UTC

# Line 22 | Line 22 | namespace GBPVRProgramDatabaseFixer
22          List<SQLLITE.IRECORDING_SCHEDULE> Recordings { get; }
23          List<SQLLITE.ICHANNEL> Channels { get; }
24          IDateTimeRange GetProgramsDateRange(List<SQLLITE.IPROGRAMME> programs);
25 <        List<IOldNewProgram> FixGBPVRProgramsDatabase(List<SQLLITE.IPROGRAMME> gbpvr_programs, List<libxmltv.Interfaces.IProgramDefinition> xmltv_programs, out List<SQLLITE.IPROGRAMME> removed_programs);
25 >        List<SQLLITE.IPROGRAMME> FixGBPVRProgramsDatabase(List<SQLLITE.IPROGRAMME> gbpvr_programs, List<libxmltv.Interfaces.IProgramDefinition> xmltv_programs, out List<SQLLITE.IPROGRAMME> removed_programs);
26  
27          void RemoveOldGBPVRPrograms(List<SQLLITE.IPROGRAMME> programs);
28 <        void UpdateGBPVRPrograms(List<IOldNewProgram> programs);
28 >        void UpdateGBPVRPrograms(List<SQLLITE.IPROGRAMME> programs);
29  
30      }
31      public class SQLLITE : ISQLLITE
# Line 347 | Line 347 | namespace GBPVRProgramDatabaseFixer
347              return range;
348          }
349  
350 <        public List<IOldNewProgram> FixGBPVRProgramsDatabase(List<SQLLITE.IPROGRAMME> gbpvr_programs, List<libxmltv.Interfaces.IProgramDefinition> xmltv_programs, out List<SQLLITE.IPROGRAMME> source_invalid)
350 >        public List<SQLLITE.IPROGRAMME> FixGBPVRProgramsDatabase(List<SQLLITE.IPROGRAMME> gbpvr_programs, List<libxmltv.Interfaces.IProgramDefinition> xmltv_programs, out List<SQLLITE.IPROGRAMME> source_invalid)
351          {
352              source_invalid = new List<IPROGRAMME>();
353 <            List<IOldNewProgram> source_valid = new List<IOldNewProgram>();
353 >            List<IPROGRAMME> source_valid = new List<IPROGRAMME>();
354              gbpvr_programs = gbpvr_programs.OrderBy(s => s.start_time).ToList();
355              xmltv_programs = xmltv_programs.OrderBy(s => DateTime.Parse(s.Start)).ToList();
356              gbpvr_programs.TrimExcess();
# Line 410 | Line 410 | namespace GBPVRProgramDatabaseFixer
410                          {
411                              throw new Exception(string.Format("Program oid '{0}' was not properly updated.", updated_program.oid));
412                          }
413 <                        source_valid.Add(new OldNewProgram(program, updated_program));
413 >                        //source_valid.Add(new OldNewProgram(program, updated_program));
414 >                        source_valid.Add(updated_program);
415                      }
416                      else
417                      {
418                          // data is the same
419 <                        source_valid.Add(new OldNewProgram(program, program));
419 >                        //source_valid.Add(new OldNewProgram(program, program));
420 >                        source_valid.Add(program);
421                      }
422                  }
423                  index++;
# Line 843 | Line 845 | namespace GBPVRProgramDatabaseFixer
845              st.Stop();
846              gLog.Warn.WriteLine("    operation took: {0:0.00000} minutes", st.Elapsed.TotalMinutes);
847          }
848 <        public void UpdateGBPVRPrograms(List<IOldNewProgram> programs)
848 >        public void UpdateGBPVRPrograms(List<IPROGRAMME> programs)
849          {
850 <            int STEP = 500;
851 <            List<List<IPROGRAMME>> array_list = new List<List<IPROGRAMME>>(); // holds a list of ~STEP programs per index
850 <            for (int i = 0; i < programs.Count;)
851 <            {
852 <                List<IPROGRAMME> tmp = new List<IPROGRAMME>(STEP);
853 <                for (int j = 0; j < STEP; j++)
854 <                {
855 <                    try
856 <                    {
857 <                        tmp.Add(programs[i + j].NewProgram);
858 <                    }
859 <                    catch { }
860 <                }
861 <                tmp.TrimExcess();
862 <                array_list.Add(tmp);
863 <                i += STEP;
864 <            }
865 <            array_list.TrimExcess();
850 >            int ChunkSize = 500;
851 >            var ChunkList = programs.Chunk<IPROGRAMME>(ChunkSize);
852  
853              int total = programs.Count;
854              int index = 0;
855              double progress = 0;
856              Stopwatch st = new Stopwatch();
857              st.Start();
858 <            foreach (var p in array_list)
858 >            foreach (var p in ChunkList)
859              {
860 <                progress = 100.0 * (index / total);              
860 >                progress = 100.0 * (index / total);
861                  //gLog.Info.WriteLine("Inserting {0} gbpvr programs.", p.Count);  
862 <                if (!InsertProgramEntryDatabase(p))
862 >                if (!InsertProgramEntryDatabase(p.ToList()))
863                  {
864                      gLog.Error.WriteLine("Failed to insert one or more program(s)");
865 <                }              
865 >                }
866                  gLog.ReportProgress(this, new ReportProgressEventArgs((int)progress, string.Format("Inserting GBPVR Programs: {0:00}%", (int)progress)));
867 <                index += p.Count;
867 >                index += p.Count();
868              }
869              st.Stop();
870              gLog.Warn.WriteLine("    operation took: {0:0.00000} minutes", st.Elapsed.TotalMinutes);

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines