Merge remote-tracking branch 'origin/master' into cancel_in_upload
[pub/Android/ownCloud.git] / src / com / owncloud / android / syncadapter / FileSyncAdapter.java
index e55d618..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
@@ -343,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