/[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 185 by william, Sat Mar 16 18:55:49 2013 UTC revision 191 by william, Sat Mar 16 20:07:53 2013 UTC
# Line 816  namespace GBPVRProgramDatabaseFixer Line 816  namespace GBPVRProgramDatabaseFixer
816          }          }
817    
818          public void RemoveOldGBPVRPrograms(List<SQLLITE.IPROGRAMME> programs)          public void RemoveOldGBPVRPrograms(List<SQLLITE.IPROGRAMME> programs)
819          {          {            
820              gLog.Info.WriteLine("Removing {0} old gbpvr programs.", programs.Count);              gLog.Info.WriteLine("Removing all gbpvr programs.");
821              double total = programs.Count;              //double total = programs.Count;
822              double index = 0;              //double index = 0;
823              double progress = 0;              //double progress = 0;
824              foreach (var program in programs)              //foreach (var program in programs)
825                //{
826                //    progress = 100.0 * (index / total);
827                //    gLog.ReportProgress(this, new ReportProgressEventArgs((int)progress, string.Format("Removing GBPVR Programs: {0:00}%", (int)progress)));
828                //    if (!RemoveProgramDatabaseEntry(program))
829                //    {
830                //        gLog.Error.WriteLine("Failed to remove program with oid: {0}", program.oid);
831                //    }
832                //    index++;
833                //}
834                Stopwatch st = new Stopwatch();
835                st.Start();
836                if (!RemoveAllProgramDatabaseEntries())
837              {              {
838                  progress = 100.0 * (index / total);                  gLog.Error.WriteLine("Failed to remove one or more program(s)");
                 gLog.ReportProgress(this, new ReportProgressEventArgs((int)progress, string.Format("Removing GBPVR Programs: {0:00}%", (int)progress)));  
                 if (!RemoveProgramDatabaseEntry(program))  
                 {  
                     gLog.Error.WriteLine("Failed to remove program with oid: {0}", program.oid);  
                 }  
                 index++;  
839              }              }
840                st.Stop();
841                gLog.Warn.WriteLine("    operation took: {0:0.00000} minutes", st.Elapsed.TotalMinutes);
842          }          }
843          public void UpdateGBPVRPrograms(List<IOldNewProgram> programs)          public void UpdateGBPVRPrograms(List<IOldNewProgram> programs)
844          {          {
845              gLog.Info.WriteLine("Updating {0} gbpvr programs.", programs.Count);              
846              double total = programs.Count;              //double total = programs.Count;
847              double index = 0;              //double index = 0;
848              double progress = 0;              //double progress = 0;
849                List<IPROGRAMME> new_program_list = new List<IPROGRAMME>();
850              foreach (var program in programs)              foreach (var program in programs)
851              {              {
852                  progress = 100.0 * (index / total);                  new_program_list.Add(program.NewProgram);
853                  gLog.ReportProgress(this, new ReportProgressEventArgs((int)progress, string.Format("Updating GBPVR Programs: {0:00}%", (int)progress)));              }
854                  if (program.NewProgram.Equals(program.OldProgram))              new_program_list.TrimExcess();
855                  {              gLog.Info.WriteLine("Inserting {0} gbpvr programs.", new_program_list.ToArray().Count());
856                      // program does not need to be updated              Stopwatch st = new Stopwatch();
857                      continue;              st.Start();
858                  }              if (!InsertProgramEntryDatabase(new_program_list))
859                  else              {
860                    gLog.Error.WriteLine("Failed to insert one or more program(s)");
861                }
862                //string command = BuildGBPVRMultiInsertCommand(new_program_list);
863                st.Stop();
864                gLog.Warn.WriteLine("    operation took: {0:0.00000} minutes", st.Elapsed.TotalMinutes);
865            }
866    
867            private bool RemoveAllProgramDatabaseEntries()
868            {
869                bool result = false;
870                try
871                {
872                    using (SQLiteConnection con = CreateConnection())
873                  {                  {
874                      if (!UpdateProgramDatabaseEntry(program.NewProgram))                      try
875                      {                      {
876                          gLog.Error.WriteLine("Failed to update program with oid: {0}", program.NewProgram.oid);                          //gLog.Verbose.Info.WriteLine("Removing old program with oid: '{0}'", old_program.oid);
877                            con.Open();
878                            string command_text = string.Format(@"DELETE FROM [{0}];", TABLES.PROGRAMME);
879                            //gLog.Verbose.Debug.WriteLine("Executing Command: '{0}'", command_text);
880                            using (SQLiteCommand cmd = new SQLiteCommand(command_text, con))
881                            {
882                                //cmd.Parameters.Add(new SQLiteParameter("oid", old_program.oid));
883                                int rowsupdated = cmd.ExecuteNonQuery();
884                                //gLog.Verbose.Info.WriteLine("Updated '{0}' rows", rowsupdated);
885                            }
886                            result = true;
887                        }
888                        catch (SQLiteException ex)
889                        {
890                            gLog.Error.WriteLine(ex.ToString());
891                            result = false;
892                        }
893                        finally
894                        {
895                            con.Close();
896                      }                      }
897                  }                  }
                 index++;  
898              }              }
899                catch (Exception ex)
900                {
901                    gLog.Error.WriteLine(ex.ToString());
902                    result = false;
903                }
904                return result;
905          }          }
   
906          private bool RemoveProgramDatabaseEntry(IPROGRAMME old_program)          private bool RemoveProgramDatabaseEntry(IPROGRAMME old_program)
907          {          {
908              bool result = false;              bool result = false;
# Line 897  namespace GBPVRProgramDatabaseFixer Line 942  namespace GBPVRProgramDatabaseFixer
942              }              }
943              return result;              return result;
944          }          }
945          private bool UpdateProgramDatabaseEntry(IPROGRAMME new_program)          private bool InsertProgramEntryDatabase(List<IPROGRAMME> list)
946          {          {
947              bool result = false;              bool result = false;
948              try              try
# Line 910  namespace GBPVRProgramDatabaseFixer Line 955  namespace GBPVRProgramDatabaseFixer
955                          con.Open();                          con.Open();
956                          //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);
957                          string command_text = string.Empty;                          string command_text = string.Empty;
958                          StringBuilder builder = new StringBuilder();                          command_text = BuildGBPVRMultiInsertCommand(list);
                         builder.AppendLine(string.Format("UPDATE [{0}]", TABLES.PROGRAMME));  
                         builder.Append("SET ");  
                         builder.AppendFormat("[name]=@name,");  
                         builder.AppendFormat("[sub_title]=@sub_title,");  
                         builder.AppendFormat("[description]=@description,");  
                         builder.AppendFormat("[start_time]=@start_time,");  
                         builder.AppendFormat("[end_time]=@end_time,");  
                         builder.AppendFormat("[channel_oid]=@channel_oid,");  
                         builder.AppendFormat("[unique_identifier]=@unique_identifier,");  
                         builder.AppendFormat("[rating]=@rating");  
                         builder.AppendLine(" WHERE [oid] = @oid");  
                         command_text = builder.ToString();  
959                          //gLog.Verbose.Debug.WriteLine("Executing Command: '{0}'", command_text);                          //gLog.Verbose.Debug.WriteLine("Executing Command: '{0}'", command_text);
960                          using (SQLiteCommand cmd = new SQLiteCommand(command_text, con))                          using (SQLiteCommand cmd = new SQLiteCommand(command_text, con))
961                          {                          {                          
                             cmd.Parameters.Add(new SQLiteParameter("oid", new_program.oid));  
                             cmd.Parameters.Add(new SQLiteParameter("name", new_program.name));  
                             cmd.Parameters.Add(new SQLiteParameter("sub_title", new_program.sub_title));  
                             cmd.Parameters.Add(new SQLiteParameter("description", new_program.description));  
                             cmd.Parameters.Add(new SQLiteParameter("start_time", new_program.start_time));  
                             cmd.Parameters.Add(new SQLiteParameter("end_time", new_program.end_time));  
                             cmd.Parameters.Add(new SQLiteParameter("channel_oid", new_program.channel_oid));  
                             cmd.Parameters.Add(new SQLiteParameter("unique_identifier", new_program.unique_identifier));  
                             cmd.Parameters.Add(new SQLiteParameter("rating", new_program.rating));  
962                              int rowsupdated = cmd.ExecuteNonQuery();                              int rowsupdated = cmd.ExecuteNonQuery();
963                              //gLog.Verbose.Info.WriteLine("Updated '{0}' rows", rowsupdated);                              //gLog.Verbose.Info.WriteLine("Updated '{0}' rows", rowsupdated);
964                          }                          }
# Line 959  namespace GBPVRProgramDatabaseFixer Line 983  namespace GBPVRProgramDatabaseFixer
983              }              }
984              return result;              return result;
985          }          }
986    
987            private string BuildGBPVRMultiInsertCommand(List<IPROGRAMME> list)
988            {
989                StringBuilder builder = new StringBuilder();
990                /*
991                    insert into table1 (field1,field2) values (value1,value2);
992                    insert into table1 (field1,field2) values (value1,value2);
993                    insert into table1 (field1,field2) values (value1,value2);
994                    insert into table1 (field1,field2) values (value1,value2)
995                 */
996                foreach (var t in list)
997                {
998                    builder.AppendLine(BuildGBPVRSingleInsertCommand(t));
999                }
1000                return builder.ToString();
1001            }
1002    
1003            private string BuildGBPVRSingleInsertCommand(IPROGRAMME program)
1004            {
1005                StringBuilder builder = new StringBuilder();
1006                builder.AppendFormat("insert into {0} (oid,name,sub_title,description,start_time,end_time,channel_oid,unique_identifier,rating) values (", TABLES.PROGRAMME);
1007                builder.AppendFormat("{0},",program.oid);
1008                builder.AppendFormat("\"{0}\",", program.name);
1009                builder.AppendFormat("\"{0}\",", program.sub_title);
1010                builder.AppendFormat("\"{0}\",", program.description);
1011                builder.AppendFormat("'{0}',", program.start_time);
1012                builder.AppendFormat("'{0}',", program.end_time);
1013                builder.AppendFormat("{0},", program.channel_oid);
1014                builder.AppendFormat("\"{0}\",", program.unique_identifier);
1015                builder.AppendFormat("\"{0}\");", program.rating);
1016                return builder.ToString();
1017            }
1018          
1019      }      }
1020  }  }

Legend:
Removed from v.185  
changed lines
  Added in v.191

  ViewVC Help
Powered by ViewVC 1.1.22