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

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

Parent Directory Parent Directory | Revision Log Revision Log


Revision 59 - (hide annotations) (download)
Fri Mar 8 13:40:32 2013 UTC (7 years, 7 months ago) by william
File size: 2952 byte(s)

1 william 25 using System;
2     using System.Collections.Generic;
3     using System.Linq;
4     using System.Text;
5     using libxmltv.Interfaces;
6     using System.Diagnostics;
7 william 49 using System.Xml.Linq;
8 william 25
9     namespace libxmltv.Core
10     {
11 william 31 [Serializable]
12 william 44 internal class XMLTVSource : IXMLTVSource, IDisposable, ICloneable
13 william 25 {
14     private Dictionary<string, string> entries = new Dictionary<string, string>();
15 william 44 internal static void CreateInstance(XMLTVRuntimeInstance xmltv)
16     {
17     using (XMLTVSource g = new XMLTVSource(xmltv)) { g.instance.Source = (IXMLTVSource)g.Clone(); }
18     }
19    
20 william 36 private XMLTVRuntimeInstance instance;
21 william 44 protected XMLTVSource(string sourcename, string generatorname, string generatorurl)
22 william 25 {
23 william 57 this.SourceName = sourcename;
24     this.GeneratorName = generatorname;
25     this.GeneratorUrl = generatorurl;
26 william 44 }
27     protected XMLTVSource(XMLTVRuntimeInstance xmltv)
28     {
29 william 59 xmltv_logger.Info.WriteLine("Creating Instance of XMLTVSource");
30 william 36 //IXMLTV_PARSER _xmltv;
31     //if (!Internals.VerifyInstance<IXMLTV_PARSER>(xmltv, out _xmltv)) { return; }
32     //XMLTV_PARSER = _xmltv;
33     instance = xmltv;
34 william 25 Create();
35     }
36    
37     #region IXMLTVSource
38 william 36 //private IXMLTV_PARSER XMLTV_PARSER { get; set; }
39 william 44 public string SourceName { get; private set; }
40     public string GeneratorName { get; private set; }
41     public string GeneratorUrl { get; private set; }
42 william 25 #endregion
43    
44     private void Create()
45     {
46 william 49 var doc = XDocument.Parse(instance.XmlDoc);
47 william 36 Debug.Assert(doc.Root.Name == XMLTVConstants.ROOT_ELEMENT, string.Format("Expected Root Element: '{0}' but read: '{1}'", XMLTVConstants.ROOT_ELEMENT, doc.Root.Name));
48 william 55 //xmltv_logger.Verbose.Debug.WriteLine("\tRoot: {0}", doc.Root.Name);
49 william 25 var attributes = doc.Root.Attributes().ToList();
50     foreach (var attribute in attributes)
51     {
52 william 59 xmltv_logger.Verbose.Debug.WriteLine("\t{0}: {1}", attribute.Name, attribute.Value);
53 william 25 entries.Add(attribute.Name.ToString(), attribute.Value);
54     }
55 william 44
56     SourceName = entries[XMLTVConstants.Source.SourceName];
57     GeneratorName = entries[XMLTVConstants.Source.GeneratorName];
58     GeneratorUrl = entries[XMLTVConstants.Source.GeneratorUrl];
59    
60 william 25 }
61     public override string ToString()
62     {
63     return string.Format("XmlTv Source: '{0}' (Generated by: '{1}') (support: '{2}')", SourceName, GeneratorName, GeneratorUrl);
64     }
65 william 44
66     public void Dispose()
67     {
68     //throw new NotImplementedException();
69     }
70    
71     public object Clone()
72     {
73     return new XMLTVSource(this.SourceName, this.GeneratorName, this.GeneratorUrl);
74     }
75 william 25 }
76     }

  ViewVC Help
Powered by ViewVC 1.1.22