Fixed: Rotating screen after viewing a file would return you to the
[pub/Android/ownCloud.git] / src / eu / alefzero / owncloud / syncadapter / FileSyncAdapter.java
index 9350d82..85f9cbb 100644 (file)
@@ -19,6 +19,8 @@
 package eu.alefzero.owncloud.syncadapter;\r
 \r
 import java.io.IOException;\r
+import java.net.URLDecoder;\r
+import java.util.Vector;\r
 \r
 import org.apache.jackrabbit.webdav.DavException;\r
 import org.apache.jackrabbit.webdav.MultiStatus;\r
@@ -45,6 +47,10 @@ import eu.alefzero.webdav.WebdavEntry;
  */\r
 public class FileSyncAdapter extends AbstractOwnCloudSyncAdapter {\r
 \r
+    private final static String TAG = "FileSyncAdapter"; \r
+    \r
+    private long mCurrentSyncTime;\r
+    \r
     public FileSyncAdapter(Context context, boolean autoInitialize) {\r
         super(context, autoInitialize);\r
     }\r
@@ -59,7 +65,7 @@ public class FileSyncAdapter extends AbstractOwnCloudSyncAdapter {
         this.setStorageManager(new FileDataStorageManager(account,\r
                 getContentProvider()));\r
 \r
-        Log.d("ASD", "syncing owncloud account " + account.name);\r
+        Log.d(TAG, "syncing owncloud account " + account.name);\r
 \r
         Intent i = new Intent(FileSyncService.SYNC_MESSAGE);\r
         i.putExtra(FileSyncService.IN_PROGRESS, true);\r
@@ -68,14 +74,14 @@ public class FileSyncAdapter extends AbstractOwnCloudSyncAdapter {
 \r
         PropFindMethod query;\r
         try {\r
-            Log.e("ASD", getUri().toString());\r
+            mCurrentSyncTime = System.currentTimeMillis();\r
             query = new PropFindMethod(getUri().toString() + "/");\r
             getClient().executeMethod(query);\r
             MultiStatus resp = null;\r
             resp = query.getResponseBodyAsMultiStatus();\r
 \r
             if (resp.getResponses().length > 0) {\r
-                WebdavEntry we = new WebdavEntry(resp.getResponses()[0]);\r
+                WebdavEntry we = new WebdavEntry(resp.getResponses()[0], getUri().getPath());\r
                 OCFile file = fillOCFile(we);\r
                 file.setParentId(0);\r
                 getStorageManager().saveFile(file);\r
@@ -104,15 +110,20 @@ public class FileSyncAdapter extends AbstractOwnCloudSyncAdapter {
             MultiStatus resp = null;\r
             resp = query.getResponseBodyAsMultiStatus();\r
             for (int i = 1; i < resp.getResponses().length; ++i) {\r
-                WebdavEntry we = new WebdavEntry(resp.getResponses()[i]);\r
+                WebdavEntry we = new WebdavEntry(resp.getResponses()[i], getUri().getPath());\r
                 OCFile file = fillOCFile(we);\r
                 file.setParentId(parentId);\r
                 getStorageManager().saveFile(file);\r
                 if (parentId == 0)\r
                     parentId = file.getFileId();\r
                 if (we.contentType().equals("DIR"))\r
-                    fetchData(getUri().toString() + we.path(), syncResult,\r
-                            file.getFileId());\r
+                    fetchData(getUri().toString() + we.path(), syncResult, file.getFileId());\r
+            }\r
+            Vector<OCFile> files = getStorageManager().getDirectoryContent(\r
+                    getStorageManager().getFileById(parentId));\r
+            for (OCFile file : files) {\r
+                if (file.getLastSyncDate() != mCurrentSyncTime && file.getLastSyncDate() != 0)\r
+                    getStorageManager().removeFile(file);\r
             }\r
         } catch (OperationCanceledException e) {\r
             e.printStackTrace();\r
@@ -129,11 +140,12 @@ public class FileSyncAdapter extends AbstractOwnCloudSyncAdapter {
     }\r
 \r
     private OCFile fillOCFile(WebdavEntry we) {\r
-        OCFile file = new OCFile(we.path());\r
+        OCFile file = new OCFile(URLDecoder.decode(we.path()));\r
         file.setCreationTimestamp(we.createTimestamp());\r
         file.setFileLength(we.contentLength());\r
         file.setMimetype(we.contentType());\r
         file.setModificationTimestamp(we.modifiedTimesamp());\r
+        file.setLastSyncDate(mCurrentSyncTime);\r
         return file;\r
     }\r
 \r