/[xmltv_parser]/trunk/libxmltv/Core/XMLTVProgramCollection.cs
ViewVC logotype

Diff of /trunk/libxmltv/Core/XMLTVProgramCollection.cs

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

revision 27 by william, Thu Mar 7 12:11:41 2013 UTC revision 36 by william, Fri Mar 8 02:13:59 2013 UTC
# Line 4  using System.Linq; Line 4  using System.Linq;
4  using System.Text;  using System.Text;
5  using libxmltv.Interfaces;  using libxmltv.Interfaces;
6  using System.Xml.Linq;  using System.Xml.Linq;
7    using System.Globalization;
8    
9  namespace libxmltv.Core  namespace libxmltv.Core
10  {  {
11      internal class XMLTVProgramCollection      internal class XMLTVProgramCollection
12      {      {
13          private Dictionary<int, IXMLTVProgram> entries = new Dictionary<int, IXMLTVProgram>();          private Dictionary<int, IXMLTVProgram> entries = new Dictionary<int, IXMLTVProgram>();
14          public XMLTVProgramCollection(object xmltv)          private XMLTVRuntimeInstance instance;
15            public XMLTVProgramCollection(XMLTVRuntimeInstance xmltv)
16          {          {
17              XMLTV_LOGGER.Log.Verbose.Debug.WriteLine("Creating Instance of XMLTVChannelCollection");              XMLTV_LOGGER.Log.Verbose.Debug.WriteLine("Creating Instance of XMLTVProgramCollection");
18              IXMLTV_PARSER _xmltv;              //IXMLTV_PARSER _xmltv;
19              if (!Internals.VerifyInstance<IXMLTV_PARSER>(xmltv, out _xmltv)) { return; }              //if (!Internals.VerifyInstance<IXMLTV_PARSER>(xmltv, out _xmltv)) { return; }
20              XMLTV_PARSER = _xmltv;              //XMLTV_PARSER = _xmltv;
21                instance = xmltv;
22              Create();              Create();
23          }          }
24    
25          #region IXMLTVSource          #region IXMLTVSource
26          private IXMLTV_PARSER XMLTV_PARSER { get; set; }          //private IXMLTV_PARSER XMLTV_PARSER { get; set; }
27          public Dictionary<int, IXMLTVProgram> Collection          public Dictionary<int, IXMLTVProgram> Collection
28          {          {
29              get { return entries; }              get { return entries; }
30          }          }
31          #endregion          #endregion
32    
33            //
34            private DateTime ParseDate(string timeStamp)
35            {
36                DateTime dt = new DateTime();
37                try
38                {
39                    dt = DateTime.ParseExact(timeStamp, "yyyyMMddHHmmss zzzz", System.Globalization.CultureInfo.CurrentCulture);
40                }
41                catch (Exception ex) { throw ex; }
42                return dt;
43            }
44          private void Create()          private void Create()
45          {          {
46              var doc = XMLTV_PARSER.XMLTV_LOADER.XmlDoc;              var doc = instance.XmlDoc;
47              int index = 0;              int index = 0;
48              foreach (var c in doc.Descendants(XMLTV_CONSTANTS.PROGRAM_ELEMENT))              foreach (var c in doc.Descendants(XMLTVConstants.PROGRAM_ELEMENT))
49              {              {
50                  Program program = new Program(c, index);                  Program program = new Program();
51                  entries.Add(program.ProgramId, program);  
52                    program.Id = index;
53                    //XMLTV_LOGGER.Log.Verbose.Debug.WriteLine("program_Id: {0}", program.Id);
54                    if (c.HasAttributes)
55                    {
56                        var start = c.Attribute(XMLTVConstants.Programs.ProgramStart).Value;
57                        program.Start = ParseDate(start);
58                        //XMLTV_LOGGER.Log.Verbose.Debug.WriteLine("\tprogram_start: {0}", start);
59                        var stop = c.Attribute(XMLTVConstants.Programs.ProgramStop).Value;
60                        program.Stop = ParseDate(stop);
61                        //XMLTV_LOGGER.Log.Verbose.Debug.WriteLine("\tprogram_stop: {0}", stop);
62                        var channelid = c.Attribute(XMLTVConstants.Programs.ProgramChannelId).Value;
63                        //XMLTV_LOGGER.Log.Verbose.Debug.WriteLine("\tprogram_channelid: {0}", channelid);
64                        IXMLTVChannel channel = new Channel();
65                        try
66                        {
67                            channel = instance.Channels[channelid];
68                        }
69                        catch (KeyNotFoundException)
70                        {
71                            XMLTV_LOGGER.Log.Verbose.Error.WriteLine(string.Format("Unable to find Channel by id: '{0}' for this program.", channelid));
72                        }
73                        program.Channel = channel;
74                        //XMLTV_LOGGER.Log.Verbose.Debug.WriteLine("\tprogram_channel: {0}", program.Channel.ToString());
75                    }
76                    try
77                    {
78                        var title = c.Descendants(XMLTVConstants.Programs.ProgramTitle).FirstOrDefault().Value;
79                        program.Title = title;                    
80                    }
81                    catch (Exception) { program.Title = string.Empty; }
82                    //XMLTV_LOGGER.Log.Verbose.Debug.WriteLine("\tprogram_title: {0}", program.Title == string.Empty ? "empty" : program.Title);
83                    try
84                    {
85                        var subtitle = c.Descendants(XMLTVConstants.Programs.ProgramSubTitle).FirstOrDefault().Value;
86                        program.SubTitle = subtitle;                    
87                    }
88                    catch (Exception) { program.SubTitle = string.Empty; }
89                    //XMLTV_LOGGER.Log.Verbose.Debug.WriteLine("\tprogram_subtitle: {0}", program.SubTitle == string.Empty ? "empty" : program.SubTitle);
90                    try
91                    {
92                        var description = c.Descendants(XMLTVConstants.Programs.ProgramDescription).FirstOrDefault().Value;
93                        program.Description = description;                    
94                    }
95                    catch (Exception) { program.Description = string.Empty; }
96                    //XMLTV_LOGGER.Log.Verbose.Debug.WriteLine("\tprogram_description: {0}", program.Description == string.Empty ? "empty" : program.Description);
97    
98                    entries.Add(program.Id, program);
99                  index++;                  index++;
100              }              }
101          }          }
# Line 44  namespace libxmltv.Core Line 105  namespace libxmltv.Core
105              return string.Empty;              return string.Empty;
106          }          }
107      }      }
108        [Serializable]
109      internal class Program : IXMLTVProgram      internal class Program : IXMLTVProgram
110      {      {
111          public Program()          public Program()
112          {          {
113              ProgramId = 0;              Id = 0;
114          }              Start = new DateTime();
115          public Program(XElement e, int index)              Stop = new DateTime();
116              : this()              Channel = new Channel();
117          {              Title = string.Empty;
118              //ProgramId = e.Attribute(XMLTV_CONSTANTS.Programs.ChannelStart).Value;              SubTitle = string.Empty;
119              ProgramId = index;              Description = string.Empty;
120          }          }
121          #region IXMLTVProgram members          #region IXMLTVProgram members
122          public int ProgramId { get; private set; }          public int Id { get; set; }
123            public DateTime Start { get; set; }
124            public DateTime Stop { get; set; }
125            public IXMLTVChannel Channel { get; set; }
126            public string Title { get; set; }
127            public string SubTitle { get; set; }
128            public string Description { get; set; }
129          #endregion          #endregion
130            public override string ToString()
131            {
132                return string.Format("{0}: {1} - {2} ({3}) ['{4}' <==> '{5}']", Id, Title, SubTitle, Channel.ToString(), Start.ToString("yyyy/MM/dd hh:mm tt"), Stop.ToString("yyyy/MM/dd hh:mm tt"));
133            }
134      }      }
135  }  }

Legend:
Removed from v.27  
changed lines
  Added in v.36

  ViewVC Help
Powered by ViewVC 1.1.22