CloudStorageDB.m 31 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798
  1. //
  2. // CloudStorageDB.m
  3. // zhuxun
  4. //
  5. // Created by winsoft on 17/6/22.
  6. //
  7. //
  8. #import "CloudStorageDB.h"
  9. #import "DBOperation.h"
  10. #import <MagicalRecord/MagicalRecord.h>
  11. #import <MJExtension/MJExtension.h>
  12. #import "DBConfigureCenter.h"
  13. #import <objc/runtime.h>
  14. @interface CloudStorageDB()
  15. @property (nonatomic , strong) DBOperation *dbOperation;
  16. @end
  17. @implementation CloudStorageDB
  18. static CloudStorageDB *cloudStorageDB;
  19. + (instancetype)shareInstance
  20. {
  21. static dispatch_once_t onceToken;
  22. dispatch_once(&onceToken, ^{
  23. cloudStorageDB = [[self alloc] init];
  24. });
  25. return cloudStorageDB;
  26. }
  27. - (instancetype)init
  28. {
  29. if (self = [super init]) {
  30. NSString *localPath = [NSPersistentStore MR_defaultLocalStoreUrl].absoluteString.stringByDeletingLastPathComponent;
  31. NSString *path = [NSString stringWithFormat:@"%@/%@_cloudStorageDisk.sqlite",localPath,Login_Name];
  32. NSFileManager *filemanager = [NSFileManager defaultManager];
  33. NSString *libraryPathstr = [NSSearchPathForDirectoriesInDomains(NSLibraryDirectory, NSUserDomainMask, YES) lastObject];
  34. NSString *applicationsupportdir = [libraryPathstr stringByAppendingString:@"/Application Support"];
  35. NSError *error;
  36. BOOL resultlocalpath = [filemanager createDirectoryAtPath:applicationsupportdir withIntermediateDirectories:YES attributes:nil error:&error];
  37. NSString *dbpath =
  38. //创建表
  39. self.dbOperation = [DBOperation dbOperationWithPath:path];
  40. [self.dbOperation creatDBWithTableName:cacheFileList dbModelClass:[CSFileModel class] Path:path autoUpgrade:YES uniqueCloumName:@"sid"];
  41. [self.dbOperation creatDBWithTableName:downTransFileList dbModelClass:[CSFileDownUpModel class] Path:path autoUpgrade:YES uniqueCloumName:@"downUpUUID"];
  42. [self.dbOperation creatDBWithTableName:upTransFileList dbModelClass:[CSFileDownUpModel class] Path:path autoUpgrade:YES uniqueCloumName:@"downUpUUID"];
  43. }
  44. return self;
  45. }
  46. //建立索引
  47. - (void)createIndexForTableName:(NSString *)name indexCloums:(NSArray<NSArray*> *)indexCloums
  48. {
  49. for (NSString *cloum in indexCloums) {
  50. NSString *sql = [NSString stringWithFormat:@"create index %@_%@ on %@(%@)",name,cloum,name,cloum];
  51. [self.dbOperation addDataToDBWithSQL:sql];
  52. }
  53. }
  54. - (void)addcsFilestoDB:(NSArray *)csFilesArray
  55. {
  56. [self.dbOperation addDatasDBWithTableName:cacheFileList models:csFilesArray];
  57. }
  58. //增加一条数据到数据库中
  59. - (void)addcsFiletoDB:(CSFileModel *)csFile
  60. {
  61. [self.dbOperation addDataDBWithTableName:cacheFileList model:csFile];
  62. }
  63. - (void)addCSDownUpFileToDB:(CSFileDownUpModel *)csDownUpFile
  64. {
  65. if (!csDownUpFile.pid) {
  66. csDownUpFile.pid = @"0";
  67. }
  68. //外部调用前请自身判断是否由相同的数据存在.
  69. if (csDownUpFile.downUpType == DownUpModelDown) {
  70. [self.dbOperation addDataDBWithTableName:downTransFileList model:csDownUpFile];
  71. }else [self.dbOperation addDataDBWithTableName:upTransFileList model:csDownUpFile];
  72. }
  73. - (void)addCSDownUpFilesToDB:(NSArray *)csDownUpFileToDBArray downUpModel:(DownUpModel)downUpModel
  74. {
  75. NSString *tableName = nil;
  76. if (downUpModel == DownUpModelDown) {
  77. tableName = downTransFileList;
  78. }else tableName = upTransFileList;
  79. [self.dbOperation addDatasDBWithTableName:tableName models:csDownUpFileToDBArray];
  80. }
  81. - (void)updateCloudFileToDB:(CSFileModel *)csFile
  82. {
  83. }
  84. #pragma mark -- 2017-07-26 文件迁移 serverFullPath未处理 --sql
  85. - (void)updateCSFilestoDB:(NSArray *)csFileSids targetid:(NSString *)pid{
  86. NSMutableString * pidsstring = [NSMutableString string];
  87. NSUInteger idx = 0;
  88. NSUInteger arraycount = csFileSids.count;
  89. for (NSString *str in csFileSids) {
  90. [pidsstring appendString:[NSString stringWithFormat:@"'%@'",str]];
  91. idx++;
  92. if (idx<arraycount) {
  93. [pidsstring appendString:@","];
  94. }
  95. }
  96. //未处理 serverFullPath
  97. NSString *sql = [NSString stringWithFormat:@"UPDATE cacheFileList set pid = %@ where sid in (%@)",pid,pidsstring];
  98. [self.dbOperation addDataToDBWithSQL:sql];
  99. }
  100. - (void)getAllCloudFilesWithPid:(NSString *)pid resultBlock:(void(^)(NSArray *result))resultBlock
  101. {
  102. NSString *sql = [NSString stringWithFormat:@"select * from cacheFileList where pid = '%@'",pid];
  103. [self.dbOperation quaryDBbySQL:sql result:^(NSMutableArray *array) {
  104. //dict array;
  105. NSArray *modelArray = [CSFileModel mj_objectArrayWithKeyValuesArray:array];
  106. resultBlock(modelArray);
  107. }];
  108. }
  109. //isFile
  110. - (void)getFileModelWithFileMD5:(NSString *)md5 resultBlock:(void(^)(CSFileModel *csFileModel))resultBlock
  111. {
  112. NSString *sql = [NSString stringWithFormat:@"select * from cacheFileList where md5 = '%@'",md5];
  113. [self.dbOperation quaryDBbySQL:sql result:^(NSMutableArray *array) {
  114. //dict array;
  115. NSArray *modelArray = [CSFileModel mj_objectArrayWithKeyValuesArray:array];
  116. if (modelArray.count) {
  117. resultBlock(modelArray[0]);
  118. }else resultBlock(nil);
  119. }];
  120. }
  121. //isDir
  122. - (void)getFileModelWithFileID:(NSString *)ID resultBlock:(void(^)(CSFileModel *csFileModel))resultBlock
  123. {
  124. NSString *sql = [NSString stringWithFormat:@"select * from cacheFileList where sid = '%@'",ID];
  125. [self.dbOperation quaryDBbySQL:sql result:^(NSMutableArray *array) {
  126. //dict array;
  127. NSArray *modelArray = [CSFileModel mj_objectArrayWithKeyValuesArray:array];
  128. if (modelArray.count) {
  129. resultBlock(modelArray[0]);
  130. }else resultBlock(nil);
  131. }];
  132. }
  133. - (void)getCSDownUpFileWithMD5:(NSString *)md5 downUpModel:(DownUpModel)downUpModel resultBlock:(void(^)(NSArray *csFileModels))resultBlock
  134. {
  135. NSString *sql = downUpModel == DownUpModelDown?[NSString stringWithFormat:@"select * from downTransFileList where md5 = '%@'",md5]:[NSString stringWithFormat:@"select * from upTransFileList where md5 = '%@'",md5];
  136. [self.dbOperation quaryDBbySQL:sql result:^(NSMutableArray *array) {
  137. //dict array;
  138. NSArray *modelArray = [CSFileDownUpModel mj_objectArrayWithKeyValuesArray:array];
  139. if (modelArray.count) {
  140. resultBlock(modelArray);
  141. }else resultBlock(nil);
  142. }];
  143. }
  144. - (void)getCSDownUpFileWithMD5:(NSString *)md5 pid:(NSString *)pid name:(NSString *)name downUpModel:(DownUpModel)downUpModel resultBlock:(void(^)(CSFileDownUpModel *csFileModel))resultBlock
  145. {
  146. NSString *sql = downUpModel == DownUpModelDown?[NSString stringWithFormat:@"select * from downTransFileList where md5 = '%@' and pid = '%@' and name = '%@'",md5,pid,name]:[NSString stringWithFormat:@"select * from upTransFileList where md5 = '%@' and pid = '%@' and name = '%@'",md5,pid,name];
  147. [self.dbOperation quaryDBbySQL:sql result:^(NSMutableArray *array) {
  148. //dict array;
  149. NSArray *modelArray = [CSFileDownUpModel mj_objectArrayWithKeyValuesArray:array];
  150. if (modelArray.count) {
  151. resultBlock(modelArray[0]);
  152. }else resultBlock(nil);
  153. }];
  154. }
  155. - (void)getCSDownUpFileWithUUID:(NSString *)downUpUUID downUpModel:(DownUpModel)downUpModel resultBlock:(void(^)(CSFileDownUpModel *csFileModel))resultBlock
  156. {
  157. NSString *tableName = nil;
  158. tableName = (downUpModel == DownUpModelDown)?downTransFileList:upTransFileList;
  159. NSString *sql = [NSString stringWithFormat:@"select * from %@ where downUpUUID = '%@'",tableName,downUpUUID];
  160. [self.dbOperation quaryDBbySQL:sql result:^(NSMutableArray *array) {
  161. //dict array;
  162. NSArray *modelArray = [CSFileDownUpModel mj_objectArrayWithKeyValuesArray:array];
  163. if (modelArray.count) {
  164. resultBlock(modelArray[0]);
  165. }else resultBlock(nil);
  166. }];
  167. }
  168. - (void)getCSDownUpFilesWithUUIDs:(NSArray *)downUpUUIDs downUpModel:(DownUpModel)downUpModel resultBlock:(void(^)(NSArray *csFileModels))resultBlock
  169. {
  170. NSString *strUUIDs = [downUpUUIDs componentsJoinedByString:@","];
  171. NSString *tableName = (downUpModel == DownUpModelDown)?downTransFileList:upTransFileList;
  172. NSString *sql = [NSString stringWithFormat:@"select * from %@ where downUpUUID in (%@)",tableName,strUUIDs];
  173. [self.dbOperation quaryDBbySQL:sql result:^(NSMutableArray *array) {
  174. //dict array;
  175. NSArray *modelArray = [CSFileDownUpModel mj_objectArrayWithKeyValuesArray:array];
  176. if (modelArray.count) {
  177. resultBlock(modelArray);
  178. }else resultBlock(nil);
  179. }];
  180. }
  181. - (void)getCSDownUpFileSameNameDifMd5WithMD5:(NSString *)md5 name:(NSString *)name localPath:(NSString *)localPath downUpModel:(DownUpModel)downUpModel resultBlock:(void(^)(NSInteger sameNameFileCount))resultBlock
  182. {
  183. NSString *tableName = nil;
  184. tableName = (downUpModel == DownUpModelDown)?downTransFileList:upTransFileList;
  185. // and localRootPath = '%@' ,localPath
  186. NSString *sql = [NSString stringWithFormat:@"select * from %@ where md5 != '%@' and name = '%@' and localRootPath = '%@'",tableName ,md5,name,localPath];
  187. [self.dbOperation quaryDBbySQL:sql result:^(NSMutableArray *array) {
  188. //dict array;
  189. NSArray *modelArray = [CSFileDownUpModel mj_objectArrayWithKeyValuesArray:array];
  190. resultBlock(modelArray.count);
  191. }];
  192. }
  193. - (void)getProcessCSDownUpFileWithMD5:(NSString *)md5 name:(NSString *)name downUpModel:(DownUpModel)downUpModel resultBlock:(void(^)(NSArray *downUpModels))resultBlock
  194. {
  195. NSString *sql = downUpModel == DownUpModelDown?[NSString stringWithFormat:@"select * from downTransFileList where md5 != '%@' and name = '%@' and (downUpStatus = %d OR downUpStatus = %d)",md5,name,DownUpStatusWait,DownUpStatusDoing]:[NSString stringWithFormat:@"select * from upTransFileList where md5 != '%@' and name = '%@' and (downUpStatus = %d OR downUpStatus = %d)",md5,name,DownUpStatusWait,DownUpStatusDoing];
  196. [self.dbOperation quaryDBbySQL:sql result:^(NSMutableArray *array) {
  197. //dict array;
  198. NSArray *modelArray = [CSFileDownUpModel mj_objectArrayWithKeyValuesArray:array];
  199. if (modelArray.count) {
  200. resultBlock(modelArray);
  201. }else resultBlock(nil);
  202. }];
  203. }
  204. - (void)getAllProcessOrWaitFileWithResultBlock:(void(^)(NSArray *downModels,NSArray *upModels))resultBlock;
  205. {
  206. NSString *sql = [NSString stringWithFormat:@"select * from %@ where downUpStatus <= %d and isdir = 0 order by downUpStatus desc",upTransFileList,DownUpStatusDoing];
  207. NSString *sql2 = [NSString stringWithFormat:@"select * from %@ where downUpStatus <= %d and isdir = 0 order by downUpStatus desc",downTransFileList,DownUpStatusDoing];
  208. [self.dbOperation quaryDBbySQL:sql result:^(NSMutableArray *array) {
  209. //dict array;
  210. NSArray *upModels = [CSFileDownUpModel mj_objectArrayWithKeyValuesArray:array];
  211. [self.dbOperation quaryDBbySQL:sql2 result:^(NSMutableArray *array) {
  212. //dict array;
  213. NSArray *downModels = [CSFileDownUpModel mj_objectArrayWithKeyValuesArray:array];
  214. if (resultBlock) {
  215. resultBlock(downModels, upModels);
  216. }
  217. }];
  218. }];
  219. }
  220. - (void)getAllCSDownUpFilesFoldersWithPid:(NSString *)pid isdir:(NSInteger)isDir downUpModel:(DownUpModel)downUpModel resultBlock:(void(^)(NSArray *downUpModels))resultBlock
  221. {
  222. /*
  223. select * from downTransFileList where pid= 'pid'
  224. union all
  225. select a.sid,a.pid,a.downUpUUID as Level from downTransFileList a
  226. inner join downTransFileList b on a.sid=b.pid
  227. inner join
  228. (
  229. select ParentID from tblCity group by ParentID
  230. ) c on a.ParentID=c.ParentID
  231. */
  232. //@"WITH RECURSIVE result(pid,sid) AS(SELECT * FROM %@ WHERE pid='%@' UNION SELECT a.sid,a.pid FROM %@ a,result b WHERE b.sid = a.pid)SELECT * from result"//[DBConfigureCenter getKeysArrayStrWithClassName:[CSFileDownUpModel class]]
  233. NSString *tableName = (downUpModel == DownUpModelDown?downTransFileList:upTransFileList);
  234. NSString *sql = [NSString stringWithFormat:@"WITH RECURSIVE result(%@) AS(SELECT * FROM %@ WHERE pid='%@' UNION SELECT a.* FROM %@ a,result b WHERE b.sid = a.pid)SELECT * from result",[DBConfigureCenter getKeysArrayStrWithClassName:[CSFileDownUpModel class]],tableName,pid,tableName];
  235. [self.dbOperation quaryDBbySQL:sql result:^(NSMutableArray *array) {
  236. NSArray *modelArray = [CSFileDownUpModel mj_objectArrayWithKeyValuesArray:array];
  237. NSMutableArray *tempArray = [NSMutableArray array];
  238. for (CSFileDownUpModel *csFileDownUpModel in modelArray) {
  239. if (isDir == 0 && !csFileDownUpModel.isdir) {
  240. [tempArray addObject:csFileDownUpModel];
  241. }else if (isDir == 1 && csFileDownUpModel.isdir)
  242. {
  243. [tempArray addObject:csFileDownUpModel];
  244. }else if(isDir == 2)
  245. {
  246. [tempArray addObject:csFileDownUpModel];
  247. }
  248. }
  249. if (tempArray.count) {
  250. resultBlock(tempArray);
  251. }else resultBlock(nil);
  252. }];
  253. }
  254. - (void)judgeFileFolderDownUpResultWithWithPid:(NSString *)pid downUpModel:(DownUpModel)downUpModel resultBlock:(void(^)(DownUpStatus downUpStatus, NSArray *totalDownUpFileModels))resultBlock
  255. {
  256. NSString *tableName = (downUpModel == DownUpModelDown?downTransFileList:upTransFileList);
  257. NSString *sql = [NSString stringWithFormat:@"WITH RECURSIVE result(%@) AS(SELECT * FROM %@ WHERE pid='%@' UNION SELECT a.* FROM %@ a,result b WHERE b.sid = a.pid)SELECT * from result",[DBConfigureCenter getKeysArrayStrWithClassName:[CSFileDownUpModel class]],tableName,pid,tableName];
  258. [self.dbOperation quaryDBbySQL:sql result:^(NSMutableArray *array) {
  259. NSArray *modelArray = [CSFileDownUpModel mj_objectArrayWithKeyValuesArray:array];
  260. DownUpStatus fileFolderStatus = DownUpStatusSuccess;
  261. NSArray *tempArray = [modelArray filteredArrayUsingPredicate:[NSPredicate predicateWithFormat:@"isdir = 0"]];
  262. //还不如统计多个呢.
  263. NSInteger successNum = 0;
  264. NSInteger faiureNum = 0;
  265. NSInteger doingNum = 0;
  266. NSInteger waitNum = 0;
  267. NSInteger pauseNum = 0;
  268. //暂停条件,不存在doing和wating下,只有pause和success,faiure.
  269. for (CSFileDownUpModel *csFileDownUpModel in tempArray) {
  270. if (csFileDownUpModel.downUpStatus == DownUpStatusSuccess) {
  271. successNum ++;
  272. }else if (csFileDownUpModel.downUpStatus == DownUpStatusFailure)
  273. {
  274. faiureNum ++;
  275. }else if (csFileDownUpModel.downUpStatus == DownUpStatusDoing)
  276. {
  277. doingNum ++;
  278. }else if (csFileDownUpModel.downUpStatus == DownUpStatusWait)
  279. {
  280. waitNum ++;
  281. }else if (csFileDownUpModel.downUpStatus == DownUpStatusPause)
  282. {
  283. pauseNum ++;
  284. }
  285. }
  286. if (successNum == tempArray.count) {
  287. fileFolderStatus = DownUpStatusSuccess;
  288. }else if (faiureNum == tempArray.count)
  289. {
  290. fileFolderStatus = DownUpStatusFailure;
  291. }else if (pauseNum && !doingNum && ! waitNum)
  292. {
  293. fileFolderStatus = DownUpStatusPause;
  294. }else if (waitNum == tempArray.count)
  295. {
  296. fileFolderStatus = DownUpStatusWait;
  297. }else fileFolderStatus = DownUpStatusDoing;
  298. resultBlock(fileFolderStatus,tempArray);
  299. }];
  300. }
  301. - (void)getFolderFilesDownUpStatusWithPid:(NSString *)pid downUpModel:(DownUpModel)downUpModel resultBlock:(void(^)(DownUpStatus downUpStatus))resultBlock
  302. {
  303. NSString *tableName = (downUpModel == DownUpModelDown?downTransFileList:upTransFileList);
  304. NSString *sql = sql = [NSString stringWithFormat:@"WITH RECURSIVE result(%@) AS(SELECT * FROM %@ WHERE pid='%@' and isdir = 0 UNION SELECT a.* FROM %@ a,result b WHERE b.sid = a.pid)SELECT * from result",[DBConfigureCenter getKeysArrayStrWithClassName:[CSFileDownUpModel class]],tableName,pid,tableName];
  305. [self.dbOperation quaryDBbySQL:sql result:^(NSMutableArray *array) {
  306. #warning 2017-07-06
  307. NSArray *modelArray = [CSFileDownUpModel mj_objectArrayWithKeyValuesArray:array];
  308. BOOL result = YES;
  309. for (CSFileDownUpModel *csFileDownUpModel in modelArray) {
  310. if (csFileDownUpModel.downUpStatus != DownUpStatusSuccess) {
  311. result = NO;
  312. }
  313. }
  314. if (result) {
  315. resultBlock(DownUpStatusSuccess);
  316. }else resultBlock(DownUpStatusDoing);
  317. }];
  318. }
  319. - (void)getCSDownUpFolderWithID:(NSString *)sid isdir:(BOOL)isdir name:(NSString *)name category:(NSInteger)category downUpModel:(DownUpModel)downUpModel resultBlock:(void(^)(CSFileDownUpModel *csFileModel))resultBlock
  320. {
  321. NSString *sql = downUpModel == DownUpModelDown?[NSString stringWithFormat:@"select * from downTransFileList where sid = '%@' and name = '%@' and isdir = %d and file_category = %ld",sid,name,isdir,category]:[NSString stringWithFormat:@"select * from upTransFileList where sid != '%@' and name = '%@' and isdir = %d and file_category = %ld",sid,name,isdir,category];
  322. [self.dbOperation quaryDBbySQL:sql result:^(NSMutableArray *array) {
  323. //dict array;
  324. NSArray *modelArray = [CSFileDownUpModel mj_objectArrayWithKeyValuesArray:array];
  325. if (modelArray.count) {
  326. resultBlock(modelArray[0]);
  327. }else resultBlock(nil);
  328. }];
  329. }
  330. - (void)getCSDownUpFolderAndSetSameStatusWithID:(NSString *)sid downUpModel:(DownUpModel)downUpModel
  331. {
  332. NSString *sql = downUpModel == DownUpModelDown?[NSString stringWithFormat:@"select * from downTransFileList where sid = '%@' and downUpStatus = %d",sid,DownUpStatusSuccess]:[NSString stringWithFormat:@"select * from upTransFileList where sid != '%@' and downUpStatus = %d",sid,DownUpStatusSuccess];
  333. [self.dbOperation quaryDBbySQL:sql result:^(NSMutableArray *array) {
  334. //dict array;
  335. NSArray *modelArray = [CSFileDownUpModel mj_objectArrayWithKeyValuesArray:array];
  336. if (modelArray.count) {
  337. CSFileDownUpModel *csFileDownUpModel = modelArray[0];
  338. NSString *sql = [NSString stringWithFormat:@"update %@ set downUpStatus = %d where sid = '%@'",csFileDownUpModel.downUpType == DownUpModelDown?downTransFileList:upTransFileList,csFileDownUpModel.downUpStatus,csFileDownUpModel.sid];
  339. [self.dbOperation addDataToDBWithSQL:sql];
  340. }
  341. }];
  342. }
  343. //+ (void)getCSDownUpFileWithMD5:(NSString *)md5 filename:(NSString *)filename downUpModel:(DownUpModel)downUpModel resultBlock:(void(^)(CSFileDownUpModel *csFileModel))resultBlock
  344. //{
  345. // NSString *sql = downUpModel == DownUpModelDown?[NSString stringWithFormat:@"select * from downTransFileList where md5 = '%@' and name = '%@'",md5,filename]:[NSString stringWithFormat:@"select * from upTransFileList where md5 = '%@' and name = '%@'",md5,filename];
  346. // [DBOperation quaryDBbySQL:sql result:^(NSMutableArray *array) {
  347. //
  348. // //dict array;
  349. // NSArray *modelArray = [CSFileDownUpModel mj_objectArrayWithKeyValuesArray:array];
  350. //
  351. // if (modelArray.count) {
  352. // resultBlock(modelArray[0]);
  353. // }else resultBlock(nil);
  354. //
  355. // }];
  356. //}
  357. - (void)getSubFileFolderDownFileWithPid:(NSString *)pid ResultBlock:(void(^)(NSArray *result))resultBlock
  358. {
  359. NSString *sql = [NSString stringWithFormat:@"select * from %@ where pid = '%@'",downTransFileList,pid];
  360. #warning 是否加入file_category != 0
  361. [self.dbOperation quaryDBbySQL:sql result:^(NSMutableArray *array) {
  362. //dict array;
  363. NSArray *modelArray = [CSFileDownUpModel mj_objectArrayWithKeyValuesArray:array];
  364. if (modelArray.count) {
  365. resultBlock(modelArray);
  366. }else resultBlock(nil);
  367. }];
  368. }
  369. - (void)getSubFileFolderDownSuccessFileWithPid:(NSString *)pid ResultBlock:(void(^)(NSArray *result))resultBlock
  370. {
  371. //文件and 子文件都成功的文件夹
  372. //先获取所有目标的文件和文件夹,再进行文件夹的判断.
  373. NSString *sql = [NSString stringWithFormat:@"select * from %@ where (downUpStatus = %d and pid = '%@' and isdir = 0) or (pid = '%@' and isdir = 1)",downTransFileList,DownUpStatusSuccess,pid,pid];
  374. [self.dbOperation quaryDBbySQL:sql result:^(NSMutableArray *array) {
  375. //dict array;
  376. NSArray *modelArray = [CSFileDownUpModel mj_objectArrayWithKeyValuesArray:array];
  377. NSMutableArray *tempArray = [NSMutableArray array];
  378. for (CSFileDownUpModel *csFileDownUpModel in modelArray) {
  379. if (!csFileDownUpModel.isdir) {
  380. [tempArray addObject:csFileDownUpModel];
  381. }else{
  382. [self judgeFileFolderDownUpResultWithWithPid:csFileDownUpModel.sid downUpModel:csFileDownUpModel.downUpType resultBlock:^(DownUpStatus downUpStatus, NSArray *totalSubFileModels) {
  383. if (downUpStatus == DownUpStatusSuccess) {
  384. csFileDownUpModel.subFileDownUpModels = totalSubFileModels;
  385. //success 动态调整.
  386. csFileDownUpModel.downUpStatus = DownUpStatusSuccess;
  387. [tempArray addObject:csFileDownUpModel];
  388. }
  389. }];
  390. }
  391. }
  392. if (tempArray.count) {
  393. resultBlock(tempArray);
  394. }else resultBlock(nil);
  395. }];
  396. }
  397. - (void)getSubFileFolderDownUnFinishedFileWithPid:(NSString *)pid ResultBlock:(void(^)(NSArray *result))resultBlock
  398. {
  399. NSString * sql = [NSString stringWithFormat:@"select * from %@ where (downUpStatus != %d and pid = '%@' and isdir = 0) or (pid = '%@' and isdir = 1)",downTransFileList,DownUpStatusSuccess,pid,pid];;
  400. //[NSString stringWithFormat:@"select * from %@ where (downUpStatus != %d and pid = '%@')",downTransFileList,DownUpStatusSuccess,pid];
  401. [self.dbOperation quaryDBbySQL:sql result:^(NSMutableArray *array) {
  402. //dict array;
  403. NSArray *modelArray = [CSFileDownUpModel mj_objectArrayWithKeyValuesArray:array];
  404. NSMutableArray *tempArray = [NSMutableArray array];
  405. for (CSFileDownUpModel *csFileDownUpModel in modelArray) {
  406. if (!csFileDownUpModel.isdir) {
  407. [tempArray addObject:csFileDownUpModel];
  408. }else{
  409. [self judgeFileFolderDownUpResultWithWithPid:csFileDownUpModel.sid downUpModel:csFileDownUpModel.downUpType resultBlock:^(DownUpStatus downUpStatus,NSArray *totalSubFileModels) {
  410. if (downUpStatus != DownUpStatusSuccess) {
  411. csFileDownUpModel.subFileDownUpModels = totalSubFileModels;
  412. csFileDownUpModel.downUpStatus = downUpStatus;
  413. [tempArray addObject:csFileDownUpModel];
  414. }
  415. }];
  416. }
  417. }
  418. if (tempArray.count) {
  419. resultBlock(tempArray);
  420. }else resultBlock(nil);
  421. }];
  422. }
  423. - (void)getSubFileFolderUpFileWithPid:(NSString *)pid ResultBlock:(void(^)(NSArray *result))resultBlock
  424. {
  425. NSString *sql = nil;
  426. if (!pid || [pid isEqualToString:@"0"]) {
  427. sql = [NSString stringWithFormat:@"select * from %@ where file_category = 0",upTransFileList];
  428. }else sql = [NSString stringWithFormat:@"select * from %@ where pid = '%@'",upTransFileList,pid];
  429. [self.dbOperation quaryDBbySQL:sql result:^(NSMutableArray *array) {
  430. //dict array;
  431. NSArray *modelArray = [CSFileDownUpModel mj_objectArrayWithKeyValuesArray:array];
  432. if (modelArray.count) {
  433. resultBlock(modelArray);
  434. }else resultBlock(nil);
  435. }];
  436. }
  437. - (void)getSubFileFolderUpSuccessFileWithPid:(NSString *)pid ResultBlock:(void(^)(NSArray *result))resultBlock
  438. {
  439. NSString *sql = nil;
  440. if (!pid || [pid isEqualToString:@"0"]) {
  441. sql = [NSString stringWithFormat:@"select * from %@ where downUpStatus = %d and file_category = 0",upTransFileList,DownUpStatusSuccess];
  442. }else sql = [NSString stringWithFormat:@"select * from %@ where downUpStatus = %d and pid = '%@'",upTransFileList,DownUpStatusSuccess,pid];
  443. [self.dbOperation quaryDBbySQL:sql result:^(NSMutableArray *array) {
  444. //dict array;
  445. NSArray *modelArray = [CSFileDownUpModel mj_objectArrayWithKeyValuesArray:array];
  446. if (modelArray.count) {
  447. resultBlock(modelArray);
  448. }else resultBlock(nil);
  449. }];
  450. }
  451. - (void)getSubFileFolderUpUnFinishedFileWithPid:(NSString *)pid ResultBlock:(void(^)(NSArray *result))resultBlock
  452. {
  453. NSString *sql = nil;
  454. if (!pid || [pid isEqualToString:@"0"]) {
  455. sql = [NSString stringWithFormat:@"select * from %@ where downUpStatus != %d and file_category = 0",upTransFileList,DownUpStatusSuccess];
  456. }else sql = [NSString stringWithFormat:@"select * from %@ where downUpStatus != %d and pid = '%@'",upTransFileList,DownUpStatusSuccess,pid];
  457. [self.dbOperation quaryDBbySQL:sql result:^(NSMutableArray *array) {
  458. // 排序doing的在前.
  459. //dict array;
  460. NSArray *modelArray = [CSFileDownUpModel mj_objectArrayWithKeyValuesArray:array];
  461. if (modelArray.count) {
  462. resultBlock(modelArray);
  463. }else resultBlock(nil);
  464. }];
  465. }
  466. - (void)deleteCSFileToDB:(CSFileModel *)csFile
  467. {
  468. }
  469. - (void)deleteCSDownUpFiles:(NSArray *)csFiles downUpType:(DownUpModel)downUpModel ResultBlock:(void(^)(NSArray *fileResult))resultBlock;
  470. {
  471. NSMutableArray *tempAllFilesArray = [NSMutableArray array];
  472. NSMutableArray *tempUUIDsSqlArray =[NSMutableArray array];
  473. NSString *tableName = (downUpModel == DownUpModelDown?downTransFileList:upTransFileList);
  474. for (CSFileDownUpModel *downUpFileModel in csFiles) {
  475. [tempAllFilesArray addObject:downUpFileModel];
  476. if (downUpFileModel.isdir) {
  477. [self getAllCSDownUpFilesFoldersWithPid:downUpFileModel.sid isdir:2 downUpModel:downUpFileModel.downUpType resultBlock:^(NSArray *downUpModels) {
  478. [tempAllFilesArray addObjectsFromArray:downUpModels];
  479. }];
  480. }
  481. }
  482. for (CSFileDownUpModel *csFileDownUpModel in tempAllFilesArray) {
  483. NSString *sql = [NSString stringWithFormat:@"delete from %@ where downUpUUID = '%@'",tableName,csFileDownUpModel.downUpUUID];
  484. [tempUUIDsSqlArray addObject:sql];
  485. }
  486. [self.dbOperation addDatasToDBWithSQLs:tempUUIDsSqlArray];
  487. if (resultBlock) {
  488. resultBlock(tempAllFilesArray);
  489. }
  490. }
  491. - (void)updateCSFiletoDB:(CSFileModel *)csFile
  492. {
  493. }
  494. - (void)updateCSDownUpFileStatusWithCSFileDownUpModel:(CSFileDownUpModel *)csFileDownUpModel
  495. {
  496. #warning md5 和name相同的文件,则会全部更新
  497. NSString *sql = nil;
  498. if (!csFileDownUpModel.isdir) {
  499. if (csFileDownUpModel.localRootPath) {
  500. sql = [NSString stringWithFormat:@"update %@ set downUpStatus = %d,downUpSize = %ld, localRootPath = '%@' where md5 = '%@' and name = '%@';",csFileDownUpModel.downUpType == DownUpModelDown?downTransFileList:upTransFileList,csFileDownUpModel.downUpStatus,csFileDownUpModel.downUpSize,csFileDownUpModel.localRootPath,csFileDownUpModel.md5,csFileDownUpModel.name];
  501. }else sql = [NSString stringWithFormat:@"update %@ set downUpStatus = %d,downUpSize = %ld where md5 = '%@' and name = '%@';",csFileDownUpModel.downUpType == DownUpModelDown?downTransFileList:upTransFileList,csFileDownUpModel.downUpStatus,csFileDownUpModel.downUpSize,csFileDownUpModel.md5,csFileDownUpModel.name];
  502. }else{
  503. sql = [NSString stringWithFormat:@"update %@ set downUpStatus = %d where sid = '%@'",csFileDownUpModel.downUpType == DownUpModelDown?downTransFileList:upTransFileList,csFileDownUpModel.downUpStatus,csFileDownUpModel.sid];
  504. }
  505. [self.dbOperation addDataToDBWithSQL:sql];
  506. //同时更新relationlist,如果downupsize不断累加=size-> 累加到父节点上.
  507. //获取父节点,如果父节点
  508. }
  509. - (void)updateCSDownUpFileStatusWithCSFileDownUpModels:(NSArray *)csFileDownUpModels downUpType:(DownUpModel)downUpType downUpStatus:(DownUpStatus)downUpStatus
  510. {
  511. NSString *tableName = (downUpType == DownUpModelDown?downTransFileList:upTransFileList);
  512. NSMutableArray *sqlsArray = [NSMutableArray array];
  513. for (CSFileDownUpModel *csFileDownUpModel in csFileDownUpModels) {
  514. NSString *sql = nil;
  515. if (csFileDownUpModel.isdir) {
  516. sql = [NSString stringWithFormat:@"UPDATE %@ set downUpStatus = %d where downUpUUID = '%@'",tableName,downUpStatus,csFileDownUpModel.downUpUUID];
  517. }else{
  518. sql = [NSString stringWithFormat:@"UPDATE %@ set downUpStatus = %d where md5 = '%@' and name = '%@'",tableName,downUpStatus,csFileDownUpModel.md5,csFileDownUpModel.name];
  519. }
  520. [sqlsArray addObject:sql];
  521. }
  522. [self.dbOperation addDatasToDBWithSQLs:sqlsArray];
  523. }
  524. - (void)updateCSDownUpFileIDWithCSFileDownUpModel:(CSFileDownUpModel *)csFileDownUpModel sid:(NSString *)sid
  525. {
  526. NSString *sql = [NSString stringWithFormat:@"update %@ set sid = '%@' where downUpUUID = '%@';",csFileDownUpModel.downUpType == DownUpModelDown?downTransFileList:upTransFileList,sid,csFileDownUpModel.downUpUUID];
  527. [self.dbOperation addDataToDBWithSQL:sql];
  528. }
  529. - (void)updateCSDownUpFileLocalPathWithCSFileDownUpModel:(CSFileDownUpModel *)csFileDownUpModel newLocalPath:(NSString *)newLocalPath
  530. {
  531. NSString *sql = [NSString stringWithFormat:@"update %@ set localRootPath = '%@' where downUpUUID = '%@';",csFileDownUpModel.downUpType == DownUpModelDown?downTransFileList:upTransFileList,newLocalPath,csFileDownUpModel.downUpUUID];
  532. [self.dbOperation addDataToDBWithSQL:sql];
  533. }
  534. - (void)updateDataDBWithTableName:(NSString *)tableName model:(id)model whereSql:(NSString *)whereSql
  535. {
  536. /*
  537. UPDATE table_name
  538. SET column1 = value1, column2 = value2...., columnN = valueN
  539. WHERE [condition];
  540. */
  541. // sqlite> UPDATE COMPANY SET ADDRESS = 'Texas' WHERE ID = 6;
  542. }
  543. - (void)deleteDataDBWIthTableName:(NSString *)tableName whereSql:(NSString *)whereSql
  544. {
  545. //if wheresql = nil, clear all table
  546. // sqlite> DELETE FROM COMPANY WHERE SQL;
  547. }
  548. @end