Browse Source

new tableAutomaticUpload

Marino Faggiana 8 years ago
parent
commit
2f5fd9f968

+ 1 - 2
iOSClient/Activity/CCActivity.m

@@ -162,8 +162,7 @@
     else
         predicate = [NSPredicate predicateWithFormat:@"(account == %@) AND (verbose == %lu) AND (date > %@)", app.activeAccount, k_activityVerboseDefault, sixDaysAgo];
 
-    _sectionDataSource = [[NCManageDatabase sharedInstance] getAllTableActivityWithPredicate:predicate];
-    //[CCCoreData getAllTableActivityWithPredicate: predicate];
+    _sectionDataSource = [[NCManageDatabase sharedInstance] getAllActivityWithPredicate:predicate];
         
     [self reloadCollection];
 }

+ 14 - 0
iOSClient/FileSystem/NCDatabase.swift

@@ -23,6 +23,20 @@ class tableActivity: Object {
     dynamic var verbose : Bool = false
 }
 
+class tableAutomaticUpload: Object {
+    
+    dynamic var account = ""
+    dynamic var assetLocalIdentifier = ""
+    dynamic var date = Date()
+    dynamic var fileName = ""
+    dynamic var lock : Bool = false
+    dynamic var priority : Int = 0
+    dynamic var selector = ""
+    dynamic var selectorPost = ""
+    dynamic var serverUrl = ""
+    dynamic var session = ""
+}
+
 class tableCapabilities: Object {
     
     dynamic var account = ""

+ 117 - 1
iOSClient/FileSystem/NCManageDatabase.swift

@@ -129,7 +129,7 @@ class NCManageDatabase: NSObject {
         }
     }
     
-    func getAllTableActivityWithPredicate(_ predicate: NSPredicate) -> [tableActivity] {
+    func getAllActivityWithPredicate(_ predicate: NSPredicate) -> [tableActivity] {
         
         let realm = try! Realm()
 
@@ -138,6 +138,122 @@ class NCManageDatabase: NSObject {
         return Array(results)
     }
     
+    //MARK: -
+    //MARK: Table Automatic Upload
+    
+    func addAutomaticUpload(_ metadataNet: CCMetadataNet, account: String) -> Bool {
+        
+        let realm = try! Realm()
+        
+        // Verify if exists
+        let results = realm.objects(tableAutomaticUpload.self).filter("account = '\(account)' AND assetLocalIdentifier = '\(metadataNet.assetLocalIdentifier)'")
+        if (results.count > 0) {
+            return false
+        }
+        
+        try! realm.write {
+            
+            // Add new AutomaticUpload
+            let addAutomaticUpload = tableAutomaticUpload()
+            
+            addAutomaticUpload.account = account
+            addAutomaticUpload.assetLocalIdentifier = metadataNet.assetLocalIdentifier
+            addAutomaticUpload.fileName = metadataNet.fileName;
+            addAutomaticUpload.selector = metadataNet.selector;
+            addAutomaticUpload.selectorPost = metadataNet.selectorPost
+            addAutomaticUpload.serverUrl = metadataNet.serverUrl
+            addAutomaticUpload.session = metadataNet.session
+            addAutomaticUpload.priority = metadataNet.priority
+            
+            realm.add(addAutomaticUpload)
+        }
+
+        return true
+    }
+    
+    func getAutomaticUploadForAccount(_ account: String, selector: String) -> CCMetadataNet? {
+        
+        let realm = try! Realm()
+        
+        // Verify if exists
+        let results = realm.objects(tableAutomaticUpload.self).filter("account = '\(account)' AND selector = '\(selector)' AND (lock == false)")
+        if (results.count == 0) {
+            return nil
+        }
+
+        let metadataNet = CCMetadataNet()
+        
+        metadataNet.action = actionUploadAsset
+        metadataNet.assetLocalIdentifier = results[0].assetLocalIdentifier
+        metadataNet.fileName = results[0].fileName
+        metadataNet.priority = results[0].priority
+        metadataNet.selector = results[0].selector
+        metadataNet.selectorPost = results[0].selectorPost
+        metadataNet.serverUrl = results[0].serverUrl
+        metadataNet.session = results[0].session
+        metadataNet.taskStatus = Int(k_taskStatusResume)
+        
+        // Lock True
+        try! realm.write {
+            results[0].lock = true
+        }
+        
+        return metadataNet
+    }
+    
+    func getAllLockAutomaticUploadForAccount(_ account: String) -> [tableAutomaticUpload] {
+        
+        let realm = try! Realm()
+        
+        let results = realm.objects(tableAutomaticUpload.self).filter("account = '\(account)' AND (lock = true)")
+        
+        return Array(results)
+    }
+
+    func unlockAutomaticUploadForAccount(_ account: String, assetLocalIdentifier: String) {
+        
+        let realm = try! Realm()
+        
+        let results = realm.objects(tableAutomaticUpload.self).filter("account = '\(account)' AND (assetLocalIdentifier = '\(assetLocalIdentifier)')")
+        if (results.count > 0) {
+            
+            // Lock False
+            try! realm.write {
+                results[0].lock = false
+            }
+        }
+    }
+    
+    func deleteAutomaticUploadForAccount(_ account: String, assetLocalIdentifier: String) {
+        
+        let realm = try! Realm()
+        
+        let results = realm.objects(tableAutomaticUpload.self).filter("account = '\(account)' AND (assetLocalIdentifier = '\(assetLocalIdentifier)')")
+        if (results.count > 0) {
+            
+            try! realm.write {
+                realm.delete(results)
+            }
+        }
+    }
+    
+    func countAutomaticUploadForAccount(_ account: String, selector: String?) -> Int {
+        
+        let realm = try! Realm()
+        let results : Results<tableAutomaticUpload>
+        
+        if (selector == nil) {
+            
+            results = realm.objects(tableAutomaticUpload.self).filter("account = '\(account)'")
+            
+        } else {
+            
+            results = realm.objects(tableAutomaticUpload.self).filter("account = '\(account)' AND (selector = '\(selector!)')")
+        }
+        
+        return results.count
+    }
+    
     //MARK: -
     //MARK: Table Capabilities
     

+ 1 - 1
iOSClient/Settings/CCAdvanced.m

@@ -226,7 +226,7 @@
     // Email Recipents
     NSArray *toRecipents;
     
-    NSArray *activities = [[NCManageDatabase sharedInstance] getAllTableActivityWithPredicate:[NSPredicate predicateWithFormat:@"((account == %@) || (account == ''))", app.activeAccount]];
+    NSArray *activities = [[NCManageDatabase sharedInstance] getAllActivityWithPredicate:[NSPredicate predicateWithFormat:@"((account == %@) || (account == ''))", app.activeAccount]];
     
     if ([activities count] == 0) {