/[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 187 by william, Sat Mar 16 19:13:18 2013 UTC revision 192 by william, Sat Mar 16 20:14:46 2013 UTC
# Line 420  namespace GBPVRProgramDatabaseFixer Line 420  namespace GBPVRProgramDatabaseFixer
420                  }                  }
421                  index++;                  index++;
422              }              }
423                gLog.Info.WriteLine("Total XMLTV Programs: 0x{0:x8}", xmltv_programs.Count);
424                gLog.Info.WriteLine("Total Valid GB-PVR Programs: 0x{0:x8}", source_valid.Count);
425                gLog.Info.WriteLine("Total Invalid GB-PVR Programs: 0x{0:x8}", source_invalid.Count);
426                gLog.Info.WriteLine("Total GB-PVR Programs (Valid+Invalid): 0x{0:x8} == 0x{1:x8}", source_valid.Count + source_invalid.Count, gbpvr_programs.Count);
427              #region old-code              #region old-code
428              //List<OldNewProgram> source_update = new List<OldNewProgram>();              //List<OldNewProgram> source_update = new List<OldNewProgram>();
429              ////if (range == null)              ////if (range == null)
# Line 816  namespace GBPVRProgramDatabaseFixer Line 819  namespace GBPVRProgramDatabaseFixer
819          }          }
820    
821          public void RemoveOldGBPVRPrograms(List<SQLLITE.IPROGRAMME> programs)          public void RemoveOldGBPVRPrograms(List<SQLLITE.IPROGRAMME> programs)
822          {          {            
823              gLog.Info.WriteLine("Removing all gbpvr programs.");              gLog.Info.WriteLine("Removing all gbpvr programs.");
824              //double total = programs.Count;              //double total = programs.Count;
825              //double index = 0;              //double index = 0;
# Line 831  namespace GBPVRProgramDatabaseFixer Line 834  namespace GBPVRProgramDatabaseFixer
834              //    }              //    }
835              //    index++;              //    index++;
836              //}              //}
837                if (!RemoveAllProgramDatabaseEntries())              Stopwatch st = new Stopwatch();
838                {              st.Start();
839                    gLog.Error.WriteLine("Failed to remove one or more program entries");              if (!RemoveAllProgramDatabaseEntries())
840                }              {
841                    gLog.Error.WriteLine("Failed to remove one or more program(s)");
842                }
843                st.Stop();
844                gLog.Warn.WriteLine("    operation took: {0:0.00000} minutes", st.Elapsed.TotalMinutes);
845          }          }
846          public void UpdateGBPVRPrograms(List<IOldNewProgram> programs)          public void UpdateGBPVRPrograms(List<IOldNewProgram> programs)
847          {          {
848              gLog.Info.WriteLine("Inserting {0} gbpvr programs.", programs.Count);              
849              double total = programs.Count;              //double total = programs.Count;
850              double index = 0;              //double index = 0;
851              double progress = 0;              //double progress = 0;
852                List<IPROGRAMME> new_program_list = new List<IPROGRAMME>();
853              foreach (var program in programs)              foreach (var program in programs)
854              {              {
855                  progress = 100.0 * (index / total);                  new_program_list.Add(program.NewProgram);
                 gLog.ReportProgress(this, new ReportProgressEventArgs((int)progress, string.Format("Updating/Inserting GBPVR Programs: {0:00}%", (int)progress)));  
                 if (program.NewProgram.Equals(program.OldProgram))  
                 {  
                     // program does not need to be updated  
                     continue;  
                 }  
                 else  
                 {  
                     if (!InsertProgramDatabaseEntry(program.NewProgram))  
                     {  
                         gLog.Error.WriteLine("Failed to insert program with oid: {0}", program.NewProgram.oid);  
                     }  
                 }  
                 index++;  
856              }              }
857                //new_program_list.TrimExcess();
858                gLog.Info.WriteLine("Inserting {0} gbpvr programs.", new_program_list.Count);
859                Stopwatch st = new Stopwatch();
860                st.Start();
861                if (!InsertProgramEntryDatabase(new_program_list))
862                {
863                    gLog.Error.WriteLine("Failed to insert one or more program(s)");
864                }
865                //string command = BuildGBPVRMultiInsertCommand(new_program_list);
866                st.Stop();
867                gLog.Warn.WriteLine("    operation took: {0:0.00000} minutes", st.Elapsed.TotalMinutes);
868          }          }
869    
870          private bool RemoveAllProgramDatabaseEntries()          private bool RemoveAllProgramDatabaseEntries()
# Line 940  namespace GBPVRProgramDatabaseFixer Line 945  namespace GBPVRProgramDatabaseFixer
945              }              }
946              return result;              return result;
947          }          }
948          private bool InsertProgramDatabaseEntry(IPROGRAMME new_program)          private bool InsertProgramEntryDatabase(List<IPROGRAMME> list)
949          {          {
950              bool result = false;              bool result = false;
951              try              try
# Line 953  namespace GBPVRProgramDatabaseFixer Line 958  namespace GBPVRProgramDatabaseFixer
958                          con.Open();                          con.Open();
959                          //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);
960                          string command_text = string.Empty;                          string command_text = string.Empty;
961                          StringBuilder builder = new StringBuilder();                          command_text = BuildGBPVRMultiInsertCommand(list);
                         builder.AppendLine(string.Format("INSERT INTO [{0}]", TABLES.PROGRAMME));  
                         builder.Append("VALUES (");  
                         builder.AppendFormat("[oid]=@oid,");  
                         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");  
                         builder.AppendFormat(");");  
                         command_text = builder.ToString();  
962                          //gLog.Verbose.Debug.WriteLine("Executing Command: '{0}'", command_text);                          //gLog.Verbose.Debug.WriteLine("Executing Command: '{0}'", command_text);
963                          using (SQLiteCommand cmd = new SQLiteCommand(command_text, con))                          using (SQLiteCommand cmd = new SQLiteCommand(command_text, con))
964                          {                          {                          
                             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));  
965                              int rowsupdated = cmd.ExecuteNonQuery();                              int rowsupdated = cmd.ExecuteNonQuery();
966                              //gLog.Verbose.Info.WriteLine("Updated '{0}' rows", rowsupdated);                              //gLog.Verbose.Info.WriteLine("Updated '{0}' rows", rowsupdated);
967                          }                          }
# Line 1004  namespace GBPVRProgramDatabaseFixer Line 986  namespace GBPVRProgramDatabaseFixer
986              }              }
987              return result;              return result;
988          }          }
         private bool UpdateProgramDatabaseEntry(IPROGRAMME new_program)  
         {  
             bool result = false;  
             try  
             {  
                 using (SQLiteConnection con = CreateConnection())  
                 {  
                     try  
                     {  
                         //gLog.Verbose.Info.WriteLine("Updating old program with oid: '{0}'", new_program.oid);  
                         con.Open();  
                         //string command_text = string.Format(@"UPDATE [{0}] SET [name]=@name,[sub_title]=@subtitle, WHERE [OID] = @oid", TABLES.PROGRAMME);  
                         string command_text = string.Empty;  
                         StringBuilder builder = new StringBuilder();  
                         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();  
                         //gLog.Verbose.Debug.WriteLine("Executing Command: '{0}'", command_text);  
                         using (SQLiteCommand cmd = new SQLiteCommand(command_text, con))  
                         {  
                             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));  
                             int rowsupdated = cmd.ExecuteNonQuery();  
                             //gLog.Verbose.Info.WriteLine("Updated '{0}' rows", rowsupdated);  
                         }  
989    
990                          result = true;          private string BuildGBPVRMultiInsertCommand(List<IPROGRAMME> list)
991                      }          {
992                      catch (SQLiteException ex)              StringBuilder builder = new StringBuilder();
993                      {              /*
994                          gLog.Error.WriteLine(ex.ToString());                  insert into table1 (field1,field2) values (value1,value2);
995                          result = false;                  insert into table1 (field1,field2) values (value1,value2);
996                      }                  insert into table1 (field1,field2) values (value1,value2);
997                      finally                  insert into table1 (field1,field2) values (value1,value2)
998                      {               */
999                          con.Close();              foreach (var t in list)
1000                      }              {
1001                  }                  builder.AppendLine(BuildGBPVRSingleInsertCommand(t));
1002              }              }
1003              catch (Exception ex)              return builder.ToString();
1004              {          }
1005                  gLog.Error.WriteLine(ex.ToString());  
1006                  result = false;          private string BuildGBPVRSingleInsertCommand(IPROGRAMME program)
1007              }          {
1008              return result;              StringBuilder builder = new StringBuilder();
1009                builder.AppendFormat("insert into {0} (oid,name,sub_title,description,start_time,end_time,channel_oid,unique_identifier,rating) values (", TABLES.PROGRAMME);
1010                builder.AppendFormat("{0},",program.oid);
1011                builder.AppendFormat("\"{0}\",", program.name);
1012                builder.AppendFormat("\"{0}\",", program.sub_title);
1013                builder.AppendFormat("\"{0}\",", program.description);
1014                builder.AppendFormat("'{0}',", program.start_time);
1015                builder.AppendFormat("'{0}',", program.end_time);
1016                builder.AppendFormat("{0},", program.channel_oid);
1017                builder.AppendFormat("\"{0}\",", program.unique_identifier);
1018                builder.AppendFormat("\"{0}\");", program.rating);
1019                return builder.ToString();
1020          }          }
1021          
1022      }      }
1023  }  }

Legend:
Removed from v.187  
changed lines
  Added in v.192

  ViewVC Help
Powered by ViewVC 1.1.22