Init
This commit is contained in:
116
Helper/FeedSerializer.cs
Normal file
116
Helper/FeedSerializer.cs
Normal file
@@ -0,0 +1,116 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel;
|
||||
using System.IO;
|
||||
using System.Windows.Media;
|
||||
using MarketData.Utils;
|
||||
using Ticker.Models;
|
||||
// Author:Sean Kessler
|
||||
namespace Ticker.Helper
|
||||
{
|
||||
public class FeedSerializer
|
||||
{
|
||||
private FeedSerializer()
|
||||
{
|
||||
}
|
||||
public static List<FeedItem> Deserialize(String strPathFileName)
|
||||
{
|
||||
List<FeedItem> feedItems=new List<FeedItem>();
|
||||
if(!File.Exists(strPathFileName))return feedItems;
|
||||
String strLine=null;
|
||||
|
||||
if(!IsCacheCurrent(strPathFileName,DateTime.Now))
|
||||
{
|
||||
RemoveCache(strPathFileName);
|
||||
return feedItems;
|
||||
}
|
||||
StreamReader streamReader=new StreamReader(new FileStream(strPathFileName,FileMode.Open));
|
||||
DateTime cacheDate=new NVP(streamReader.ReadLine()).Get<DateTime>();
|
||||
while(null!=(strLine=streamReader.ReadLine()))
|
||||
{
|
||||
if("".Equals(strLine))continue;
|
||||
FeedItem feedItem=FeedItem.FromString(strLine);
|
||||
if(null==feedItem)continue;
|
||||
feedItems.Add(feedItem);
|
||||
}
|
||||
streamReader.Close();
|
||||
streamReader.Dispose();
|
||||
return feedItems;
|
||||
}
|
||||
public static bool Serialize(String strPathFileName,DateTime feedDate,List<FeedItem> feedsList)
|
||||
{
|
||||
try
|
||||
{
|
||||
if(File.Exists(strPathFileName))File.Delete(strPathFileName);
|
||||
StreamWriter streamWriter=new StreamWriter(new FileStream(strPathFileName,FileMode.CreateNew));
|
||||
streamWriter.WriteLine(new NVP("CacheDate",feedDate.ToShortDateString()).ToString());
|
||||
foreach(FeedItem feedItem in feedsList)
|
||||
{
|
||||
String strLine=feedItem.ToNVPCollection().ToString();
|
||||
if(null==strLine||"".Equals(strLine))continue;
|
||||
streamWriter.WriteLine(strLine);
|
||||
}
|
||||
streamWriter.Flush();
|
||||
streamWriter.Close();
|
||||
streamWriter.Dispose();
|
||||
return true;
|
||||
}
|
||||
catch(Exception)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
}
|
||||
public static bool Serialize(String strPathFileName,DateTime feedDate,FeedItem feedItem)
|
||||
{
|
||||
try
|
||||
{
|
||||
StreamWriter streamWriter=null;
|
||||
String strLine=feedItem.ToNVPCollection().ToString();
|
||||
if(null==strLine||"".Equals(strLine))return false;
|
||||
if(!File.Exists(strPathFileName))
|
||||
{
|
||||
streamWriter=new StreamWriter(new FileStream(strPathFileName,FileMode.CreateNew));
|
||||
streamWriter.WriteLine(new NVP("CacheDate",feedDate.ToShortDateString()).ToString());
|
||||
}
|
||||
else
|
||||
{
|
||||
streamWriter=new StreamWriter(new FileStream(strPathFileName,FileMode.Append));
|
||||
}
|
||||
streamWriter.WriteLine(strLine);
|
||||
streamWriter.Flush();
|
||||
streamWriter.Close();
|
||||
streamWriter.Dispose();
|
||||
return true;
|
||||
}
|
||||
catch(Exception)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
}
|
||||
private static bool IsCacheCurrent(String strPathFileName,DateTime feedDate)
|
||||
{
|
||||
try
|
||||
{
|
||||
if(!File.Exists(strPathFileName))return false;
|
||||
StreamReader streamReader=new StreamReader(new FileStream(strPathFileName,FileMode.Open));
|
||||
DateTime cacheDate=new NVP(streamReader.ReadLine()).Get<DateTime>();
|
||||
streamReader.Close();
|
||||
return feedDate.Date.Equals(cacheDate.Date);
|
||||
}
|
||||
catch(Exception)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
}
|
||||
private static void RemoveCache(String strPathFileName)
|
||||
{
|
||||
try
|
||||
{
|
||||
if(File.Exists(strPathFileName))File.Delete(strPathFileName);
|
||||
}
|
||||
catch(Exception)
|
||||
{
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user