using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using libxmltv.Interfaces;
using System.IO;
using Enterprise.Logging;
using System.Xml.Linq;
namespace libxmltv.Core
{
///
/// Main class: Creates the XMLTV Loader
///
public static class XMLTV
{
public static object CreateLoader(string xml_file)
{
XMLTV_LOGGER.Initialize();
XMLTV_LOADER loader = new XMLTV_LOADER(xml_file);
return loader;
}
public static void Test(object xmltv)
{
if (!VerifyInstance(xmltv)) { return; }
}
private static bool VerifyInstance(object xmltv) where T : class
{
try
{
if (xmltv == null) { return false; }
T t = (xmltv as T);
if (t == null) { throw new InvalidCastException(string.Format("Unable to cast type: {0} to {1}", xmltv.GetType().Name, typeof(T).Name)); }
else { return true; }
}
catch (Exception ex)
{
throw new InvalidCastException(string.Format("Unable to cast type: {0} to {1}", xmltv.GetType().Name, typeof(T).Name), ex);
}
}
}
internal class XMLTV_LOADER : IXMLTV_LOADER
{
private string xmlfile = string.Empty;
public XMLTV_LOADER(string xml_file)
{
xmlfile = xml_file;
LoadXml();
}
#region IXMLTV_LOADER
public FileInfo XmlFile { get { return new FileInfo(xmlfile); } }
#endregion
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());
}
}
}
}