CCCoreData.h 16 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260
  1. //
  2. // CCCoreData.h
  3. // Crypto Cloud Technology Nextcloud
  4. //
  5. // Created by Marino Faggiana on 02/02/16.
  6. // Copyright (c) 2014 TWS. All rights reserved.
  7. //
  8. // Author Marino Faggiana <m.faggiana@twsweb.it>
  9. //
  10. // This program is free software: you can redistribute it and/or modify
  11. // it under the terms of the GNU General Public License as published by
  12. // the Free Software Foundation, either version 3 of the License, or
  13. // (at your option) any later version.
  14. //
  15. // This program is distributed in the hope that it will be useful,
  16. // but WITHOUT ANY WARRANTY; without even the implied warranty of
  17. // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  18. // GNU General Public License for more details.
  19. //
  20. // You should have received a copy of the GNU General Public License
  21. // along with this program. If not, see <http://www.gnu.org/licenses/>.
  22. //
  23. #import <Foundation/Foundation.h>
  24. #import <CoreData/CoreData.h>
  25. #import <Photos/Photos.h>
  26. #import <MagicalRecord/MagicalRecord.h>
  27. #import "OCSharedDto.h"
  28. #import "CCMetadata.h"
  29. #import "CCUtility.h"
  30. #import "CCExifGeo.h"
  31. #import "CCGraphics.h"
  32. #import "OCUserProfile.h"
  33. #import "OCActivity.h"
  34. #import "OCExternalSites.h"
  35. #import "OCCapabilities.h"
  36. #import "TableAccount+CoreDataClass.h"
  37. #import "TableActivity+CoreDataClass.h"
  38. #import "TableCertificates+CoreDataClass.h"
  39. #import "TableMetadata+CoreDataClass.h"
  40. #import "TableDirectory+CoreDataClass.h"
  41. #import "TableLocalFile+CoreDataClass.h"
  42. #import "TableGPS+CoreDataClass.h"
  43. #import "TableShare+CoreDataClass.h"
  44. #import "TableAutomaticUpload+CoreDataClass.h"
  45. #import "TableExternalSites+CoreDataClass.h"
  46. #import "TableCapabilities+CoreDataClass.h"
  47. @interface CCCoreData : NSObject
  48. // ===== Account =====
  49. + (void)addAccount:(NSString *)account url:(NSString *)url user:(NSString *)user password:(NSString *)password;
  50. + (void)updateAccount:(NSString *)account withPassword:(NSString *)password;
  51. + (void)deleteAccount:(NSString *)account;
  52. + (TableAccount *)setActiveAccount:(NSString *)account;
  53. + (NSArray *)getAllAccount;
  54. + (TableAccount *)getTableAccountFromAccount:(NSString *)account;
  55. + (NSArray *)getAllTableAccount;
  56. + (TableAccount *)getActiveAccount;
  57. + (NSString *)getCameraUploadFolderNameActiveAccount:(NSString *)activeAccount;
  58. + (NSString *)getCameraUploadFolderPathActiveAccount:(NSString *)activeAccount activeUrl:(NSString *)activeUrl;
  59. + (NSString *)getCameraUploadFolderNamePathActiveAccount:(NSString *)activeAccount activeUrl:(NSString *)activeUrl;
  60. + (BOOL)getCameraUploadActiveAccount:(NSString *)activeAccount;
  61. + (BOOL)getCameraUploadBackgroundActiveAccount:(NSString *)activeAccount;
  62. + (BOOL)getCameraUploadCreateSubfolderActiveAccount:(NSString *)activeAccount;
  63. + (BOOL)getCameraUploadFullPhotosActiveAccount:(NSString *)activeAccount;
  64. + (BOOL)getCameraUploadPhotoActiveAccount:(NSString *)activeAccount;
  65. + (BOOL)getCameraUploadVideoActiveAccount:(NSString *)activeAccount;
  66. + (NSDate *)getCameraUploadDatePhotoActiveAccount:(NSString *)activeAccount;
  67. + (NSDate *)getCameraUploadDateVideoActiveAccount:(NSString *)activeAccount;
  68. + (BOOL)getCameraUploadCryptatedPhotoActiveAccount:(NSString *)activeAccount;
  69. + (BOOL)getCameraUploadCryptatedVideoActiveAccount:(NSString *)activeAccount;
  70. + (BOOL)getCameraUploadWWanPhotoActiveAccount:(NSString *)activeAccount;
  71. + (BOOL)getCameraUploadWWanVideoActiveAccount:(NSString *)activeAccount;
  72. + (NSInteger)getServerVersionMajorActiveAccount:(NSString *)activeAccount;
  73. + (void)setCameraUpload:(BOOL)state activeAccount:(NSString *)activeAccount;
  74. + (void)setCameraUploadBackground:(BOOL)state activeAccount:(NSString *)activeAccount;
  75. + (void)setCameraUploadCreateSubfolderActiveAccount:(BOOL)state activeAccount:(NSString *)activeAccount;
  76. + (void)setCameraUploadFullPhotosActiveAccount:(BOOL)state activeAccount:(NSString *)activeAccount;
  77. + (void)setCameraUploadPhoto:(BOOL)state activeAccount:(NSString *)activeAccount;
  78. + (void)setCameraUploadVideo:(BOOL)video activeAccount:(NSString *)activeAccount;
  79. + (void)setCameraUploadDatePhoto:(NSDate *)date;
  80. + (void)setCameraUploadDateVideo:(NSDate *)date;
  81. + (void)setCameraUploadDateAssetType:(PHAssetMediaType)assetMediaType assetDate:(NSDate *)assetDate activeAccount:(NSString *)activeAccount;
  82. + (void)setCameraUploadCryptatedPhoto:(BOOL)cryptated activeAccount:(NSString *)activeAccount;
  83. + (void)setCameraUploadCryptatedVideo:(BOOL)cryptated activeAccount:(NSString *)activeAccount;
  84. + (void)setCameraUploadWWanPhoto:(BOOL)wWan activeAccount:(NSString *)activeAccount;
  85. + (void)setCameraUploadWWanVideo:(BOOL)wWan activeAccount:(NSString *)activeAccount;
  86. + (void)setCameraUploadFolderName:(NSString *)fileName activeAccount:(NSString *)activeAccount;
  87. + (void)setCameraUploadFolderPath:(NSString *)pathName activeUrl:(NSString *)activeUrl activeAccount:(NSString *)activeAccount;
  88. + (void)setCameraUploadSaveAlbum:(BOOL)saveAlbum activeAccount:(NSString *)activeAccount;
  89. + (void)setUserProfileActiveAccount:(NSString *)activeAccount userProfile:(OCUserProfile *)userProfile;
  90. + (void)setServerVersionActiveAccount:(NSString *)activeAccount versionMajor:(NSInteger)versionMajor versionMinor:(NSInteger)versionMinor versionMicro:(NSInteger)versionMicro;
  91. // ===== Certificates =====
  92. + (void)addCertificate:(NSString *)certificateLocation;
  93. + (NSMutableArray *)getAllCertificatesLocation;
  94. // ===== Metadata =====
  95. + (void)addMetadata:(CCMetadata *)metadata activeAccount:(NSString *)activeAccount activeUrl:(NSString *)activeUrl context:(NSManagedObjectContext *)context;
  96. + (void)deleteMetadataWithPredicate:(NSPredicate *)predicate;
  97. + (void)moveMetadata:(NSString *)fileName directoryID:(NSString *)directoryID directoryIDTo:(NSString *)directoryIDTo activeAccount:(NSString *)activeAccount;
  98. + (void)updateMetadata:(CCMetadata *)metadata predicate:(NSPredicate *)predicate activeAccount:(NSString *)activeAccount activeUrl:(NSString *)activeUrl context:(NSManagedObjectContext *)context;
  99. + (void)setMetadataSession:(NSString *)session sessionError:(NSString *)sessionError sessionSelector:(NSString *)sessionSelector sessionSelectorPost:(NSString *)sessionSelectorPost sessionTaskIdentifier:(NSInteger)sessionTaskIdentifier sessionTaskIdentifierPlist:(NSInteger)sessionTaskIdentifierPlist predicate:(NSPredicate *)predicate context:(NSManagedObjectContext *)context;
  100. + (void)setMetadataFavoriteFileID:(NSString *)fileID favorite:(BOOL)favorite activeAccount:(NSString *)activeAccount context:(NSManagedObjectContext *)context;
  101. + (TableMetadata *)getTableMetadataWithPreficate:(NSPredicate *)predicate;
  102. + (NSArray *)getTableMetadataWithPredicate:(NSPredicate *)predicate context:(NSManagedObjectContext *)context;
  103. + (NSArray *)getTableMetadataWithPredicate:(NSPredicate *)predicate fieldOrder:(NSString *)fieldOrder ascending:(BOOL)ascending;
  104. + (CCMetadata *)getMetadataWithPreficate:(NSPredicate *)predicate context:(NSManagedObjectContext *)context;
  105. + (CCMetadata *)getMetadataAtIndex:(NSPredicate *)predicate fieldOrder:(NSString *)fieldOrder ascending:(BOOL)ascending objectAtIndex:(NSUInteger)index;
  106. + (CCMetadata *)getMetadataFromFileName:(NSString *)fileName directoryID:(NSString *)directoryID activeAccount:(NSString *)activeAccount context:(NSManagedObjectContext *)context;
  107. + (NSArray *)getTableMetadataDownloadAccount:(NSString *)activeAccount;
  108. + (NSArray *)getTableMetadataDownloadWWanAccount:(NSString *)activeAccount;
  109. + (NSArray *)getTableMetadataUploadAccount:(NSString *)activeAccount;
  110. + (NSArray *)getTableMetadataUploadWWanAccount:(NSString *)activeAccount;
  111. + (NSArray *)getRecordsTableMetadataPhotosCameraUpload:(NSString *)serverUrl activeAccount:(NSString *)activeAccount;
  112. + (void)removeOfflineAllFileFromServerUrl:(NSString *)serverUrl activeAccount:(NSString *)activeAccount;
  113. // ===== Directory =====
  114. + (NSString *)addDirectory:(NSString *)serverUrl permissions:(NSString *)permissions activeAccount:(NSString *)activeAccount;
  115. + (void)updateDirectoryEtagServerUrl:(NSString *)serverUrl etag:(NSString *)etag activeAccount:(NSString *)activeAccount;
  116. + (void)deleteDirectoryFromPredicate:(NSPredicate *)predicate;
  117. + (NSArray *)deleteDirectoryAndSubDirectory:(NSString *)serverUrl activeAccount:(NSString *)activeAccount;
  118. + (void)renameDirectory:(NSString *)serverUrl serverUrlTo:(NSString *)serverUrlTo activeAccount:(NSString *)activeAccount;
  119. + (void)setDateReadDirectoryID:(NSString *)directoryID activeAccount:(NSString *)activeAccount;
  120. + (NSDate *)getDateReadDirectoryID:(NSString *)directoryID activeAccount:(NSString *)activeAccount;
  121. + (void)setDirectoryRev:(NSString *)rev serverUrl:(NSString *)serverUrl activeAccount:(NSString *)activeAccount;
  122. + (NSString *)getDirectoryRevFromServerUrl:(NSString *)serverUrl activeAccount:(NSString *)activeAccount;
  123. + (TableDirectory *)getTableDirectoryWithPreficate:(NSPredicate *)predicate;
  124. + (NSArray *)getDirectoryIDsFromBeginsWithServerUrl:(NSString *)serverUrl activeAccount:(NSString *)activeAccount;
  125. + (NSString *)getDirectoryIDFromServerUrl:(NSString *)serverUrl activeAccount:(NSString *)activeAccount;
  126. + (NSString *)getServerUrlFromDirectoryID:(NSString *)directoryID activeAccount:(NSString *)activeAccount;
  127. + (void)clearDateReadAccount:(NSString *)activeAccount serverUrl:(NSString *)serverUrl directoryID:(NSString *)directoryID;
  128. + (void)clearAllDateReadDirectory;
  129. + (BOOL)isDirectoryOutOfDate:(int)numAddDay directoryID:(NSString *)directoryID activeAccount:(NSString *)activeAccount;
  130. + (void)removeOfflineDirectoryID:(NSString *)directoryID activeAccount:(NSString *)activeAccount;
  131. + (NSArray *)getOfflineDirectoryActiveAccount:(NSString *)activeAccount;
  132. + (void)setOfflineDirectoryServerUrl:(NSString *)serverUrl offline:(BOOL)offline activeAccount:(NSString *)activeAccount;
  133. + (BOOL)isOfflineDirectoryServerUrl:(NSString *)serverUrl activeAccount:(NSString *)activeAccount;
  134. + (BOOL)setDirectoryLock:(NSString *)serverUrl activeAccount:(NSString *)activeAccount;
  135. + (BOOL)setDirectoryUnLock:(NSString *)serverUrl activeAccount:(NSString *)activeAccount;
  136. + (void)setAllDirectoryUnLockForAccount:(NSString *)activeAccount;
  137. + (BOOL)isDirectoryLock:(NSString *)serverUrl activeAccount:(NSString *)activeAccount;
  138. + (BOOL)isBlockZone:(NSString *)serverUrl activeAccount:(NSString *)activeAccount;
  139. // ===== LocalFile =====
  140. + (void)addLocalFile:(CCMetadata *)metadata activeAccount:(NSString *)activeAccount;
  141. + (void)deleteLocalFileWithPredicate:(NSPredicate *)predicate;
  142. + (void)renameLocalFileWithFileID:(NSString *)fileID fileNameTo:(NSString *)fileNameTo fileNamePrintTo:(NSString *)fileNamePrintTo activeAccount:(NSString *)activeAccount;
  143. + (void)updateLocalFileModel:(CCMetadata *)metadata activeAccount:(NSString *)activeAccount;
  144. + (TableLocalFile *)getLocalFileWithFileID:(NSString *)fileID activeAccount:(NSString *)activeAccount;
  145. + (NSArray *)getTableLocalFileWithPredicate:(NSPredicate *)predicate;
  146. // ===== Offline LocalFile =====
  147. + (void)setOfflineLocalFileID:(NSString *)fileID offline:(BOOL)offline activeAccount:(NSString *)activeAccount;
  148. + (BOOL)isOfflineLocalFileID:(NSString *)fileID activeAccount:(NSString *)activeAccount;
  149. + (NSArray *)getOfflineLocalFileActiveAccount:(NSString *)activeAccount directoryUser:(NSString *)directoryUser;
  150. // ===== GeoInformation =====
  151. + (NSArray *)getGeoInformationLocalFromFileID:(NSString *)fileID activeAccount:(NSString *)activeAccount;
  152. + (void)setGeoInformationLocalFromFileID:(NSString *)fileID exifDate:(NSDate *)exifDate exifLatitude:(NSString *)exifLatitude exifLongitude:(NSString *)exifLongitude activeAccount:(NSString *)activeAccount;
  153. + (void)setGeoInformationLocalNull;
  154. // ===== Automatic Upload =====
  155. + (BOOL)addTableAutomaticUpload:(CCMetadataNet *)metadataNet account:(NSString *)account;
  156. + (CCMetadataNet *)getTableAutomaticUploadForAccount:(NSString *)account selector:(NSString *)selector;
  157. + (NSArray *)getAllLockTableAutomaticUploadForAccount:(NSString *)account;
  158. + (void)unlockTableAutomaticUploadForAccount:(NSString *)account assetLocalIdentifier:(NSString *)assetLocalIdentifier;
  159. + (void)deleteTableAutomaticUploadForAccount:(NSString *)account assetLocalIdentifier:(NSString *)assetLocalIdentifier;
  160. + (NSUInteger)countTableAutomaticUploadForAccount:(NSString *)account selector:(NSString *)selector;
  161. // ===== GPS =====
  162. + (void)setGeocoderLocation:(NSString *)location placemarkAdministrativeArea:(NSString *)placemarkAdministrativeArea placemarkCountry:(NSString *)placemarkCountry placemarkLocality:(NSString *)placemarkLocality placemarkPostalCode:(NSString *)placemarkPostalCode placemarkThoroughfare:(NSString *)placemarkThoroughfare latitude:(NSString *)latitude longitude:(NSString *)longitude;
  163. + (NSString *)getLocationFromGeoLatitude:(NSString *)latitude longitude:(NSString *)longitude;
  164. // ===== Share =====
  165. + (void)setShareLink:(NSString *)share fileName:(NSString *)fileName serverUrl:(NSString *)serverUrl sharesLink:(NSMutableDictionary *)sharesLink activeAccount:(NSString *)activeAccount;
  166. + (void)setShareUserAndGroup:(NSString *)share fileName:(NSString *)fileName serverUrl:(NSString *)serverUrl sharesUserAndGroup:(NSMutableDictionary *)sharesUserAndGroup activeAccount:(NSString *)activeAccount;
  167. + (void)unShare:(NSString *)share fileName:(NSString *)fileName serverUrl:(NSString *)serverUrl sharesLink:(NSMutableDictionary *)sharesLink sharesUserAndGroup:(NSMutableDictionary *)sharesUserAndGroup activeAccount:(NSString *)activeAccount;
  168. + (void)updateShare:(NSDictionary *)items sharesLink:(NSMutableDictionary *)sharesLink sharesUserAndGroup:(NSMutableDictionary *)sharesUserAndGroup activeAccount:(NSString *)activeAccount activeUrl:(NSString *)activeUrl;
  169. + (void)populateSharesVariableFromDBActiveAccount:(NSString *)activeAccount sharesLink:(NSMutableDictionary *)sharesLink sharesUserAndGroup:(NSMutableDictionary *)sharesUserAndGroup;
  170. // ===== Offline =====
  171. + (NSArray *)getHomeOfflineActiveAccount:(NSString *)activeAccount directoryUser:(NSString *)directoryUser fieldOrder:(NSString *)fieldOrder ascending:(BOOL)ascending;
  172. // ===== Activity =====
  173. + (void)addActivityServer:(OCActivity *)activity account:(NSString *)account;
  174. + (void)addActivityClient:(NSString *)file fileID:(NSString *)fileID action:(NSString *)action selector:(NSString *)selector note:(NSString *)note type:(NSString *)type verbose:(NSInteger)verbose account:(NSString *)account activeUrl:(NSString *)activeUrl;
  175. + (NSArray *)getAllTableActivityWithPredicate:(NSPredicate *)predicate;
  176. // ===== External Sites =====
  177. + (void)addExternalSites:(OCExternalSites *)externalSites account:(NSString *)account;
  178. + (void)deleteAllExternalSitesForAccount:(NSString *)account;
  179. + (NSArray *)getAllTableExternalSitesWithPredicate:(NSPredicate *)predicate;
  180. // ===== Capabilities =====
  181. + (void)addCapabilities:(OCCapabilities *)capabilities account:(NSString *)account;
  182. + (TableCapabilities *)getCapabilitesForAccount:(NSString *)account;
  183. // ===== File System =====
  184. + (BOOL)downloadFile:(CCMetadata *)metadata directoryUser:(NSString *)directoryUser activeAccount:(NSString *)activeAccount;
  185. + (void)downloadFilePlist:(CCMetadata *)metadata activeAccount:(NSString *)activeAccount activeUrl:(NSString *)activeUrl directoryUser:(NSString *)directoryUser;
  186. + (void)deleteFile:(CCMetadata *)metadata serverUrl:(NSString *)serverUrl directoryUser:(NSString *)directoryUser activeAccount:(NSString *)activeAccount;
  187. // ===== Metadata <> Entity =====
  188. + (void)insertMetadataInEntity:(CCMetadata *)metadata recordMetadata:(TableMetadata *)recordMetadata activeAccount:(NSString *)activeAccount activeUrl:(NSString *)activeUrl;
  189. + (CCMetadata *)insertEntityInMetadata:(TableMetadata *)recordMetadata;
  190. // ===== Utility Database =====
  191. + (void)moveCoreDataToGroup;
  192. + (void)moveAllUserToGroup;
  193. //+ (void)verifyVersionCoreData;
  194. + (void)flushTableActivityAccount:(NSString *)account;
  195. + (void)flushTableAutomaticUploadAccount:(NSString *)account selector:(NSString *)selector;
  196. + (void)flushTableDirectoryAccount:(NSString *)account;
  197. + (void)flushTableLocalFileAccount:(NSString *)account;
  198. + (void)flushTableMetadataAccount:(NSString *)account;
  199. + (void)flushTableGPS;
  200. + (void)flushAllDatabase;
  201. @end