Merge remote-tracking branch 'origin/master' into cancel_in_upload
[pub/Android/ownCloud.git] / src / com / owncloud / android / syncadapter / FileSyncAdapter.java
index 5f59475..1e83375 100644 (file)
@@ -26,11 +26,15 @@ import org.apache.http.HttpStatus;
 import org.apache.jackrabbit.webdav.DavException;\r
 import org.apache.jackrabbit.webdav.MultiStatus;\r
 import org.apache.jackrabbit.webdav.client.methods.PropFindMethod;\r
+import org.json.JSONObject;\r
 \r
+import com.owncloud.android.AccountUtils;\r
 import com.owncloud.android.R;\r
+import com.owncloud.android.authenticator.AccountAuthenticator;\r
 import com.owncloud.android.datamodel.FileDataStorageManager;\r
 import com.owncloud.android.datamodel.OCFile;\r
 import com.owncloud.android.files.services.FileDownloader;\r
+import com.owncloud.android.utils.OwnCloudVersion;\r
 \r
 import android.accounts.Account;\r
 import android.app.Notification;\r
@@ -90,11 +94,12 @@ public class FileSyncAdapter extends AbstractOwnCloudSyncAdapter {
         mDelaysIndex = 0;\r
         mDelaysCount = 0;\r
         */\r
-        \r
-        \r
+\r
         Log.d(TAG, "syncing owncloud account " + account.name);\r
 \r
         sendStickyBroadcast(true, null);  // message to signal the start to the UI\r
+        \r
+        updateOCVersion();\r
 \r
         String uri = getUri().toString();\r
         PropFindMethod query = null;\r
@@ -114,7 +119,7 @@ public class FileSyncAdapter extends AbstractOwnCloudSyncAdapter {
                         fetchData(uri, syncResult, file.getFileId());\r
                     }\r
                 }\r
-                \r
+\r
             } else {\r
                 syncResult.stats.numAuthExceptions++;\r
             }\r
@@ -207,9 +212,10 @@ public class FileSyncAdapter extends AbstractOwnCloudSyncAdapter {
                                                                          .getModificationTimestamp()) {\r
                         Intent intent = new Intent(this.getContext(), FileDownloader.class);\r
                         intent.putExtra(FileDownloader.EXTRA_ACCOUNT, getAccount());\r
-                        intent.putExtra(FileDownloader.EXTRA_FILE_PATH, file.getRemotePath());\r
+                        intent.putExtra(FileDownloader.EXTRA_FILE, file);\r
+                        /*intent.putExtra(FileDownloader.EXTRA_FILE_PATH, file.getRemotePath());\r
                         intent.putExtra(FileDownloader.EXTRA_REMOTE_PATH, file.getRemotePath());\r
-                        intent.putExtra(FileDownloader.EXTRA_FILE_SIZE, file.getFileLength());\r
+                        intent.putExtra(FileDownloader.EXTRA_FILE_SIZE, file.getFileLength());*/\r
                         file.setKeepInSync(true);\r
                         getContext().startService(intent);\r
                     }\r
@@ -342,5 +348,32 @@ public class FileSyncAdapter extends AbstractOwnCloudSyncAdapter {
         }\r
     }\r
 \r
-    \r
+    private void updateOCVersion() {\r
+        String statUrl = getAccountManager().getUserData(getAccount(), AccountAuthenticator.KEY_OC_BASE_URL);\r
+        statUrl += AccountUtils.STATUS_PATH;\r
+        \r
+        try {\r
+            String result = getClient().getResultAsString(statUrl);\r
+            if (result != null) {\r
+                try {\r
+                    JSONObject json = new JSONObject(result);\r
+                    if (json != null && json.getString("version") != null) {\r
+                        OwnCloudVersion ocver = new OwnCloudVersion(json.getString("version"));\r
+                        if (ocver.isVersionValid()) {\r
+                            getAccountManager().setUserData(getAccount(), AccountAuthenticator.KEY_OC_VERSION, ocver.toString());\r
+                            Log.d(TAG, "Got new OC version " + ocver.toString());\r
+                        } else {\r
+                            Log.w(TAG, "Invalid version number received from server: " + json.getString("version"));\r
+                        }\r
+                    }\r
+                } catch (Throwable e) {\r
+                    Log.w(TAG, "Couldn't parse version response", e);\r
+                }\r
+            } else {\r
+                Log.w(TAG, "Problem while getting ocversion from server");\r
+            }\r
+        } catch (Exception e) {\r
+            Log.e(TAG, "Problem getting response from server", e);\r
+        }\r
+    }\r
 }\r