/[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 182 by william, Sat Mar 16 18:23:11 2013 UTC revision 187 by william, Sat Mar 16 19:13:18 2013 UTC
# Line 24  namespace GBPVRProgramDatabaseFixer Line 24  namespace GBPVRProgramDatabaseFixer
24          IDateTimeRange GetProgramsDateRange(List<SQLLITE.IPROGRAMME> programs);          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);          List<IOldNewProgram> 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);
29    
30      }      }
31      public class SQLLITE : ISQLLITE      public class SQLLITE : ISQLLITE
32      {      {
# Line 53  namespace GBPVRProgramDatabaseFixer Line 56  namespace GBPVRProgramDatabaseFixer
56          }          }
57          private class CHANNEL : ICHANNEL          private class CHANNEL : ICHANNEL
58          {          {
59              public CHANNEL()              public CHANNEL()
60              {              {
61                  BaseDatabaseDefinition<CHANNEL>.CreateDefault(this);                  BaseDatabaseDefinition<CHANNEL>.CreateDefault(this);
62              }              }
63              //public RECORDING_SCHEDULE(SQLiteDataReader r, int index) { BaseDatabaseDefinition<RECORDING_SCHEDULE>.Create(this, r, index); }              //public RECORDING_SCHEDULE(SQLiteDataReader r, int index) { BaseDatabaseDefinition<RECORDING_SCHEDULE>.Create(this, r, index); }
64    
# Line 86  namespace GBPVRProgramDatabaseFixer Line 89  namespace GBPVRProgramDatabaseFixer
89              Int64 manual_channel_oid { get; }              Int64 manual_channel_oid { get; }
90              Int64 quality_level { get; }              Int64 quality_level { get; }
91              Int64 pre_pad_minutes { get; }              Int64 pre_pad_minutes { get; }
92              Int64 post_pad_minutes { get;}              Int64 post_pad_minutes { get; }
93              Int32 priority { get; }              Int32 priority { get; }
94              String conversion_profile { get; }              String conversion_profile { get; }
95          }          }
# Line 127  namespace GBPVRProgramDatabaseFixer Line 130  namespace GBPVRProgramDatabaseFixer
130                  }                  }
131              }              }
132              public static void Create(ref T instance, SQLiteDataReader r, int index)              public static void Create(ref T instance, SQLiteDataReader r, int index)
133              {                              {
134                  string field_name = r.GetName(index);                  string field_name = r.GetName(index);
135                  Type field_type = r.GetFieldType(index);                  Type field_type = r.GetFieldType(index);
136                  object field_value = r.GetValue(index);                  object field_value = r.GetValue(index);
# Line 152  namespace GBPVRProgramDatabaseFixer Line 155  namespace GBPVRProgramDatabaseFixer
155                                  {                                  {
156                                      prop.SetValue(instance, field_value, null);                                      prop.SetValue(instance, field_value, null);
157                                  }                                  }
158                                    
159                              }                              }
160                              catch (Exception ex)                              catch (Exception ex)
161                              {                              {
162                                  throw ex;                                  throw ex;
163                              }                              }
# Line 172  namespace GBPVRProgramDatabaseFixer Line 175  namespace GBPVRProgramDatabaseFixer
175    
176          private class RECORDING_SCHEDULE : IRECORDING_SCHEDULE          private class RECORDING_SCHEDULE : IRECORDING_SCHEDULE
177          {          {
178              public RECORDING_SCHEDULE()              public RECORDING_SCHEDULE()
179              {              {
180                  BaseDatabaseDefinition<RECORDING_SCHEDULE>.CreateDefault(this);                  BaseDatabaseDefinition<RECORDING_SCHEDULE>.CreateDefault(this);
181              }              }
182              //public RECORDING_SCHEDULE(SQLiteDataReader r, int index) { BaseDatabaseDefinition<RECORDING_SCHEDULE>.Create(this, r, index); }              //public RECORDING_SCHEDULE(SQLiteDataReader r, int index) { BaseDatabaseDefinition<RECORDING_SCHEDULE>.Create(this, r, index); }
183    
184              public static void Create(ref RECORDING_SCHEDULE instance, SQLiteDataReader r, int index)              public static void Create(ref RECORDING_SCHEDULE instance, SQLiteDataReader r, int index)
185              {              {
186                  BaseDatabaseDefinition<RECORDING_SCHEDULE>.Create(ref instance, r, index);                  BaseDatabaseDefinition<RECORDING_SCHEDULE>.Create(ref instance, r, index);
187              }              }
188    
189              #region IRECORDING_SCHEDULE members              #region IRECORDING_SCHEDULE members
190              public Int64 oid { get; set;}              public Int64 oid { get; set; }
191              public Int64 programme_oid { get; set;}              public Int64 programme_oid { get; set; }
192              public Int64 capture_source_oid { get; set;}              public Int64 capture_source_oid { get; set; }
193              public Int16 status { get; set; }              public Int16 status { get; set; }
194              public String filename { get; set; }              public String filename { get; set; }
195              public Int64 recording_type { get;set; }              public Int64 recording_type { get; set; }
196              public Int64 recording_group { get; set;}              public Int64 recording_group { get; set; }
197              public DateTime manual_start_time { get; set;}              public DateTime manual_start_time { get; set; }
198              public DateTime manual_end_time { get; set; }              public DateTime manual_end_time { get; set; }
199              public Int64 manual_channel_oid { get; set; }              public Int64 manual_channel_oid { get; set; }
200              public Int64 quality_level { get; set; }              public Int64 quality_level { get; set; }
# Line 203  namespace GBPVRProgramDatabaseFixer Line 206  namespace GBPVRProgramDatabaseFixer
206          }          }
207    
208          public interface IPROGRAMME : IEquatable<IPROGRAMME>          public interface IPROGRAMME : IEquatable<IPROGRAMME>
209              {          {
210              Int64 oid { get; set; }              Int64 oid { get; set; }
211              String name { get; set; }              String name { get; set; }
212              String sub_title { get; set; }              String sub_title { get; set; }
# Line 219  namespace GBPVRProgramDatabaseFixer Line 222  namespace GBPVRProgramDatabaseFixer
222          }          }
223          private class PROGRAMME : IPROGRAMME          private class PROGRAMME : IPROGRAMME
224          {          {
225              public PROGRAMME()              public PROGRAMME()
226              {              {
227                  BaseDatabaseDefinition<PROGRAMME>.CreateDefault(this);                  BaseDatabaseDefinition<PROGRAMME>.CreateDefault(this);
228              }              }
229              //public PROGRAMME(SQLiteDataReader r, int index) : base(r, index) { }              //public PROGRAMME(SQLiteDataReader r, int index) : base(r, index) { }
230              public static void Create(ref PROGRAMME instance, SQLiteDataReader r, int index)              public static void Create(ref PROGRAMME instance, SQLiteDataReader r, int index)
# Line 299  namespace GBPVRProgramDatabaseFixer Line 302  namespace GBPVRProgramDatabaseFixer
302          }          }
303    
304          //public SQLLite() { }          //public SQLLite() { }
305          protected SQLLITE(string database, EventHandler<EventArgs> OnInstanceCreated)          protected SQLLITE(string database, EventHandler<EventArgs> OnInstanceCreated)
306          {          {
307              this.OnInstanceCreated = OnInstanceCreated;              this.OnInstanceCreated = OnInstanceCreated;
308              //CreateConnection(database);              //CreateConnection(database);
# Line 319  namespace GBPVRProgramDatabaseFixer Line 322  namespace GBPVRProgramDatabaseFixer
322          [NonSerialized]          [NonSerialized]
323          private EventHandler<EventArgs> _OnInstanceCreated;          private EventHandler<EventArgs> _OnInstanceCreated;
324          private EventHandler<EventArgs> OnInstanceCreated { get { return _OnInstanceCreated; } set { _OnInstanceCreated = value; } }          private EventHandler<EventArgs> OnInstanceCreated { get { return _OnInstanceCreated; } set { _OnInstanceCreated = value; } }
325            
326          private void OnCreatedInstance(object sender, EventArgs e)          private void OnCreatedInstance(object sender, EventArgs e)
327          {          {
328              if (OnInstanceCreated != null) { OnInstanceCreated.Invoke(sender, e); }              if (OnInstanceCreated != null) { OnInstanceCreated.Invoke(sender, e); }
329          }          }
330    
331          private string Database;          private string Database;
332          #region ISQLLITE members                  #region ISQLLITE members
333          public List<IPROGRAMME> Programs { get; private set; }          public List<IPROGRAMME> Programs { get; private set; }
334          public List<IRECORDING_SCHEDULE> Recordings { get; private set; }          public List<IRECORDING_SCHEDULE> Recordings { get; private set; }
335          public List<ICHANNEL> Channels { get; private set; }          public List<ICHANNEL> Channels { get; private set; }
# Line 336  namespace GBPVRProgramDatabaseFixer Line 339  namespace GBPVRProgramDatabaseFixer
339              var list = new List<IPROGRAMME>(programs.ToArray());              var list = new List<IPROGRAMME>(programs.ToArray());
340              DateTime first = new DateTime();              DateTime first = new DateTime();
341              DateTime last = new DateTime();              DateTime last = new DateTime();
342              first = list.OrderBy(s => s.start_time).ToList().First().start_time;                          first = list.OrderBy(s => s.start_time).ToList().First().start_time;
343              last = list.OrderBy(s => s.start_time).ToList().Last().start_time;              last = list.OrderBy(s => s.start_time).ToList().Last().start_time;
344              gLog.Verbose.Debug.WriteLine("\tFirst: {0} = ({1})", first.ToString("yyyy/MM/dd HH:mm:ss.fffffff"), first.ToDateTimeString());              gLog.Verbose.Debug.WriteLine("\tFirst: {0} = ({1})", first.ToString("yyyy/MM/dd HH:mm:ss.fffffff"), first.ToDateTimeString());
345              gLog.Verbose.Debug.WriteLine("\tLast: {0} = ({1})", last.ToString("yyyy/MM/dd HH:mm:ss.fffffff"), last.ToDateTimeString());              gLog.Verbose.Debug.WriteLine("\tLast: {0} = ({1})", last.ToString("yyyy/MM/dd HH:mm:ss.fffffff"), last.ToDateTimeString());
# Line 359  namespace GBPVRProgramDatabaseFixer Line 362  namespace GBPVRProgramDatabaseFixer
362              foreach (var program in gbpvr_programs)              foreach (var program in gbpvr_programs)
363              {              {
364                  progress = 100.0 * (index / total);                  progress = 100.0 * (index / total);
365                  gLog.ReportProgress(this, new ReportProgressEventArgs((int)progress, string.Format("Filtering GBPVR Programs: {0:00}%", (int)progress)));                                  gLog.ReportProgress(this, new ReportProgressEventArgs((int)progress, string.Format("Filtering GBPVR Programs: {0:00}%", (int)progress)));
366                  // find an entry in xmltv_programs by Channel Number & StartDate                                  // find an entry in xmltv_programs by Channel Number & StartDate                
367                  var program_xmltv_entry = program.AsXMLTVProgramDefinition(this);                  var program_xmltv_entry = program.AsXMLTVProgramDefinition(this);
368                  var xmltv_entry = xmltv_programs.Find(s => s.ChannelNumber == program_xmltv_entry.ChannelNumber && s.Start == program_xmltv_entry.Start);                  var xmltv_entry = xmltv_programs.Find(s => s.ChannelNumber == program_xmltv_entry.ChannelNumber && s.Start == program_xmltv_entry.Start);
# Line 371  namespace GBPVRProgramDatabaseFixer Line 374  namespace GBPVRProgramDatabaseFixer
374                  else                  else
375                  {                  {
376                      // check if the xmltv entry has different data from the current program                      // check if the xmltv entry has different data from the current program
377                      if(!xmltv_entry.Equals(program_xmltv_entry))                      if (!xmltv_entry.Equals(program_xmltv_entry))
378                      {                      {
379                          // data is different                          // data is different
380                          var updated_program = program;                          var updated_program = program;
# Line 665  namespace GBPVRProgramDatabaseFixer Line 668  namespace GBPVRProgramDatabaseFixer
668                  List<ICHANNEL> channels = new List<ICHANNEL>();                  List<ICHANNEL> channels = new List<ICHANNEL>();
669                  using (SQLiteConnection con = CreateConnection())                  using (SQLiteConnection con = CreateConnection())
670                  {                  {
671                      con.Open();                      try
                     string command_text = string.Format("select * from {0};", TABLES.CHANNEL);  
                     gLog.Verbose.Debug.WriteLine("Executing Command: '{0}'", command_text);  
                     using (SQLiteCommand cmd = new SQLiteCommand(command_text, con))  
672                      {                      {
673                          using (SQLiteDataReader r = cmd.ExecuteReader())                          con.Open();
674                            string command_text = string.Format("select * from {0};", TABLES.CHANNEL);
675                            gLog.Verbose.Debug.WriteLine("Executing Command: '{0}'", command_text);
676                            using (SQLiteCommand cmd = new SQLiteCommand(command_text, con))
677                          {                          {
678                              if (!r.HasRows)                              using (SQLiteDataReader r = cmd.ExecuteReader())
679                              {                              {
680                                  gLog.Warn.WriteLine("Query: '{0}' returned no rows.", cmd.CommandText);                                  if (!r.HasRows)
                             }  
                             else  
                             {  
                                 while (r.Read())  
681                                  {                                  {
682                                      CHANNEL channel = new CHANNEL();                                      gLog.Warn.WriteLine("Query: '{0}' returned no rows.", cmd.CommandText);
683                                      for (int i = 0; i < r.FieldCount; i++)                                  }
684                                    else
685                                    {
686                                        while (r.Read())
687                                      {                                      {
688                                          CHANNEL.Create(ref channel, r, i);                                          CHANNEL channel = new CHANNEL();
689                                            for (int i = 0; i < r.FieldCount; i++)
690                                            {
691                                                CHANNEL.Create(ref channel, r, i);
692                                            }
693                                            channels.Add(channel);
694                                      }                                      }
                                     channels.Add(channel);  
695                                  }                                  }
696                              }                              }
697                          }                          }
698                      }                      }
699                      con.Clone();                      catch (SQLiteException ex)
700                        {
701                            gLog.Error.WriteLine(ex.ToString());
702                        }
703                        finally
704                        {
705                            con.Close();
706                        }
707                  }                  }
708                  this.Channels = channels;                  this.Channels = channels;
709              }              }
# Line 706  namespace GBPVRProgramDatabaseFixer Line 719  namespace GBPVRProgramDatabaseFixer
719                  List<IPROGRAMME> programs = new List<IPROGRAMME>();                  List<IPROGRAMME> programs = new List<IPROGRAMME>();
720                  using (SQLiteConnection con = CreateConnection())                  using (SQLiteConnection con = CreateConnection())
721                  {                  {
722                      con.Open();                      try
                     string command_text = string.Format("select * from {0};", TABLES.PROGRAMME);  
                     gLog.Verbose.Debug.WriteLine("Executing Command: '{0}'", command_text);  
                     using (SQLiteCommand cmd = new SQLiteCommand(command_text, con))  
723                      {                      {
724                          using (SQLiteDataReader r = cmd.ExecuteReader())                          con.Open();
725                            string command_text = string.Format("select * from {0};", TABLES.PROGRAMME);
726                            gLog.Verbose.Debug.WriteLine("Executing Command: '{0}'", command_text);
727                            using (SQLiteCommand cmd = new SQLiteCommand(command_text, con))
728                          {                          {
729                              if (!r.HasRows)                              using (SQLiteDataReader r = cmd.ExecuteReader())
                             {  
                                 gLog.Warn.WriteLine("Query: '{0}' returned no rows.", cmd.CommandText);  
                             }  
                             else  
730                              {                              {
731                                  while (r.Read())                                  if (!r.HasRows)
732                                  {                                  {
733                                      PROGRAMME program = new PROGRAMME();                                      gLog.Warn.WriteLine("Query: '{0}' returned no rows.", cmd.CommandText);
734                                      for (int i = 0; i < r.FieldCount; i++)                                  }
735                                    else
736                                    {
737                                        while (r.Read())
738                                      {                                      {
739                                          PROGRAMME.Create(ref program, r, i);                                          PROGRAMME program = new PROGRAMME();
740                                            for (int i = 0; i < r.FieldCount; i++)
741                                            {
742                                                PROGRAMME.Create(ref program, r, i);
743                                            }
744                                            programs.Add(program);
745                                      }                                      }
                                     programs.Add(program);  
746                                  }                                  }
747                              }                              }
748                          }                          }
749                      }                      }
750                      con.Clone();                      catch (SQLiteException ex)
751                        {
752                            gLog.Error.WriteLine(ex.ToString());
753                        }
754                        finally
755                        {
756                            con.Close();
757                        }
758                  }                  }
759                  this.Programs = programs;                  this.Programs = programs;
760              }              }
# Line 747  namespace GBPVRProgramDatabaseFixer Line 770  namespace GBPVRProgramDatabaseFixer
770                  List<IRECORDING_SCHEDULE> recordings = new List<IRECORDING_SCHEDULE>();                  List<IRECORDING_SCHEDULE> recordings = new List<IRECORDING_SCHEDULE>();
771                  using (SQLiteConnection con = CreateConnection())                  using (SQLiteConnection con = CreateConnection())
772                  {                  {
773                      con.Open();                      try
                     string command_text = string.Format("select * from {0};", TABLES.RECORDING_SCHEDULE);  
                     gLog.Verbose.Debug.WriteLine("Executing Command: '{0}'", command_text);  
                     using (SQLiteCommand cmd = new SQLiteCommand(command_text, con))  
774                      {                      {
775                          using (SQLiteDataReader r = cmd.ExecuteReader())                          con.Open();
776                            string command_text = string.Format("select * from {0};", TABLES.RECORDING_SCHEDULE);
777                            gLog.Verbose.Debug.WriteLine("Executing Command: '{0}'", command_text);
778                            using (SQLiteCommand cmd = new SQLiteCommand(command_text, con))
779                          {                          {
780                              if (!r.HasRows)                              using (SQLiteDataReader r = cmd.ExecuteReader())
781                              {                              {
782                                  gLog.Warn.WriteLine("Query: '{0}' returned no rows.", cmd.CommandText);                                  if (!r.HasRows)
                             }  
                             else  
                             {  
                                 while (r.Read())  
783                                  {                                  {
784                                      RECORDING_SCHEDULE recording = new RECORDING_SCHEDULE();                                      gLog.Warn.WriteLine("Query: '{0}' returned no rows.", cmd.CommandText);
785                                      for (int i = 0; i < r.FieldCount; i++)                                  }
786                                    else
787                                    {
788                                        while (r.Read())
789                                      {                                      {
790                                          RECORDING_SCHEDULE.Create(ref recording, r, i);                                          RECORDING_SCHEDULE recording = new RECORDING_SCHEDULE();
791                                            for (int i = 0; i < r.FieldCount; i++)
792                                            {
793                                                RECORDING_SCHEDULE.Create(ref recording, r, i);
794                                            }
795                                            recordings.Add(recording);
796                                      }                                      }
                                     recordings.Add(recording);  
797                                  }                                  }
798                              }                              }
799                          }                          }
800                      }                      }
801                      con.Clone();                      catch (SQLiteException ex)
802                        {
803                            gLog.Error.WriteLine(ex.ToString());
804                        }
805                        finally
806                        {
807                            con.Close();
808                        }
809                  }                  }
810                  this.Recordings = recordings;                  this.Recordings = recordings;
811              }              }
# Line 782  namespace GBPVRProgramDatabaseFixer Line 815  namespace GBPVRProgramDatabaseFixer
815              }              }
816          }          }
817    
818            public void RemoveOldGBPVRPrograms(List<SQLLITE.IPROGRAMME> programs)
   
         private bool RemoveProgramDatabaseEntry(IPROGRAMME old_program)  
819          {          {
820              bool result = false;              gLog.Info.WriteLine("Removing all gbpvr programs.");
821              //try              //double total = programs.Count;
822              //{                              //double index = 0;
823              //    using (SQLiteConnection con = CreateConnection())              //double progress = 0;
824                //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              //        try              //        gLog.Error.WriteLine("Failed to remove program with oid: {0}", program.oid);
             //        {  
             //            gLog.Verbose.Info.WriteLine("Removing old program with oid: '{0}'", old_program.oid);  
             //            con.Open();  
             //            string command_text = string.Format(@"DELETE FROM [{0}] WHERE [oid] = @oid;", TABLES.PROGRAMME);  
             //            gLog.Verbose.Debug.WriteLine("Executing Command: '{0}'", command_text);  
             //            using (SQLiteCommand cmd = new SQLiteCommand(command_text, con))  
             //            {  
             //                cmd.Parameters.Add(new SQLiteParameter("oid", old_program.oid));  
             //                int rowsupdated = cmd.ExecuteNonQuery();  
             //                gLog.Verbose.Info.WriteLine("Updated '{0}' rows", rowsupdated);  
             //            }  
             //            con.Clone();  
             //            result = true;  
             //        }  
             //        catch (SQLiteException ex)  
             //        {  
             //            gLog.Error.WriteLine(ex.ToString());  
             //            result = false;  
             //        }  
831              //    }              //    }
832                //    index++;
833              //}              //}
834              //catch (Exception ex)                if (!RemoveAllProgramDatabaseEntries())
835              //{                {
836              //    gLog.Error.WriteLine(ex.ToString());                    gLog.Error.WriteLine("Failed to remove one or more program entries");
837              //    result = false;                }
838              //}          }
839            public void UpdateGBPVRPrograms(List<IOldNewProgram> programs)
840            {
841                gLog.Info.WriteLine("Inserting {0} gbpvr programs.", programs.Count);
842                double total = programs.Count;
843                double index = 0;
844                double progress = 0;
845                foreach (var program in programs)
846                {
847                    progress = 100.0 * (index / total);
848                    gLog.ReportProgress(this, new ReportProgressEventArgs((int)progress, string.Format("Updating/Inserting GBPVR Programs: {0:00}%", (int)progress)));
849                    if (program.NewProgram.Equals(program.OldProgram))
850                    {
851                        // program does not need to be updated
852                        continue;
853                    }
854                    else
855                    {
856                        if (!InsertProgramDatabaseEntry(program.NewProgram))
857                        {
858                            gLog.Error.WriteLine("Failed to insert program with oid: {0}", program.NewProgram.oid);
859                        }
860                    }
861                    index++;
862                }
863            }
864    
865            private bool RemoveAllProgramDatabaseEntries()
866            {
867                bool result = false;
868                try
869                {
870                    using (SQLiteConnection con = CreateConnection())
871                    {
872                        try
873                        {
874                            //gLog.Verbose.Info.WriteLine("Removing old program with oid: '{0}'", old_program.oid);
875                            con.Open();
876                            string command_text = string.Format(@"DELETE FROM [{0}];", TABLES.PROGRAMME);
877                            //gLog.Verbose.Debug.WriteLine("Executing Command: '{0}'", command_text);
878                            using (SQLiteCommand cmd = new SQLiteCommand(command_text, con))
879                            {
880                                //cmd.Parameters.Add(new SQLiteParameter("oid", old_program.oid));
881                                int rowsupdated = cmd.ExecuteNonQuery();
882                                //gLog.Verbose.Info.WriteLine("Updated '{0}' rows", rowsupdated);
883                            }
884                            result = true;
885                        }
886                        catch (SQLiteException ex)
887                        {
888                            gLog.Error.WriteLine(ex.ToString());
889                            result = false;
890                        }
891                        finally
892                        {
893                            con.Close();
894                        }
895                    }
896                }
897                catch (Exception ex)
898                {
899                    gLog.Error.WriteLine(ex.ToString());
900                    result = false;
901                }
902              return result;              return result;
903          }          }
904          private bool UpdateProgramDatabaseEntry(IPROGRAMME old_program, IPROGRAMME new_program)          private bool RemoveProgramDatabaseEntry(IPROGRAMME old_program)
905          {          {
906              bool result = false;              bool result = false;
907              //try              try
908              //{              {
909              //    using (SQLiteConnection con = CreateConnection())                  using (SQLiteConnection con = CreateConnection())
910              //    {                  {
911              //        try                      try
912              //        {                      {
913              //            gLog.Verbose.Info.WriteLine("Updating old program with oid: '{0}'", old_program.oid);                          //gLog.Verbose.Info.WriteLine("Removing old program with oid: '{0}'", old_program.oid);
914              //            con.Open();                          con.Open();
915              //            //string command_text = string.Format(@"UPDATE [{0}] SET [name]=@name,[sub_title]=@subtitle, WHERE [OID] = @oid", TABLES.PROGRAMME);                          string command_text = string.Format(@"DELETE FROM [{0}] WHERE [oid] = @oid;", TABLES.PROGRAMME);
916              //            string command_text = string.Empty;                          //gLog.Verbose.Debug.WriteLine("Executing Command: '{0}'", command_text);
917              //            StringBuilder builder = new StringBuilder();                          using (SQLiteCommand cmd = new SQLiteCommand(command_text, con))
918              //            builder.AppendLine(string.Format("UPDATE [{0}]", TABLES.PROGRAMME));                          {
919              //            builder.Append("SET ");                              cmd.Parameters.Add(new SQLiteParameter("oid", old_program.oid));
920              //            builder.AppendFormat("[name]=@name,");                              int rowsupdated = cmd.ExecuteNonQuery();
921              //            builder.AppendFormat("[sub_title]=@sub_title,");                              //gLog.Verbose.Info.WriteLine("Updated '{0}' rows", rowsupdated);
922              //            builder.AppendFormat("[description]=@description,");                          }
923              //            builder.AppendFormat("[start_time]=@start_time,");                          result = true;
924              //            builder.AppendFormat("[end_time]=@end_time,");                      }
925              //            builder.AppendFormat("[channel_oid]=@channel_oid,");                      catch (SQLiteException ex)
926              //            builder.AppendFormat("[unique_identifier]=@unique_identifier,");                      {
927              //            builder.AppendFormat("[rating]=@rating");                          gLog.Error.WriteLine(ex.ToString());
928              //            builder.AppendLine(" WHERE [oid] = @oid");                          result = false;
929              //            command_text = builder.ToString();                      }
930              //            gLog.Verbose.Debug.WriteLine("Executing Command: '{0}'", command_text);                      finally
931              //            using (SQLiteCommand cmd = new SQLiteCommand(command_text, con))                      {
932              //            {                          con.Close();
933              //                cmd.Parameters.Add(new SQLiteParameter("oid", old_program.oid));                      }
934              //                cmd.Parameters.Add(new SQLiteParameter("name", new_program.name));                  }
935              //                cmd.Parameters.Add(new SQLiteParameter("sub_title", new_program.sub_title));              }
936              //                cmd.Parameters.Add(new SQLiteParameter("description", new_program.description));              catch (Exception ex)
937              //                cmd.Parameters.Add(new SQLiteParameter("start_time", new_program.start_time));              {
938              //                cmd.Parameters.Add(new SQLiteParameter("end_time", new_program.end_time));                  gLog.Error.WriteLine(ex.ToString());
939              //                cmd.Parameters.Add(new SQLiteParameter("channel_oid", new_program.channel_oid));                  result = false;
940              //                cmd.Parameters.Add(new SQLiteParameter("unique_identifier", new_program.unique_identifier));              }
941              //                cmd.Parameters.Add(new SQLiteParameter("rating", new_program.rating));              return result;
942              //                int rowsupdated = cmd.ExecuteNonQuery();          }
943              //                gLog.Verbose.Info.WriteLine("Updated '{0}' rows", rowsupdated);          private bool InsertProgramDatabaseEntry(IPROGRAMME new_program)
944              //            }          {
945              //            con.Clone();              bool result = false;
946              //            result = true;              try
947              //        }              {
948              //        catch (SQLiteException ex)                  using (SQLiteConnection con = CreateConnection())
949              //        {                  {
950              //            gLog.Error.WriteLine(ex.ToString());                      try
951              //            result = false;                      {
952              //        }                          //gLog.Verbose.Info.WriteLine("Updating old program with oid: '{0}'", new_program.oid);
953              //    }                          con.Open();
954              //}                          //string command_text = string.Format(@"UPDATE [{0}] SET [name]=@name,[sub_title]=@subtitle, WHERE [OID] = @oid", TABLES.PROGRAMME);
955              //catch (Exception ex)                          string command_text = string.Empty;
956              //{                          StringBuilder builder = new StringBuilder();
957              //    gLog.Error.WriteLine(ex.ToString());                          builder.AppendLine(string.Format("INSERT INTO [{0}]", TABLES.PROGRAMME));
958              //    result = false;                          builder.Append("VALUES (");
959              //}                          builder.AppendFormat("[oid]=@oid,");
960                            builder.AppendFormat("[name]=@name,");
961                            builder.AppendFormat("[sub_title]=@sub_title,");
962                            builder.AppendFormat("[description]=@description,");
963                            builder.AppendFormat("[start_time]=@start_time,");
964                            builder.AppendFormat("[end_time]=@end_time,");
965                            builder.AppendFormat("[channel_oid]=@channel_oid,");
966                            builder.AppendFormat("[unique_identifier]=@unique_identifier,");
967                            builder.AppendFormat("[rating]=@rating");
968                            //builder.AppendLine(" WHERE [oid] = @oid");
969                            builder.AppendFormat(");");
970                            command_text = builder.ToString();
971                            //gLog.Verbose.Debug.WriteLine("Executing Command: '{0}'", command_text);
972                            using (SQLiteCommand cmd = new SQLiteCommand(command_text, con))
973                            {
974                                cmd.Parameters.Add(new SQLiteParameter("oid", new_program.oid));
975                                cmd.Parameters.Add(new SQLiteParameter("name", new_program.name));
976                                cmd.Parameters.Add(new SQLiteParameter("sub_title", new_program.sub_title));
977                                cmd.Parameters.Add(new SQLiteParameter("description", new_program.description));
978                                cmd.Parameters.Add(new SQLiteParameter("start_time", new_program.start_time));
979                                cmd.Parameters.Add(new SQLiteParameter("end_time", new_program.end_time));
980                                cmd.Parameters.Add(new SQLiteParameter("channel_oid", new_program.channel_oid));
981                                cmd.Parameters.Add(new SQLiteParameter("unique_identifier", new_program.unique_identifier));
982                                cmd.Parameters.Add(new SQLiteParameter("rating", new_program.rating));
983                                int rowsupdated = cmd.ExecuteNonQuery();
984                                //gLog.Verbose.Info.WriteLine("Updated '{0}' rows", rowsupdated);
985                            }
986    
987                            result = true;
988                        }
989                        catch (SQLiteException ex)
990                        {
991                            gLog.Error.WriteLine(ex.ToString());
992                            result = false;
993                        }
994                        finally
995                        {
996                            con.Close();
997                        }
998                    }
999                }
1000                catch (Exception ex)
1001                {
1002                    gLog.Error.WriteLine(ex.ToString());
1003                    result = false;
1004                }
1005                return result;
1006            }
1007            private bool UpdateProgramDatabaseEntry(IPROGRAMME new_program)
1008            {
1009                bool result = false;
1010                try
1011                {
1012                    using (SQLiteConnection con = CreateConnection())
1013                    {
1014                        try
1015                        {
1016                            //gLog.Verbose.Info.WriteLine("Updating old program with oid: '{0}'", new_program.oid);
1017                            con.Open();
1018                            //string command_text = string.Format(@"UPDATE [{0}] SET [name]=@name,[sub_title]=@subtitle, WHERE [OID] = @oid", TABLES.PROGRAMME);
1019                            string command_text = string.Empty;
1020                            StringBuilder builder = new StringBuilder();
1021                            builder.AppendLine(string.Format("UPDATE [{0}]", TABLES.PROGRAMME));
1022                            builder.Append("SET ");
1023                            builder.AppendFormat("[name]=@name,");
1024                            builder.AppendFormat("[sub_title]=@sub_title,");
1025                            builder.AppendFormat("[description]=@description,");
1026                            builder.AppendFormat("[start_time]=@start_time,");
1027                            builder.AppendFormat("[end_time]=@end_time,");
1028                            builder.AppendFormat("[channel_oid]=@channel_oid,");
1029                            builder.AppendFormat("[unique_identifier]=@unique_identifier,");
1030                            builder.AppendFormat("[rating]=@rating");
1031                            builder.AppendLine(" WHERE [oid] = @oid;");
1032                            command_text = builder.ToString();
1033                            //gLog.Verbose.Debug.WriteLine("Executing Command: '{0}'", command_text);
1034                            using (SQLiteCommand cmd = new SQLiteCommand(command_text, con))
1035                            {
1036                                cmd.Parameters.Add(new SQLiteParameter("oid", new_program.oid));
1037                                cmd.Parameters.Add(new SQLiteParameter("name", new_program.name));
1038                                cmd.Parameters.Add(new SQLiteParameter("sub_title", new_program.sub_title));
1039                                cmd.Parameters.Add(new SQLiteParameter("description", new_program.description));
1040                                cmd.Parameters.Add(new SQLiteParameter("start_time", new_program.start_time));
1041                                cmd.Parameters.Add(new SQLiteParameter("end_time", new_program.end_time));
1042                                cmd.Parameters.Add(new SQLiteParameter("channel_oid", new_program.channel_oid));
1043                                cmd.Parameters.Add(new SQLiteParameter("unique_identifier", new_program.unique_identifier));
1044                                cmd.Parameters.Add(new SQLiteParameter("rating", new_program.rating));
1045                                int rowsupdated = cmd.ExecuteNonQuery();
1046                                //gLog.Verbose.Info.WriteLine("Updated '{0}' rows", rowsupdated);
1047                            }
1048    
1049                            result = true;
1050                        }
1051                        catch (SQLiteException ex)
1052                        {
1053                            gLog.Error.WriteLine(ex.ToString());
1054                            result = false;
1055                        }
1056                        finally
1057                        {
1058                            con.Close();
1059                        }
1060                    }
1061                }
1062                catch (Exception ex)
1063                {
1064                    gLog.Error.WriteLine(ex.ToString());
1065                    result = false;
1066                }
1067              return result;              return result;
1068          }          }
1069      }      }

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

  ViewVC Help
Powered by ViewVC 1.1.22