From: Bartek Przybylski Date: Sat, 19 May 2012 17:07:54 +0000 (+0200) Subject: removing file on sync X-Git-Tag: oc-android-1.4.3~410 X-Git-Url: http://git.linex4red.de/pub/Android/ownCloud.git/commitdiff_plain/8d7a02918d688dc2c4a33f066fee372da896dea8?hp=-c removing file on sync --- 8d7a02918d688dc2c4a33f066fee372da896dea8 diff --git a/src/eu/alefzero/owncloud/datamodel/FileDataStorageManager.java b/src/eu/alefzero/owncloud/datamodel/FileDataStorageManager.java index 4ec57980..a7669574 100644 --- a/src/eu/alefzero/owncloud/datamodel/FileDataStorageManager.java +++ b/src/eu/alefzero/owncloud/datamodel/FileDataStorageManager.java @@ -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}); } } diff --git a/src/eu/alefzero/owncloud/syncadapter/FileSyncAdapter.java b/src/eu/alefzero/owncloud/syncadapter/FileSyncAdapter.java index 9350d82b..1e1a5e37 100644 --- a/src/eu/alefzero/owncloud/syncadapter/FileSyncAdapter.java +++ b/src/eu/alefzero/owncloud/syncadapter/FileSyncAdapter.java @@ -19,6 +19,8 @@ package eu.alefzero.owncloud.syncadapter; import java.io.IOException; +import java.net.URLDecoder; +import java.util.Vector; import org.apache.jackrabbit.webdav.DavException; import org.apache.jackrabbit.webdav.MultiStatus; @@ -45,6 +47,8 @@ import eu.alefzero.webdav.WebdavEntry; */ public class FileSyncAdapter extends AbstractOwnCloudSyncAdapter { + private long mCurrentSyncTime; + public FileSyncAdapter(Context context, boolean autoInitialize) { super(context, autoInitialize); } @@ -68,7 +72,7 @@ public class FileSyncAdapter extends AbstractOwnCloudSyncAdapter { PropFindMethod query; try { - Log.e("ASD", getUri().toString()); + mCurrentSyncTime = System.currentTimeMillis(); query = new PropFindMethod(getUri().toString() + "/"); getClient().executeMethod(query); MultiStatus resp = null; @@ -111,8 +115,13 @@ public class FileSyncAdapter extends AbstractOwnCloudSyncAdapter { if (parentId == 0) parentId = file.getFileId(); if (we.contentType().equals("DIR")) - fetchData(getUri().toString() + we.path(), syncResult, - file.getFileId()); + fetchData(getUri().toString() + we.path(), syncResult, file.getFileId()); + } + Vector files = getStorageManager().getDirectoryContent( + getStorageManager().getFileById(parentId)); + for (OCFile file : files) { + if (file.getLastSyncDate() != mCurrentSyncTime && file.getLastSyncDate() != 0) + getStorageManager().removeFile(file); } } catch (OperationCanceledException e) { e.printStackTrace(); @@ -129,11 +138,12 @@ public class FileSyncAdapter extends AbstractOwnCloudSyncAdapter { } private OCFile fillOCFile(WebdavEntry we) { - OCFile file = new OCFile(we.path()); + OCFile file = new OCFile(URLDecoder.decode(we.path())); file.setCreationTimestamp(we.createTimestamp()); file.setFileLength(we.contentLength()); file.setMimetype(we.contentType()); file.setModificationTimestamp(we.modifiedTimesamp()); + file.setLastSyncDate(mCurrentSyncTime); return file; }