From 35ace0b97335cdb8d45b5b2be94c41e17fe9e040 Mon Sep 17 00:00:00 2001 From: Bartek Przybylski Date: Sun, 27 May 2012 00:03:43 +0200 Subject: [PATCH] search for already existing files --- .../owncloud/datamodel/FileDataStorageManager.java | 20 ++++++++++++++++---- .../owncloud/files/services/FileDownloader.java | 1 + 2 files changed, 17 insertions(+), 4 deletions(-) diff --git a/src/eu/alefzero/owncloud/datamodel/FileDataStorageManager.java b/src/eu/alefzero/owncloud/datamodel/FileDataStorageManager.java index 3733234a..0e527850 100644 --- a/src/eu/alefzero/owncloud/datamodel/FileDataStorageManager.java +++ b/src/eu/alefzero/owncloud/datamodel/FileDataStorageManager.java @@ -29,6 +29,7 @@ import android.content.ContentResolver; import android.content.ContentValues; import android.database.Cursor; import android.net.Uri; +import android.os.Environment; import android.os.RemoteException; import android.util.Log; @@ -96,14 +97,16 @@ public class FileDataStorageManager implements DataStorageManager { if (file.getParentId() != 0) cv.put(ProviderTableMeta.FILE_PARENT, file.getParentId()); cv.put(ProviderTableMeta.FILE_PATH, file.getRemotePath()); - cv.put(ProviderTableMeta.FILE_STORAGE_PATH, file.getStoragePath()); + if (!file.isDirectory()) + 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.getRemotePath())) { OCFile tmpfile = getFileByPath(file.getRemotePath()); file.setStoragePath(tmpfile.getStoragePath()); - cv.put(ProviderTableMeta.FILE_STORAGE_PATH, file.getStoragePath()); + if (!file.isDirectory()); + cv.put(ProviderTableMeta.FILE_STORAGE_PATH, file.getStoragePath()); file.setFileId(tmpfile.getFileId()); overriden = true; @@ -279,10 +282,19 @@ public class FileDataStorageManager implements DataStorageManager { file.setFileId(c.getLong(c.getColumnIndex(ProviderTableMeta._ID))); file.setParentId(c.getLong(c .getColumnIndex(ProviderTableMeta.FILE_PARENT))); - file.setStoragePath(c.getString(c - .getColumnIndex(ProviderTableMeta.FILE_STORAGE_PATH))); file.setMimetype(c.getString(c .getColumnIndex(ProviderTableMeta.FILE_CONTENT_TYPE))); + if (!file.isDirectory()) { + file.setStoragePath(c.getString(c + .getColumnIndex(ProviderTableMeta.FILE_STORAGE_PATH))); + if (file.getStoragePath() == null) { + // try to find exisiting file and bind it with current account + File sdCard = Environment.getExternalStorageDirectory(); + File f = new File(sdCard.getAbsolutePath() + "/owncloud/" + mAccount.name + file.getRemotePath()); + if (f.exists()) + file.setStoragePath(f.getAbsolutePath()); + } + } file.setFileLength(c.getLong(c .getColumnIndex(ProviderTableMeta.FILE_CONTENT_LENGTH))); file.setCreationTimestamp(c.getLong(c diff --git a/src/eu/alefzero/owncloud/files/services/FileDownloader.java b/src/eu/alefzero/owncloud/files/services/FileDownloader.java index a5ee28f8..ed865b71 100644 --- a/src/eu/alefzero/owncloud/files/services/FileDownloader.java +++ b/src/eu/alefzero/owncloud/files/services/FileDownloader.java @@ -130,6 +130,7 @@ public class FileDownloader extends Service implements OnDatatransferProgressLis File sdCard = Environment.getExternalStorageDirectory(); File file = new File(sdCard.getAbsolutePath() + "/owncloud/" + mAccount.name + mFilePath); try { + file.getParentFile().mkdirs(); file.createNewFile(); } catch (IOException e) { e.printStackTrace(); -- 2.11.0