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

Diff of /trunk/GBPVRProgramDatabaseFixer/SQLLITE.cs

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

revision 209 by william, Sat Mar 16 23:36:24 2013 UTC revision 213 by william, Sun Mar 17 01:01:10 2013 UTC
# Line 823  namespace GBPVRProgramDatabaseFixer Line 823  namespace GBPVRProgramDatabaseFixer
823    
824          public void RemoveOldGBPVRPrograms(List<SQLLITE.IPROGRAMME> programs)          public void RemoveOldGBPVRPrograms(List<SQLLITE.IPROGRAMME> programs)
825          {                      {            
826              gLog.Info.WriteLine("Removing all gbpvr programs.");              //gLog.Info.WriteLine("Removing {0} gbpvr programs.", programs.Count);
827                //double total = programs.Count;
828                //double index = 0;
829                //double progress = 0;
830                //Stopwatch st = new Stopwatch();
831                //st.Start();
832                //foreach (var program in programs)
833                //{
834                //    progress = 100.0 * (index / total);
835                //    gLog.ReportProgress(this, new ReportProgressEventArgs((int)progress, string.Format("Removing GBPVR Program ({0:00}%) oid='{1}'", (int)progress, program.oid)));
836                //    if (!RemoveProgramDatabaseEntry(program))
837                //    {
838                //        gLog.Error.WriteLine("Failed to remove program with oid: {0}", program.oid);
839                //    }
840                //    index++;
841                //}
842                ////Stopwatch st = new Stopwatch();
843                ////st.Start();
844                ////if (!RemoveAllProgramDatabaseEntries())
845                ////{
846                ////    gLog.Error.WriteLine("Failed to remove one or more program(s)");
847                ////}
848                //st.Stop();
849                //gLog.Warn.WriteLine("    operation took: {0:0.00000} seconds", st.Elapsed.TotalSeconds);
850    
851                int ChunkSize = 1024;
852                var ChunkList = programs.Chunk<IPROGRAMME>(ChunkSize);
853    
854              double total = programs.Count;              double total = programs.Count;
855              double index = 0;              double index = 0;
856              double progress = 0;              double progress = 0;
857              Stopwatch st = new Stopwatch();              Stopwatch st1 = new Stopwatch();
858              st.Start();              st1.Start();
859              foreach (var program in programs)              foreach (var p in ChunkList)
860              {              {
861                  progress = 100.0 * (index / total);                  progress = 100.0 * (index / total);
862                  gLog.ReportProgress(this, new ReportProgressEventArgs((int)progress, string.Format("Removing GBPVR Program oid='{0}' ({1:00}%)", program.oid, (int)progress)));                  if (!RemoveProgramDatabaseEntry(p))
                 if (!RemoveProgramDatabaseEntry(program))  
863                  {                  {
864                      gLog.Error.WriteLine("Failed to remove program with oid: {0}", program.oid);                      gLog.Error.WriteLine("Failed to remove one or more program(s)");
865                  }                  }
866                  index++;                  gLog.ReportProgress(this, new ReportProgressEventArgs((int)progress, string.Format("Removing {0} gbpvr programs ({1} of {2}) {3:00}%", p.Count(), index, total, (int)progress)));
867                    index += (double)p.Count();
868              }              }
869                st1.Stop();
870              //Stopwatch st = new Stopwatch();              gLog.Warn.WriteLine("    operation took: {0:0.00000} seconds overall", st1.Elapsed.TotalSeconds);
             //st.Start();  
             //if (!RemoveAllProgramDatabaseEntries())  
             //{  
             //    gLog.Error.WriteLine("Failed to remove one or more program(s)");  
             //}  
             st.Stop();  
             gLog.Warn.WriteLine("    operation took: {0:0.00000} seconds", st.Elapsed.TotalSeconds);  
871          }          }
872          public void UpdateGBPVRPrograms(List<IPROGRAMME> programs)          public void UpdateGBPVRPrograms(List<IPROGRAMME> programs)
873          {          {
# Line 872  namespace GBPVRProgramDatabaseFixer Line 892  namespace GBPVRProgramDatabaseFixer
892                  //st2.Stop();                  //st2.Stop();
893                  //gLog.Warn.WriteLine("    operation took: {0:0.00000} seconds", st2.Elapsed.TotalSeconds);                  //gLog.Warn.WriteLine("    operation took: {0:0.00000} seconds", st2.Elapsed.TotalSeconds);
894                  //gLog.Warn.WriteLine(System.Environment.NewLine);                  //gLog.Warn.WriteLine(System.Environment.NewLine);
895                  gLog.ReportProgress(this, new ReportProgressEventArgs((int)progress, string.Format("Updating {0} gbpvr programs ({1} of {2}) {0:00}%", p.Count(), index, total, (int)progress)));                  gLog.ReportProgress(this, new ReportProgressEventArgs((int)progress, string.Format("Updating {0} gbpvr programs ({1} of {2}) {3:00}%", p.Count(), index, total, (int)progress)));
896                  index += (double)p.Count();                                  index += (double)p.Count();                
897              }              }
898              st1.Stop();              st1.Stop();
# Line 918  namespace GBPVRProgramDatabaseFixer Line 938  namespace GBPVRProgramDatabaseFixer
938              }              }
939              return result;              return result;
940          }          }
941          private bool RemoveProgramDatabaseEntry(IPROGRAMME old_program)          private bool RemoveProgramDatabaseEntry(IEnumerable<IPROGRAMME> list)
942          {          {
943              bool result = false;              bool result = false;
944              try              try
# Line 927  namespace GBPVRProgramDatabaseFixer Line 947  namespace GBPVRProgramDatabaseFixer
947                  {                  {
948                      try                      try
949                      {                      {
950                          //gLog.Verbose.Info.WriteLine("Removing old program with oid: '{0}'", old_program.oid);                          //gLog.Verbose.Info.WriteLine("Updating old program with oid: '{0}'", new_program.oid);
951                          con.Open();                          con.Open();
952                          string command_text = string.Format(@"DELETE FROM [{0}] WHERE [oid] = @oid;", TABLES.PROGRAMME);                          //string command_text = string.Format(@"UPDATE [{0}] SET [name]=@name,[sub_title]=@subtitle, WHERE [OID] = @oid", TABLES.PROGRAMME);
953                            string command_text = string.Empty;
954                            command_text = BuildGBPVRMultiDeleteCommand(list);
955                          //gLog.Verbose.Debug.WriteLine("Executing Command: '{0}'", command_text);                          //gLog.Verbose.Debug.WriteLine("Executing Command: '{0}'", command_text);
956                          using (SQLiteCommand cmd = new SQLiteCommand(command_text, con))                          using (SQLiteCommand cmd = new SQLiteCommand(command_text, con))
957                          {                          {
                             cmd.Parameters.Add(new SQLiteParameter("oid", old_program.oid));  
958                              int rowsupdated = cmd.ExecuteNonQuery();                              int rowsupdated = cmd.ExecuteNonQuery();
959                              //gLog.Verbose.Info.WriteLine("Updated '{0}' rows", rowsupdated);                              //gLog.Verbose.Info.WriteLine("Updated '{0}' rows", rowsupdated);
960                          }                          }
961    
962                          result = true;                          result = true;
963                      }                      }
964                      catch (SQLiteException ex)                      catch (SQLiteException ex)
# Line 1039  namespace GBPVRProgramDatabaseFixer Line 1061  namespace GBPVRProgramDatabaseFixer
1061              }              }
1062              return result;              return result;
1063          }          }
1064    
1065            #region Multi-Delete Command Support
1066            private string BuildGBPVRMultiDeleteCommand(IEnumerable<IPROGRAMME> list)
1067            {
1068                StringBuilder builder = new StringBuilder();
1069                /*
1070                    insert into table1 (field1,field2) values (value1,value2);
1071                    insert into table1 (field1,field2) values (value1,value2);
1072                    insert into table1 (field1,field2) values (value1,value2);
1073                    insert into table1 (field1,field2) values (value1,value2)
1074                 */
1075                builder.AppendLine("begin transaction;");
1076                foreach (var t in list)
1077                {
1078                    builder.AppendLine(BuildGBPVRSingleDeleteCommand(t));
1079                }
1080                builder.AppendLine("end transaction;");
1081                return builder.ToString();
1082            }
1083            private string BuildGBPVRSingleDeleteCommand(IPROGRAMME program)
1084            {
1085                StringBuilder builder = new StringBuilder();
1086                builder.AppendFormat("delete from {0} where oid={1};", TABLES.PROGRAMME, program.oid);
1087                return builder.ToString();
1088            }
1089            #endregion
1090          #region Multi-Update Command Support          #region Multi-Update Command Support
1091          private string BuildGBPVRMultiUpdateCommand(IEnumerable<IPROGRAMME> list)          private string BuildGBPVRMultiUpdateCommand(IEnumerable<IPROGRAMME> list)
1092          {          {

Legend:
Removed from v.209  
changed lines
  Added in v.213

  ViewVC Help
Powered by ViewVC 1.1.22