removing file on sync
authorBartek Przybylski <bart.p.pl@gmail.com>
Sat, 19 May 2012 17:07:54 +0000 (19:07 +0200)
committerBartek Przybylski <bart.p.pl@gmail.com>
Sat, 19 May 2012 17:07:54 +0000 (19:07 +0200)
src/eu/alefzero/owncloud/datamodel/FileDataStorageManager.java
src/eu/alefzero/owncloud/syncadapter/FileSyncAdapter.java

index 4ec5798..a766957 100644 (file)
@@ -96,6 +96,7 @@ public class FileDataStorageManager implements DataStorageManager {
         cv.put(ProviderTableMeta.FILE_PATH, file.getPath());
         cv.put(ProviderTableMeta.FILE_STORAGE_PATH, file.getStoragePath());
         cv.put(ProviderTableMeta.FILE_ACCOUNT_OWNER, mAccount.name);
+        cv.put(ProviderTableMeta.FILE_LAST_SYNC_DATE, file.getLastSyncDate());
 
         if (fileExists(file.getPath())) {
             OCFile tmpfile = getFileByPath(file.getPath());
@@ -283,20 +284,26 @@ public class FileDataStorageManager implements DataStorageManager {
                     .getColumnIndex(ProviderTableMeta.FILE_CREATION)));
             file.setModificationTimestamp(c.getLong(c
                     .getColumnIndex(ProviderTableMeta.FILE_MODIFIED)));
+            file.setLastSyncDate(c.getLong(c
+                    .getColumnIndex(ProviderTableMeta.FILE_LAST_SYNC_DATE)));
         }
         return file;
     }
     
     public void removeFile(OCFile file) {
-        Uri file_uri = Uri.withAppendedPath(ProviderTableMeta.CONTENT_URI, ""+file.getFileId());
+        Uri file_uri = Uri.withAppendedPath(ProviderTableMeta.CONTENT_URI_FILE, ""+file.getFileId());
         if (getContentProvider() != null) {
             try {
-                getContentProvider().delete(file_uri, null, null);
+                getContentProvider().delete(file_uri,
+                                            ProviderTableMeta.FILE_ACCOUNT_OWNER+"=?",
+                                            new String[]{mAccount.name});
             } catch (RemoteException e) {
                 e.printStackTrace();
             }
         } else {
-            getContentResolver().delete(file_uri, null, null);
+            getContentResolver().delete(file_uri,
+                                        ProviderTableMeta.FILE_ACCOUNT_OWNER+"=?",
+                                        new String[]{mAccount.name});
         }
     }
 
index 9350d82..1e1a5e3 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,8 @@ import eu.alefzero.webdav.WebdavEntry;
  */\r
 public class FileSyncAdapter extends AbstractOwnCloudSyncAdapter {\r
 \r
+    private long mCurrentSyncTime;\r
+    \r
     public FileSyncAdapter(Context context, boolean autoInitialize) {\r
         super(context, autoInitialize);\r
     }\r
@@ -68,7 +72,7 @@ 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
@@ -111,8 +115,13 @@ public class FileSyncAdapter extends AbstractOwnCloudSyncAdapter {
                 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 +138,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