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

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

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

trunk/libxmltv/Core/XMLTV_LOADER.cs revision 21 by william, Thu Mar 7 10:04:58 2013 UTC trunk/libxmltv/Core/XMLTVLoader.cs revision 81 by william, Sat Mar 9 12:23:27 2013 UTC
# Line 6  using libxmltv.Interfaces; Line 6  using libxmltv.Interfaces;
6  using System.IO;  using System.IO;
7  using Enterprise.Logging;  using Enterprise.Logging;
8  using System.Xml.Linq;  using System.Xml.Linq;
9    using System.Xml;
10    
11  namespace libxmltv.Core  namespace libxmltv.Core
12  {  {
13      /// <summary>      internal class XMLTVLoader : XMLTVBase<XMLTVRuntimeInstance>, IDisposable
     /// Main class: Creates the XMLTV Loader  
     /// </summary>  
     public static class XMLTV  
14      {      {
15          public static object CreateLoader(string xml_file)          //private string xmlfile = string.Empty;
16            public XMLTVLoader(string xml_file) : base(null, xml_file) { }
17            protected XMLTVLoader(string xml_file, XMLTVRuntimeInstance instance)
18                : base(instance, xml_file)
19          {          {
20              XMLTV_LOGGER.Initialize();              xmltv_logger.Debug.WriteLine("Creating Instance of XMLTVLoader");
21              XMLTV_LOADER loader = new XMLTV_LOADER(xml_file);             var fi = new FileInfo(xml_file);
22              return loader;             this.GetInstance().XmlFile_FullName = fi.FullName;
23          }             this.GetInstance().XmlFile_Name = fi.Name;
24          public static void Test(object xmltv)              LoadXml();
25          {              xmltv_logger.Debug.WriteLine("Created Instance of XMLTVLoader");
             if (!VerifyInstance<XMLTV_LOADER>(xmltv)) { return; }  
26          }          }
27    
28            private void LoadXml()
         private static bool VerifyInstance<T>(object xmltv) where T : class  
29          {          {
30                xmltv_logger.Info.WriteLine("Loading XMLTV File: {0}", this.GetInstance().XmlFile_Name);
31                //xmltv_logger.Warn.WriteLine("XML File Loading has not been implemented yet!");
32              try              try
33              {              {
34                  if (xmltv == null) { return false; }                  var document = XDocument.Load(this.GetInstance().XmlFile_FullName);
35                  T t = (xmltv as T);                  using (var ms = new MemoryStream())
36                  if (t == null) { throw new InvalidCastException(string.Format("Unable to cast type: {0} to {1}", xmltv.GetType().Name, typeof(T).Name)); }                  using (var xw = new XmlTextWriter(ms, Encoding.UTF8))
37                  else { return true; }                  {
38                        document.Save(xw);
39                        xw.Flush();
40                        StreamReader sr = new StreamReader(ms);
41                        ms.Seek(0, SeekOrigin.Begin);
42                        this.GetInstance().XmlDoc = sr.ReadToEnd();
43                    }
44                    document = null;
45              }              }
46              catch (Exception ex)              catch (Exception ex)
47              {              {
48                  throw new InvalidCastException(string.Format("Unable to cast type: {0} to {1}", xmltv.GetType().Name, typeof(T).Name), ex);                  xmltv_logger.Error.WriteLine("Failed to load XMLTV File: {0}", this.GetInstance().XmlFile_Name);
49                    xmltv_logger.Error.WriteLine(ex.GetBaseException().ToString());
50              }              }
51          }          }
     }  
52    
53      internal class XMLTV_LOADER : IXMLTV_LOADER          public void Dispose()
     {  
         private string xmlfile = string.Empty;  
         public XMLTV_LOADER(string xml_file)  
54          {          {
55              xmlfile = xml_file;              //throw new NotImplementedException();
             LoadXml();  
56          }          }
         #region IXMLTV_LOADER  
         public FileInfo XmlFile { get { return new FileInfo(xmlfile); } }  
         #endregion  
57    
58          private void LoadXml()          
         {  
             XMLTV_LOGGER.Log.Info.WriteLine("Loading XMLTV File: {0}", XmlFile.Name);  
             //XMLTV_LOGGER.Log.Warn.WriteLine("XML File Loading has not been implemented yet!");  
             try  
             {  
                 XDocument doc = XDocument.Load(XmlFile.FullName);  
             }  
             catch (Exception ex)  
             {  
                 XMLTV_LOGGER.Log.Error.WriteLine("Failed to load XMLTV File: {0}", XmlFile.Name);  
                 XMLTV_LOGGER.Log.Error.WriteLine(ex.GetBaseException().ToString());  
             }  
         }  
59      }      }
60  }  }

Legend:
Removed from v.21  
changed lines
  Added in v.81

  ViewVC Help
Powered by ViewVC 1.1.22