Marino Faggiana 8 年之前
父节点
当前提交
a0cdef8192

+ 2 - 1
Picker/DocumentPickerViewController.swift

@@ -288,6 +288,7 @@ class DocumentPickerViewController: UIDocumentPickerExtensionViewController, CCN
         // remove all record
         var predicate = NSPredicate(format: "account = %@ AND directoryID = %@ AND session = ''", activeAccount!, metadataNet.directoryID!)
         NCManageDatabase.sharedInstance.deleteMetadata(predicate: predicate)
+        //let serverUrl = NCManageDatabase.sharedInstance.getServerUrl(metadata.directoryID)
         
         for metadata in metadatas as! [tableMetadata] {
             
@@ -323,7 +324,7 @@ class DocumentPickerViewController: UIDocumentPickerExtensionViewController, CCN
             }
             
             // Add record
-            _ = NCManageDatabase.sharedInstance.addMetadata(metadata, activeUrl: activeUrl!)
+            _ = NCManageDatabase.sharedInstance.addMetadata(metadata, activeUrl: activeUrl!, serverUrl: metadataNet.serverUrl)
             
             // if plist do not exists, download it
             if CCUtility.isCryptoPlistString(metadata.fileName) && FileManager.default.fileExists(atPath: "\(directoryUser!)/\(metadata.fileName)") == false {

+ 7 - 3
iOSClient/Database/NCManageDatabase.swift

@@ -1239,7 +1239,7 @@ class NCManageDatabase: NSObject {
     //MARK: -
     //MARK: Table Metadata
     
-    func addMetadata(_ metadata: tableMetadata, activeUrl: String) -> tableMetadata {
+    func addMetadata(_ metadata: tableMetadata, activeUrl: String, serverUrl: String) -> tableMetadata {
         
         let tableAccount = self.getAccountActive()
         if tableAccount == nil {
@@ -1248,7 +1248,6 @@ class NCManageDatabase: NSObject {
         
         let autoUploadFileName = self.getAccountAutoUploadFileName()
         let autoUploadDirectory = self.getAccountAutoUploadDirectory(activeUrl)
-        let serverUrl = NCManageDatabase.sharedInstance.getServerUrl(metadata.directoryID)
         
         let realm = try! Realm()
         
@@ -1267,10 +1266,11 @@ class NCManageDatabase: NSObject {
         return tableMetadata.init(value: metadata)
     }
     
-    func addMetadatas(_ metadatas: [tableMetadata], activeUrl: String, serverUrl: String) {
+    func addMetadatas(_ metadatas: [tableMetadata], activeUrl: String, serverUrl: String) -> [tableMetadata] {
         
         let autoUploadFileName = self.getAccountAutoUploadFileName()
         let autoUploadDirectory = self.getAccountAutoUploadDirectory(activeUrl)
+        var arrayMetadatas = [tableMetadata]()
         
         let realm = try! Realm()
         
@@ -1284,11 +1284,15 @@ class NCManageDatabase: NSObject {
                 } else {
                     realm.add(metadata, update: true)
                 }
+                
+                arrayMetadatas.append(tableMetadata.init(value: metadata))
             }
         }
         
         let directoryID = self.getDirectoryID(serverUrl)
         self.setDateReadDirectory(directoryID: directoryID)
+        
+        return arrayMetadatas
     }
 
     

+ 4 - 4
iOSClient/Favorites/CCSynchronize.m

@@ -110,7 +110,7 @@
 
         // Reinsert
         [[NCManageDatabase sharedInstance] deleteMetadataWithPredicate:[NSPredicate predicateWithFormat:@"fileID = %@ AND session = ''", metadata.fileID]];
-        (void)[[NCManageDatabase sharedInstance] addMetadata:metadata activeUrl:app.activeUrl];
+        (void)[[NCManageDatabase sharedInstance] addMetadata:metadata activeUrl:app.activeUrl serverUrl:metadataNet.serverUrl];
         
         // insert for test NOT favorite
         [filesEtag addObject:metadata.fileID];
@@ -274,7 +274,7 @@
                 tableMetadata *result = [[NCManageDatabase sharedInstance] getMetadataWithPredicate:[NSPredicate predicateWithFormat:@"fileID = %@", metadata.fileID]];
 
                 if (!result)
-                    (void)[[NCManageDatabase sharedInstance] addMetadata:metadata activeUrl:app.activeUrl];
+                    (void)[[NCManageDatabase sharedInstance] addMetadata:metadata activeUrl:app.activeUrl serverUrl:metadataNet.serverUrl];
               
                 // Load if different etag
                 tableDirectory *tableDirectory = [[NCManageDatabase sharedInstance] getTableDirectoryWithPredicate:[NSPredicate predicateWithFormat:@"account = %@ AND serverUrl = %@", metadataNet.account, serverUrl]];
@@ -312,7 +312,7 @@
                     tableMetadata *result = [[NCManageDatabase sharedInstance] getMetadataWithPredicate:[NSPredicate predicateWithFormat:@"fileID = %@", metadata.fileID]];
 
                     if (!result)
-                        (void)[[NCManageDatabase sharedInstance] addMetadata:metadata activeUrl:metadataNet.serverUrl];
+                        (void)[[NCManageDatabase sharedInstance] addMetadata:metadata activeUrl:metadataNet.serverUrl serverUrl:metadataNet.serverUrl];
                 }
             }
         }
@@ -455,7 +455,7 @@
             [[NCManageDatabase sharedInstance] clearDateReadWithServerUrl:serverUrl directoryID:nil];
         }
             
-        (void)[[NCManageDatabase sharedInstance] addMetadata:metadata activeUrl:serverUrl];
+        (void)[[NCManageDatabase sharedInstance] addMetadata:metadata activeUrl:serverUrl serverUrl:serverUrl];
         
         CCMetadataNet *metadataNet = [[CCMetadataNet alloc] initWithAccount:app.activeAccount];
             

+ 1 - 1
iOSClient/Main/CCMain.m

@@ -1903,7 +1903,7 @@
     }
     
     // insert in Database
-    [[NCManageDatabase sharedInstance] addMetadatas:metadatasToInsertInDB activeUrl:app.activeUrl serverUrl:metadataNet.serverUrl];
+    (void)[[NCManageDatabase sharedInstance] addMetadatas:metadatasToInsertInDB activeUrl:app.activeUrl serverUrl:metadataNet.serverUrl];
     
     // read plist
     if (!_isSearchMode)

+ 29 - 17
iOSClient/Move/CCMove.m

@@ -283,6 +283,8 @@
     // remove all record
     [[NCManageDatabase sharedInstance] deleteMetadataWithPredicate:[NSPredicate predicateWithFormat:@"account = %@ AND directoryID = %@ AND session = ''", activeAccount, metadataNet.directoryID]];
     
+    NSMutableArray *metadatasToInsertInDB = [NSMutableArray new];
+    
     for (tableMetadata *metadata in metadatas) {
         
         // do not insert crypto file
@@ -299,32 +301,42 @@
             if (isCryptoComplete == NO) continue;
         }
         
-        (void)[[NCManageDatabase sharedInstance] addMetadata:metadata activeUrl:activeUrl];
+        // Insert in Array
+        [metadatasToInsertInDB addObject:metadata];
+    }
+
+    // insert in Database
+    metadatas = [[NCManageDatabase sharedInstance] addMetadatas:metadatasToInsertInDB activeUrl:activeUrl serverUrl:metadataNet.serverUrl];
+
+    // Plist MULTI THREAD
+    dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_LOW, 0), ^{
+        
+        for (tableMetadata *metadata in metadatas) {
         
-        // if plist do not exists, download it !
-        if ([CCUtility isCryptoPlistString:metadata.fileName] && [[NSFileManager defaultManager] fileExistsAtPath:[NSString stringWithFormat:@"%@/%@", directoryUser, metadata.fileName]] == NO) {
+            if ([CCUtility isCryptoPlistString:metadata.fileName] && [[NSFileManager defaultManager] fileExistsAtPath:[NSString stringWithFormat:@"%@/%@", directoryUser, metadata.fileName]] == NO) {
             
-            // download only the directories
-            for (tableMetadata *metadataDirectory in metadatas) {
+                // download only the directories
+                for (tableMetadata *metadataDirectory in metadatas) {
                 
-                if (metadataDirectory.directory == YES && [metadataDirectory.fileName isEqualToString:metadata.fileNameData]) {
+                    if (metadataDirectory.directory == YES && [metadataDirectory.fileName isEqualToString:metadata.fileNameData]) {
                     
-                    CCMetadataNet *metadataNet = [[CCMetadataNet alloc] initWithAccount:activeAccount];
+                        CCMetadataNet *metadataNet = [[CCMetadataNet alloc] initWithAccount:activeAccount];
                     
-                    metadataNet.action = actionDownloadFile;
-                    metadataNet.downloadData = NO;
-                    metadataNet.downloadPlist = YES;
-                    metadataNet.fileID = metadata.fileID;
-                    metadataNet.selector = selectorLoadPlist;
-                    metadataNet.serverUrl = _serverUrl;
-                    metadataNet.session = k_download_session_foreground;
-                    metadataNet.taskStatus = k_taskStatusResume;
+                        metadataNet.action = actionDownloadFile;
+                        metadataNet.downloadData = NO;
+                        metadataNet.downloadPlist = YES;
+                        metadataNet.fileID = metadata.fileID;
+                        metadataNet.selector = selectorLoadPlist;
+                        metadataNet.serverUrl = _serverUrl;
+                        metadataNet.session = k_download_session_foreground;
+                        metadataNet.taskStatus = k_taskStatusResume;
                     
-                    [self addNetworkingQueue:metadataNet];
+                        [self addNetworkingQueue:metadataNet];
+                    }
                 }
             }
         }
-    }
+    });    
     
     [self.tableView reloadData];
     

+ 6 - 6
iOSClient/Networking/CCNetworking.m

@@ -913,7 +913,7 @@
         metadata.sessionSelectorPost = selectorPost;
         metadata.typeFile = k_metadataTypeFile_unknown;
         
-        metadata = [[NCManageDatabase sharedInstance] addMetadata:metadata activeUrl:_activeUrl];
+        metadata = [[NCManageDatabase sharedInstance] addMetadata:metadata activeUrl:_activeUrl serverUrl:serverUrl];
         
         [self uploadURLSession:fileName fileNamePrint:metadata.fileNamePrint serverUrl:serverUrl sessionID:uploadID session:metadata.session taskStatus:taskStatus assetLocalIdentifier:assetLocalIdentifier cryptated:cryptated onlyPlist:onlyPlist selector:selector];
     }
@@ -943,7 +943,7 @@
             metadata.sessionSelectorPost = selectorPost;
             metadata.typeFile = k_metadataTypeFile_template;
             
-            metadata = [[NCManageDatabase sharedInstance] addMetadata:metadata activeUrl:_activeUrl];
+            metadata = [[NCManageDatabase sharedInstance] addMetadata:metadata activeUrl:_activeUrl serverUrl:serverUrl];
             
             // DATA
             [self uploadURLSession:fileNameCrypto fileNamePrint:fileName serverUrl:serverUrl sessionID:uploadID session:metadata.session taskStatus:taskStatus assetLocalIdentifier:assetLocalIdentifier cryptated:cryptated onlyPlist:onlyPlist selector:selector];
@@ -1011,7 +1011,7 @@
             if ([metadata.typeFile isEqualToString: k_metadataTypeFile_image] || [metadata.typeFile isEqualToString: k_metadataTypeFile_video])
                 [[CCCrypto sharedManager] addPlistImage:[NSString stringWithFormat:@"%@/%@", _directoryUser, [fileNameCrypto stringByAppendingString:@".plist"]] fileNamePathImage:[NSTemporaryDirectory() stringByAppendingString:uploadID]];
                 
-            metadata = [[NCManageDatabase sharedInstance] addMetadata:metadata activeUrl:_activeUrl];
+            metadata = [[NCManageDatabase sharedInstance] addMetadata:metadata activeUrl:_activeUrl serverUrl:serverUrl];
                 
             // DATA
             [self uploadURLSession:fileNameCrypto fileNamePrint:fileName serverUrl:serverUrl sessionID:uploadID session:metadata.session taskStatus:taskStatus assetLocalIdentifier:assetLocalIdentifier cryptated:cryptated onlyPlist:onlyPlist selector:selector];
@@ -1077,7 +1077,7 @@
                     // -- Go to Upload --
                     [CCGraphics createNewImageFrom:metadata.fileNamePrint directoryUser:_directoryUser fileNameTo:metadata.fileID fileNamePrint:metadata.fileNamePrint size:@"m" imageForUpload:YES typeFile:metadata.typeFile writePreview:YES optimizedFileName:NO];
                 
-                    metadata = [[NCManageDatabase sharedInstance] addMetadata:metadata activeUrl:_activeUrl];
+                    metadata = [[NCManageDatabase sharedInstance] addMetadata:metadata activeUrl:_activeUrl serverUrl:serverUrl];
                 
                     [self uploadURLSession:fileName fileNamePrint:fileName serverUrl:serverUrl sessionID:uploadID session:metadata.session taskStatus:taskStatus assetLocalIdentifier:assetLocalIdentifier cryptated:cryptated onlyPlist:onlyPlist selector:selector];
                 }];
@@ -1101,7 +1101,7 @@
 #ifndef EXTENSION
             [CCGraphics createNewImageFrom:metadata.fileNamePrint directoryUser:_directoryUser fileNameTo:metadata.fileID fileNamePrint:metadata.fileNamePrint size:@"m" imageForUpload:YES typeFile:metadata.typeFile writePreview:YES optimizedFileName:NO];
 #endif
-            metadata = [[NCManageDatabase sharedInstance] addMetadata:metadata activeUrl:_activeUrl];
+            metadata = [[NCManageDatabase sharedInstance] addMetadata:metadata activeUrl:_activeUrl serverUrl:serverUrl];
             
             [self uploadURLSession:fileName fileNamePrint:fileName serverUrl:serverUrl sessionID:uploadID session:metadata.session taskStatus:taskStatus assetLocalIdentifier:assetLocalIdentifier cryptated:cryptated onlyPlist:onlyPlist selector:selector];
         }
@@ -1343,7 +1343,7 @@
         if ([CCUtility isFileNotCryptated:fileName])
             metadata.sessionTaskIdentifier = k_taskIdentifierDone;
         
-        metadata = [[NCManageDatabase sharedInstance] addMetadata:metadata activeUrl:_activeUrl];
+        metadata = [[NCManageDatabase sharedInstance] addMetadata:metadata activeUrl:_activeUrl serverUrl:serverUrl];
         [[NCManageDatabase sharedInstance] deleteMetadataWithPredicate:[NSPredicate predicateWithFormat:@"fileID = %@", sessionID]];
     }