Feed.cs CampusAppWP8::Utility::Feed< T > CampusAppWP8::Utility //----------------------------------------------------------------------- //<copyrightfile="Feed.cs"company="BTU/IIT"> //Companycopyrighttag. //</copyright> //<author>stubbfel</author> //<sience>03.05.2013</sience> //---------------------------------------------------------------------- namespaceCampusAppWP8.Utility { usingSystem; usingSystem.Net; publicabstractclassFeed<T>:RestApi { #regionMember privatereadonlyUrifeedURL; privatereadonlyFeedEventHandlereventHandler; privatereadonlystringfileName; privateTmodel; #endregion #regionConstructor publicFeed() { this.eventHandler=newFeedEventHandler(); } publicFeed(UrifeedURL,stringfileName) { this.feedURL=feedURL; this.eventHandler=newFeedEventHandler(); this.fileName=fileName; } #endregion #regionProberty publicUriFeedURL { get{returnthis.feedURL;} } publicFeedEventHandlerEventHandler { get{returnthis.eventHandler;} } publicTModel { get { returnthis.model; } set { if((value==null&&this.model!=null)||!value.Equals(this.model)) { this.model=value; } } } publicstringFileName { get{returnthis.fileName;} } #endregion #regionMethods #regionpublic publicvoidLoadFeed() { if(this.IsModelUpToDate()) { return; } if(this.IsFileUpToDate()) { this.LoadFile(); } else { this.DownloadFeed(); } } #endregion #regionprotected protectedabstractboolCheckIsFileUpToDate(); protectedabstractboolCheckIsModelUpToDate(); protectedabstractvoidDeserialization(stringfeedString); #endregion #regionprivate privatevoidLoadFile() { stringfeedString=FileManager.ReadFile(this.FileName); this.CreateModel(feedString); } privatevoidDownloadFeed() { this.HttpGet(this.FeedURL,this.DownloadCompleted); } privateboolIsFileUpToDate() { if(!FileManager.ExistsFile(this.FileName)) { returnfalse; } returnthis.CheckIsFileUpToDate(); } privateboolIsModelUpToDate() { if(this.Model!=null) { returnthis.CheckIsModelUpToDate(); } returnfalse; } privatevoidDownloadCompleted(objectsender,DownloadStringCompletedEventArgse) { ExceptiondownloadError=e.Error; if(downloadError!=null) { return; } stringdownloadResult=e.Result; if(downloadResult!=null&&!downloadResult.Equals(string.Empty)) { this.CreateModel(downloadResult); FileManager.WriteFile(this.FileName,downloadResult); } } privatevoidCreateModel(stringfeedString) { if(feedString==null||feedString==string.Empty) { return; } this.Deserialization(feedString); this.EventHandler.FireFeedReadyevent(); } #endregion #endregion } }