search for already existing files
authorBartek Przybylski <bart.p.pl@gmail.com>
Sat, 26 May 2012 22:03:43 +0000 (00:03 +0200)
committerBartek Przybylski <bart.p.pl@gmail.com>
Sat, 26 May 2012 22:03:43 +0000 (00:03 +0200)
src/eu/alefzero/owncloud/datamodel/FileDataStorageManager.java
src/eu/alefzero/owncloud/files/services/FileDownloader.java

index 3733234..0e52785 100644 (file)
@@ -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
index a5ee28f..ed865b7 100644 (file)
@@ -130,6 +130,7 @@ public class FileDownloader extends Service implements OnDatatransferProgressLis
         File sdCard = Environment.getExternalStorageDirectory();\r
         File file = new File(sdCard.getAbsolutePath() + "/owncloud/" + mAccount.name + mFilePath);\r
         try {\r
+            file.getParentFile().mkdirs();\r
             file.createNewFile();\r
         } catch (IOException e) {\r
             e.printStackTrace();\r