X-Git-Url: http://git.linex4red.de/pub/Android/ownCloud.git/blobdiff_plain/ef45634ffe1978a8717d60af6feb5d61968eac39..890bf7fa51135aa24e07ab8d02c002b22a66716a:/src/eu/alefzero/owncloud/datamodel/FileDataStorageManager.java diff --git a/src/eu/alefzero/owncloud/datamodel/FileDataStorageManager.java b/src/eu/alefzero/owncloud/datamodel/FileDataStorageManager.java index a7669574..0ad0d1bb 100644 --- a/src/eu/alefzero/owncloud/datamodel/FileDataStorageManager.java +++ b/src/eu/alefzero/owncloud/datamodel/FileDataStorageManager.java @@ -18,6 +18,8 @@ package eu.alefzero.owncloud.datamodel; +import java.io.File; +import java.util.Collections; import java.util.Vector; import eu.alefzero.owncloud.db.ProviderMeta.ProviderTableMeta; @@ -27,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; @@ -56,8 +59,8 @@ public class FileDataStorageManager implements DataStorageManager { OCFile file = null; if (c.moveToFirst()) { file = createFileInstance(c); - c.close(); } + c.close(); return file; } @@ -67,8 +70,8 @@ public class FileDataStorageManager implements DataStorageManager { OCFile file = null; if (c.moveToFirst()) { file = createFileInstance(c); - c.close(); } + c.close(); return file; } @@ -93,15 +96,17 @@ public class FileDataStorageManager implements DataStorageManager { cv.put(ProviderTableMeta.FILE_NAME, file.getFileName()); if (file.getParentId() != 0) cv.put(ProviderTableMeta.FILE_PARENT, file.getParentId()); - cv.put(ProviderTableMeta.FILE_PATH, file.getPath()); - cv.put(ProviderTableMeta.FILE_STORAGE_PATH, file.getStoragePath()); + cv.put(ProviderTableMeta.FILE_PATH, file.getRemotePath()); + 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.getPath())) { - OCFile tmpfile = getFileByPath(file.getPath()); + 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; @@ -205,6 +210,9 @@ public class FileDataStorageManager implements DataStorageManager { } c.close(); + + Collections.sort(ret); + return ret; } return null; @@ -274,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 existing file and bind it with current account + File sdCard = Environment.getExternalStorageDirectory(); + File f = new File(sdCard.getAbsolutePath() + "/owncloud/" + mAccount.name + file.getURLDecodedRemotePath()); + if (f.exists()) + file.setStoragePath(f.getAbsolutePath()); + } + } file.setFileLength(c.getLong(c .getColumnIndex(ProviderTableMeta.FILE_CONTENT_LENGTH))); file.setCreationTimestamp(c.getLong(c @@ -305,6 +322,9 @@ public class FileDataStorageManager implements DataStorageManager { ProviderTableMeta.FILE_ACCOUNT_OWNER+"=?", new String[]{mAccount.name}); } + if (file.getStoragePath() != null) { + new File(file.getStoragePath()).delete(); + } } }