Fixed crash when an upload is confirmed with no file selected
[pub/Android/ownCloud.git] / src / com / owncloud / android / operations / SynchronizeFileOperation.java
index 31dd5dc..8bad631 100644 (file)
@@ -40,7 +40,9 @@ import eu.alefzero.webdav.WebdavUtils;
 public class SynchronizeFileOperation extends RemoteOperation {
 
     private String TAG = SynchronizeFileOperation.class.getSimpleName();
 public class SynchronizeFileOperation extends RemoteOperation {
 
     private String TAG = SynchronizeFileOperation.class.getSimpleName();
-    //private String mRemotePath;
+    private static final int SYNC_READ_TIMEOUT = 10000;
+    private static final int SYNC_CONNECTION_TIMEOUT = 5000;
+    
     private OCFile mLocalFile;
     private OCFile mServerFile;
     private DataStorageManager mStorageManager;
     private OCFile mLocalFile;
     private OCFile mServerFile;
     private DataStorageManager mStorageManager;
@@ -88,7 +90,7 @@ public class SynchronizeFileOperation extends RemoteOperation {
                 if (mServerFile == null) {
                     /// take the duty of check the server for the current state of the file there
                     propfind = new PropFindMethod(client.getBaseUri() + WebdavUtils.encodePath(mLocalFile.getRemotePath()));
                 if (mServerFile == null) {
                     /// take the duty of check the server for the current state of the file there
                     propfind = new PropFindMethod(client.getBaseUri() + WebdavUtils.encodePath(mLocalFile.getRemotePath()));
-                    int status = client.executeMethod(propfind);
+                    int status = client.executeMethod(propfind, SYNC_READ_TIMEOUT, SYNC_CONNECTION_TIMEOUT);
                     boolean isMultiStatus = status == HttpStatus.SC_MULTI_STATUS;
                     if (isMultiStatus) {
                         MultiStatus resp = propfind.getResponseBodyAsMultiStatus();
                     boolean isMultiStatus = status == HttpStatus.SC_MULTI_STATUS;
                     if (isMultiStatus) {
                         MultiStatus resp = propfind.getResponseBodyAsMultiStatus();
@@ -111,7 +113,7 @@ public class SynchronizeFileOperation extends RemoteOperation {
                         serverChanged = (!mServerFile.getEtag().equals(mLocalFile.getEtag()));   // TODO could this be dangerous when the user upgrades the server from non-tagged to tagged?
                     } else {
                         // server without etags
                         serverChanged = (!mServerFile.getEtag().equals(mLocalFile.getEtag()));   // TODO could this be dangerous when the user upgrades the server from non-tagged to tagged?
                     } else {
                         // server without etags
-                        serverChanged = (mServerFile.getModificationTimestamp() > mLocalFile.getModificationTimestamp());
+                        serverChanged = (mServerFile.getModificationTimestamp() > mLocalFile.getModificationTimestampAtLastSyncForData());
                     }
                     boolean localChanged = (mLocalChangeAlreadyKnown || mLocalFile.getLocalModificationTimestamp() > mLocalFile.getLastSyncDateForData());
                         // TODO this will be always true after the app is upgraded to database version 3; will result in unnecessary uploads
                     }
                     boolean localChanged = (mLocalChangeAlreadyKnown || mLocalFile.getLocalModificationTimestamp() > mLocalFile.getLastSyncDateForData());
                         // TODO this will be always true after the app is upgraded to database version 3; will result in unnecessary uploads
@@ -212,7 +214,7 @@ public class SynchronizeFileOperation extends RemoteOperation {
         file.setCreationTimestamp(we.createTimestamp());
         file.setFileLength(we.contentLength());
         file.setMimetype(we.contentType());
         file.setCreationTimestamp(we.createTimestamp());
         file.setFileLength(we.contentLength());
         file.setMimetype(we.contentType());
-        file.setModificationTimestamp(we.modifiedTimesamp());
+        file.setModificationTimestamp(we.modifiedTimestamp());
         return file;
     }
 
         return file;
     }
 
@@ -221,4 +223,9 @@ public class SynchronizeFileOperation extends RemoteOperation {
         return mTransferWasRequested;
     }
 
         return mTransferWasRequested;
     }
 
+
+    public OCFile getLocalFile() {
+        return mLocalFile;
+    }
+
 }
 }