/[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 189 by william, Sat Mar 16 19:56:47 2013 UTC
# Line 838  namespace GBPVRProgramDatabaseFixer Line 838  namespace GBPVRProgramDatabaseFixer
838          }          }
839          public void UpdateGBPVRPrograms(List<IOldNewProgram> programs)          public void UpdateGBPVRPrograms(List<IOldNewProgram> programs)
840          {          {
841              gLog.Info.WriteLine("Inserting {0} gbpvr programs.", programs.Count);              
842              double total = programs.Count;              //double total = programs.Count;
843              double index = 0;              //double index = 0;
844              double progress = 0;              //double progress = 0;
845                List<IPROGRAMME> new_program_list = new List<IPROGRAMME>();
846              foreach (var program in programs)              foreach (var program in programs)
847              {              {
848                  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++;  
849              }              }
850                new_program_list.TrimExcess();
851                gLog.Info.WriteLine("Inserting {0} gbpvr programs.", new_program_list.Count);
852                if (!InsertProgramEntryDatabase(new_program_list))
853                {
854                    gLog.Error.WriteLine("Failed to insert program(s)");
855                }
856                //string command = BuildGBPVRMultiInsertCommand(new_program_list);
857          }          }
858    
859          private bool RemoveAllProgramDatabaseEntries()          private bool RemoveAllProgramDatabaseEntries()
# Line 940  namespace GBPVRProgramDatabaseFixer Line 934  namespace GBPVRProgramDatabaseFixer
934              }              }
935              return result;              return result;
936          }          }
937          private bool InsertProgramDatabaseEntry(IPROGRAMME new_program)          private bool InsertProgramEntryDatabase(List<IPROGRAMME> list)
938          {          {
939              bool result = false;              bool result = false;
940              try              try
# Line 953  namespace GBPVRProgramDatabaseFixer Line 947  namespace GBPVRProgramDatabaseFixer
947                          con.Open();                          con.Open();
948                          //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);
949                          string command_text = string.Empty;                          string command_text = string.Empty;
950                          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();  
951                          //gLog.Verbose.Debug.WriteLine("Executing Command: '{0}'", command_text);                          //gLog.Verbose.Debug.WriteLine("Executing Command: '{0}'", command_text);
952                          using (SQLiteCommand cmd = new SQLiteCommand(command_text, con))                          using (SQLiteCommand cmd = new SQLiteCommand(command_text, con))
953                          {                          {                          
                             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));  
954                              int rowsupdated = cmd.ExecuteNonQuery();                              int rowsupdated = cmd.ExecuteNonQuery();
955                              //gLog.Verbose.Info.WriteLine("Updated '{0}' rows", rowsupdated);                              //gLog.Verbose.Info.WriteLine("Updated '{0}' rows", rowsupdated);
956                          }                          }
# Line 1004  namespace GBPVRProgramDatabaseFixer Line 975  namespace GBPVRProgramDatabaseFixer
975              }              }
976              return result;              return result;
977          }          }
         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);  
                         }  
978    
979                          result = true;          private string BuildGBPVRMultiInsertCommand(List<IPROGRAMME> list)
980                      }          {
981                      catch (SQLiteException ex)              StringBuilder builder = new StringBuilder();
982                      {              /*
983                          gLog.Error.WriteLine(ex.ToString());                  insert into table1 (field1,field2) values (value1,value2);
984                          result = false;                  insert into table1 (field1,field2) values (value1,value2);
985                      }                  insert into table1 (field1,field2) values (value1,value2);
986                      finally                  insert into table1 (field1,field2) values (value1,value2)
987                      {               */
988                          con.Close();              foreach (var t in list)
                     }  
                 }  
             }  
             catch (Exception ex)  
989              {              {
990                  gLog.Error.WriteLine(ex.ToString());                  builder.AppendLine(BuildGBPVRSingleInsertCommand(t));
                 result = false;  
991              }              }
992              return result;              return builder.ToString();
993            }
994    
995            private string BuildGBPVRSingleInsertCommand(IPROGRAMME program)
996            {
997                StringBuilder builder = new StringBuilder();
998                builder.AppendFormat("insert into {0} (oid,name,sub_title,description,start_time,end_time,channel_oid,unique_identifier,rating) values (", TABLES.PROGRAMME);
999                builder.AppendFormat("{0},",program.oid);
1000                builder.AppendFormat("\"{0}\",", program.name);
1001                builder.AppendFormat("\"{0}\",", program.sub_title);
1002                builder.AppendFormat("\"{0}\",", program.description);
1003                builder.AppendFormat("'{0}',", program.start_time);
1004                builder.AppendFormat("'{0}',", program.end_time);
1005                builder.AppendFormat("{0},", program.channel_oid);
1006                builder.AppendFormat("\"{0}\",", program.unique_identifier);
1007                builder.AppendFormat("\"{0}\");", program.rating);
1008                return builder.ToString();
1009          }          }
1010          
1011      }      }
1012  }  }

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

  ViewVC Help
Powered by ViewVC 1.1.22