MainModel.cs CampusAppWP8::Model::MainModel< T > CampusAppWP8::Model System::Net //----------------------------------------------------------------------------- //<copyrightfile="MainModel.cs"company="BTU/IIT"> //Companycopyrighttag. //</copyright> //<author>fiedlchr</author> //<sience>05.07.2013</sience> //----------------------------------------------------------------------------- namespaceCampusAppWP8.Model { usingSystem; usingSystem.IO; usingSystem.Net; usingCampusAppWP8.Utility; usingCampusAppWPortalLib8.Model; publicabstractclassMainModel<T>:AbstractMainModel<T> { #regionConstructor publicMainModel(ModelTypemodelType,stringfileName,stringurl) :base(modelType,fileName,url) { } publicMainModel(ModelTypemodelType,stringsourceName) :base(modelType,sourceName) { } #endregion #regionEvents publicdelegateboolIsFileUpToDate(Tmodel,FileInfofileInfo); publiceventIsFileUpToDateIsFileUpToDateOnLoad=null; publiceventIsFileUpToDateIsFileUpToDateOnSave=null; #endregion #regionproperty publicnewCampusAppWP8.Utility.FileFile { get { return(CampusAppWP8.Utility.File)base.File; } protectedset { base.File=value; } } publicnewHttpRequestApi { get { return(HttpRequest)base.Api; } protectedset { base.Api=value; } } #endregion #regionMethod #regionprotected protectedoverrideboolCheckLoadFileIsNotUpToDate() { returnthis.CheckIsNotUpToDate(this.IsFileUpToDateOnLoad); } protectedoverrideboolCheckSaveFileIsNotUpToDate() { returnthis.CheckIsNotUpToDate(this.IsFileUpToDateOnSave); } protectedoverridevoidSendHttpGet(Uriurl) { ((HttpRequest)this.Api).HttpGet(url,this.OnLoadDataComplete); } protectedoverridevoidInitFile() { if((this.IsFile()==true) &&(this.File==null)) { this.File=newCampusAppWP8.Utility.File(this.FileName); } } protectedoverridevoidInitHttpApi() { if((this.IsHttpApi()==true) &&(this.Api==null)) { this.Api=newHttpRequest(this.HttpApiUri); } } protectedoverrideboolCheckIsNotUpToDate(objectcheckFunc) { boolretValue=false; //ifthereisnocheckfunction,themodelorfileisnotuptodate if(checkFunc==null) { retValue=true; } else { TypefuncType=checkFunc.GetType(); if(funcType.Equals(typeof(IsFileUpToDate))) { retValue=!(checkFuncasIsFileUpToDate)(this.Model,this.File.GetFileInfo()); } elseif(funcType.Equals(typeof(IsModelUpToDate))) { retValue=!(checkFuncasIsModelUpToDate)(this.Model); } } returnretValue; } #endregion #regionprivate privatevoidOnLoadDataComplete(objectsender,OpenReadCompletedEventArgse) { ExceptiondownloadError=e.Error; if(downloadError!=null) { this.FireLoadFailEvents(); } else { byte[]data; using(MemoryStreamms=newMemoryStream()) { e.Result.CopyTo(ms); data=ms.ToArray(); } if(data!=null&&data.Length>0) { this.DeserializeModel(data); } this.FireLoadCompletedEvents(); } } #endregion #endregion } }