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

Annotation of /trunk/libxmltv/Core/XMLTVChannelCollection.cs

Parent Directory Parent Directory | Revision Log Revision Log


Revision 54 - (hide annotations) (download)
Fri Mar 8 08:51:10 2013 UTC (8 years, 2 months ago) by william
File size: 3745 byte(s)

1 william 26 using System;
2     using System.Collections.Generic;
3     using System.Linq;
4     using System.Text;
5     using libxmltv.Interfaces;
6     using System.Diagnostics;
7     using System.Xml.Linq;
8 william 43 using System.Windows.Forms;
9 william 26
10     namespace libxmltv.Core
11     {
12 william 44 internal class XMLTVChannelCollection : IDisposable
13 william 26 {
14     private Dictionary<string, IXMLTVChannel> entries = new Dictionary<string, IXMLTVChannel>();
15 william 44 internal static void CreateInstance(XMLTVRuntimeInstance xmltv)
16     {
17 william 48 using (XMLTVChannelCollection g = new XMLTVChannelCollection(xmltv))
18     {
19     g.instance.Channels = g.Collection;
20     xmltv_logger.Log.Info.WriteLine(g.ToString());
21     }
22 william 44 }
23 william 36 private XMLTVRuntimeInstance instance;
24     public XMLTVChannelCollection(XMLTVRuntimeInstance xmltv)
25 william 26 {
26 william 46 xmltv_logger.Log.Verbose.Debug.WriteLine("Creating Instance of XMLTVChannelCollection");
27 william 36 //IXMLTV_PARSER _xmltv;
28     //if (!Internals.VerifyInstance<IXMLTV_PARSER>(xmltv, out _xmltv)) { return; }
29     //XMLTV_PARSER = _xmltv;
30     instance = xmltv;
31 william 26 Create();
32     }
33    
34     #region IXMLTVSource
35 william 36 //private IXMLTV_PARSER XMLTV_PARSER { get; set; }
36 william 26 public Dictionary<string, IXMLTVChannel> Collection
37     {
38     get { return entries; }
39     }
40     #endregion
41    
42     private void Create()
43     {
44 william 49 var doc = XDocument.Parse(instance.XmlDoc);
45 william 26
46 william 36 foreach (var c in doc.Descendants(XMLTVConstants.CHANNEL_ELEMENT))
47 william 26 {
48 william 46 if (instance.IsAborting)
49 william 45 {
50 william 54 xmltv_logger.Log.Verbose.Debug.WriteLine("Detected Instance abort event...");
51 william 45 break;
52     }
53 william 26 Channel channel = new Channel(c);
54 william 28 entries.Add(channel.Id, channel);
55 william 43 Application.DoEvents();
56 william 26 }
57 william 44 //instance.Channels = Collection;
58 william 26 }
59     public override string ToString()
60     {
61 william 48 return string.Format("Total Channels Parsed: {0}", Collection == null ? 0 : Collection.Count);
62 william 26 }
63 william 44
64     public void Dispose()
65     {
66     //throw new NotImplementedException();
67     }
68 william 26 }
69 william 31 [Serializable]
70 william 27 internal class Channel : IXMLTVChannel
71 william 26 {
72     public Channel()
73     {
74 william 28 Id = string.Empty;
75     Number = 0;
76     CallSign = string.Empty;
77     Name = string.Empty;
78 william 26 }
79 william 27 public Channel(XElement e)
80     : this()
81 william 26 {
82     // get the channel id
83 william 36 Id = e.Attribute(XMLTVConstants.Channels.ChannelId).Value;
84 william 46 xmltv_logger.Log.Verbose.Debug.WriteLine("\tchannel_id: {0}", Id);
85 william 36 var names = e.Descendants(XMLTVConstants.Channels.ChannelDisplayName).ToList();
86 william 28 Number = Convert.ToInt32(names[1].Value);
87 william 46 xmltv_logger.Log.Verbose.Debug.WriteLine("\tchannel_number: {0}", Number);
88 william 28 CallSign = names[2].Value;
89 william 46 xmltv_logger.Log.Verbose.Debug.WriteLine("\tchannel_callsign: {0}", CallSign);
90 william 28 Name = names[3].Value;
91 william 46 xmltv_logger.Log.Verbose.Debug.WriteLine("\tchannel_name: {0}", Name);
92 william 26 }
93     #region IXMLTVChannel members
94 william 28 public string Id { get; private set; }
95     public int Number { get; private set; }
96     public string CallSign { get; private set; }
97     public string Name { get; private set; }
98 william 26 #endregion
99 william 28 public override string ToString()
100     {
101     return string.Format("{0}: {1} {2} ({3})", Id,Number,Name, CallSign);
102     }
103 william 26 }
104     }
105    

  ViewVC Help
Powered by ViewVC 1.1.22