Advertisement
Guest User

Untitled

a guest
Jun 29th, 2015
234
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.35 KB | None | 0 0
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Threading.Tasks;
  4. using Windows.Storage;
  5. using Windows.Storage.Search;
  6. using Caliburn.Micro;
  7. using Newtonsoft.Json;
  8.  
  9. namespace FileStorage
  10. {
  11. public abstract class Service<T> : IService<T> where T : class
  12. {
  13. protected abstract IStorageFolder StorageFolder { get; }
  14. protected abstract string FolderName { get; }
  15.  
  16. public virtual async Task<IEnumerable<T>> GetAll()
  17. {
  18. var files = new List<T>();
  19. foreach (var file in await Files())
  20. files.Add(JsonConvert.DeserializeObject<T>(await FileIO.ReadTextAsync(file)));
  21.  
  22. return files;
  23. }
  24.  
  25. public async Task Save(T schema, string fileName)
  26. {
  27. var folder = await Folder();
  28. var file = await folder.CreateFileAsync(fileName, CreationCollisionOption.OpenIfExists);
  29. return await FileIO.WriteTextAsync(file, JsonConvert.SerializeObject(schema));
  30. }
  31.  
  32. public async Task<T> Get(string fileName)
  33. {
  34. var file = await GetFile(fileName);
  35. return file == null ? null : JsonConvert.DeserializeObject<T>(await FileIO.ReadTextAsync(file));
  36. }
  37.  
  38. public async Task Delete(string fileName)
  39. {
  40. var file = await GetFile(fileName);
  41. if (file != null)
  42. await file.DeleteAsync();
  43. }
  44.  
  45. protected async Task<StorageFile> GetFile(string fileName)
  46. {
  47. var folder = await Folder();
  48. var file = await folder.GetFileAsync(fileName);
  49. return file;
  50. }
  51.  
  52. protected async Task<IEnumerable<IStorageFile>> Files()
  53. {
  54. var folder = await Folder();
  55. return await folder.GetFilesAsync(CommonFileQuery.OrderByName);
  56. }
  57.  
  58. private async Task CreateFolder()
  59. {
  60. await StorageFolder.CreateFolderAsync(FolderName);
  61. }
  62.  
  63. protected async Task<StorageFolder> Folder()
  64. {
  65. try
  66. {
  67. var folder = await StorageFolder.GetFolderAsync(FolderName);
  68. if (folder == null)
  69. await CreateFolder();
  70. return folder;
  71. }
  72. catch (Exception ex)
  73. {
  74. LogManager.GetLog(GetType()).Error(ex);
  75. throw;
  76. }
  77. }
  78. }
  79. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement