X-Git-Url: http://git.linex4red.de/pub/Android/ownCloud.git/blobdiff_plain/435b31ba4f3597cc7a43270cd4a54fb0180956c1..5f61cb15552eb2fda01716078a9191b88cebf764:/src/eu/alefzero/owncloud/syncadapter/FileSyncAdapter.java diff --git a/src/eu/alefzero/owncloud/syncadapter/FileSyncAdapter.java b/src/eu/alefzero/owncloud/syncadapter/FileSyncAdapter.java index 9350d82b..85f9cbb3 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,10 @@ import eu.alefzero.webdav.WebdavEntry; */ public class FileSyncAdapter extends AbstractOwnCloudSyncAdapter { + private final static String TAG = "FileSyncAdapter"; + + private long mCurrentSyncTime; + public FileSyncAdapter(Context context, boolean autoInitialize) { super(context, autoInitialize); } @@ -59,7 +65,7 @@ public class FileSyncAdapter extends AbstractOwnCloudSyncAdapter { this.setStorageManager(new FileDataStorageManager(account, getContentProvider())); - Log.d("ASD", "syncing owncloud account " + account.name); + Log.d(TAG, "syncing owncloud account " + account.name); Intent i = new Intent(FileSyncService.SYNC_MESSAGE); i.putExtra(FileSyncService.IN_PROGRESS, true); @@ -68,14 +74,14 @@ 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; resp = query.getResponseBodyAsMultiStatus(); if (resp.getResponses().length > 0) { - WebdavEntry we = new WebdavEntry(resp.getResponses()[0]); + WebdavEntry we = new WebdavEntry(resp.getResponses()[0], getUri().getPath()); OCFile file = fillOCFile(we); file.setParentId(0); getStorageManager().saveFile(file); @@ -104,15 +110,20 @@ public class FileSyncAdapter extends AbstractOwnCloudSyncAdapter { MultiStatus resp = null; resp = query.getResponseBodyAsMultiStatus(); for (int i = 1; i < resp.getResponses().length; ++i) { - WebdavEntry we = new WebdavEntry(resp.getResponses()[i]); + WebdavEntry we = new WebdavEntry(resp.getResponses()[i], getUri().getPath()); OCFile file = fillOCFile(we); file.setParentId(parentId); getStorageManager().saveFile(file); 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 +140,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; }