using System; using System.Collections.Generic; using System.Linq; using System.Text; using libxmltv.Interfaces; using System.Diagnostics; namespace libxmltv.Core { [Serializable] internal class XMLTVSource : IXMLTVSource { private Dictionary entries = new Dictionary(); private XMLTVRuntimeInstance instance; public XMLTVSource(XMLTVRuntimeInstance xmltv) { XMLTV_LOGGER.Log.Verbose.Debug.WriteLine("Creating Instance of XMLTVSource"); //IXMLTV_PARSER _xmltv; //if (!Internals.VerifyInstance(xmltv, out _xmltv)) { return; } //XMLTV_PARSER = _xmltv; instance = xmltv; Create(); } #region IXMLTVSource //private IXMLTV_PARSER XMLTV_PARSER { get; set; } public string SourceName { get { return entries[XMLTVConstants.Source.SourceName]; } } public string GeneratorName { get { return entries[XMLTVConstants.Source.GeneratorName]; } } public string GeneratorUrl { get { return entries[XMLTVConstants.Source.GeneratorUrl]; } } #endregion private void Create() { var doc = instance.XmlDoc; Debug.Assert(doc.Root.Name == XMLTVConstants.ROOT_ELEMENT, string.Format("Expected Root Element: '{0}' but read: '{1}'", XMLTVConstants.ROOT_ELEMENT, doc.Root.Name)); //XMLTV_LOGGER.Log.Verbose.Debug.WriteLine("\tRoot: {0}", doc.Root.Name); var attributes = doc.Root.Attributes().ToList(); foreach (var attribute in attributes) { //XMLTV_LOGGER.Log.Verbose.Debug.WriteLine("\t{0}: {1}", attribute.Name, attribute.Value); entries.Add(attribute.Name.ToString(), attribute.Value); } } public override string ToString() { return string.Format("XmlTv Source: '{0}' (Generated by: '{1}') (support: '{2}')", SourceName, GeneratorName, GeneratorUrl); } } }