Эх сурвалжийг харах

Merge pull request #1487 from owncloud/reliable_uploads_actions_uploads_view__review_data

Use Upload End Time in Uploads View
Juan Carlos González Cabrero 9 жил өмнө
parent
commit
2dc34bb703

+ 7 - 0
src/com/owncloud/android/datamodel/UploadsStorageManager.java

@@ -32,6 +32,7 @@ import com.owncloud.android.lib.common.operations.RemoteOperationResult;
 import com.owncloud.android.lib.common.utils.Log_OC;
 import com.owncloud.android.operations.UploadFileOperation;
 
+import java.util.Calendar;
 import java.util.Observable;
 
 /**
@@ -145,6 +146,7 @@ public class UploadsStorageManager extends Observable {
         cv.put(ProviderTableMeta.UPLOADS_ACCOUNT_NAME, ocUpload.getAccountName());
         cv.put(ProviderTableMeta.UPLOADS_STATUS, ocUpload.getUploadStatus().value);
         cv.put(ProviderTableMeta.UPLOADS_LAST_RESULT, ocUpload.getLastResult().getValue());
+        cv.put(ProviderTableMeta.UPLOADS_UPLOAD_END_TIMESTAMP, ocUpload.getUploadEndTimestamp());
 
         int result = getDB().update(ProviderTableMeta.CONTENT_URI_UPLOADS,
                 cv,
@@ -189,6 +191,10 @@ public class UploadsStorageManager extends Observable {
             upload.setUploadStatus(status);
             upload.setLastResult(result);
             upload.setRemotePath(remotePath);
+            if (status == UploadStatus.UPLOAD_SUCCEEDED) {
+                upload.setUploadEndTimestamp(Calendar.getInstance().getTimeInMillis());
+            }
+
             // store update upload object to db
             r = updateUpload(upload);
 
@@ -439,6 +445,7 @@ public class UploadsStorageManager extends Observable {
                     c.getColumnIndex(ProviderTableMeta.UPLOADS_IS_WHILE_CHARGING_ONLY)) == 1);
             upload.setUseWifiOnly(c.getInt(
                     c.getColumnIndex(ProviderTableMeta.UPLOADS_IS_WIFI_ONLY)) == 1);
+            upload.setUploadEndTimestamp(c.getLong(c.getColumnIndex(ProviderTableMeta.UPLOADS_UPLOAD_END_TIMESTAMP)));
             upload.setLastResult(UploadResult.fromValue(
                     c.getInt(c.getColumnIndex(ProviderTableMeta.UPLOADS_LAST_RESULT))));
             upload.setCreatedBy(c.getInt(c.getColumnIndex(ProviderTableMeta.UPLOADS_CREATED_BY)));

+ 16 - 3
src/com/owncloud/android/db/OCUpload.java

@@ -106,6 +106,11 @@ public class OCUpload implements Parcelable {
      */
     private int mCreatedBy;
 
+    /*
+     * When the upload ended
+     */
+    private long mUploadEndTimeStamp;
+
 
     /**
      * Main constructor
@@ -309,7 +314,6 @@ public class OCUpload implements Parcelable {
         return mIsWhileChargingOnly;
     }
 
-
     public void setCreatedBy(int createdBy) {
         mCreatedBy = createdBy;
     }
@@ -318,6 +322,13 @@ public class OCUpload implements Parcelable {
         return mCreatedBy;
     }
 
+    public void setUploadEndTimestamp(long uploadEndTimestamp) {
+        mUploadEndTimeStamp = uploadEndTimestamp;
+    }
+
+    public long getUploadEndTimestamp(){
+        return mUploadEndTimeStamp;
+    }
 
     /**
      * For debugging purposes only.
@@ -339,7 +350,7 @@ public class OCUpload implements Parcelable {
     public void removeAllUploadRestrictions() {
         setUseWifiOnly(false);
         setWhileChargingOnly(false);
-        //setUploadTimestamp(0);
+        setUploadEndTimestamp(0);
     }
 
     /**
@@ -405,6 +416,7 @@ public class OCUpload implements Parcelable {
         } catch (IllegalArgumentException x) {
             mUploadStatus = UploadStatus.UPLOAD_IN_PROGRESS;
         }
+        mUploadEndTimeStamp = source.readLong();
         try {
             mLastResult = UploadResult.valueOf(source.readString());
         } catch (IllegalArgumentException x) {
@@ -431,6 +443,7 @@ public class OCUpload implements Parcelable {
         dest.writeInt(mIsUseWifiOnly ? 1 : 0);
         dest.writeInt(mIsWhileChargingOnly ? 1 : 0);
         dest.writeString(mUploadStatus.name());
+        dest.writeLong(mUploadEndTimeStamp);
         dest.writeString(((mLastResult == null) ? "" : mLastResult.name()));
         dest.writeInt(mCreatedBy);
     }
@@ -485,7 +498,7 @@ public class OCUpload implements Parcelable {
      */
     public String getUploadLaterReason(Context context) {
         StringBuilder reason = new StringBuilder();
-        Date now = new Date();
+        //Date now = new Date();
         if (isUseWifiOnly() && !UploadUtils.isConnectedViaWiFi(context)) {
             if (reason.length() > 0) {
                 reason.append(context.getString(R.string.uploads_view_later_reason_add_wifi_reason));

+ 1 - 1
src/com/owncloud/android/db/ProviderMeta.java

@@ -145,7 +145,7 @@ public class ProviderMeta {
         public static final String UPLOADS_IS_CREATE_REMOTE_FOLDER = "is_create_remote_folder";
         public static final String UPLOADS_IS_WHILE_CHARGING_ONLY = "is_while_charging_only";
         public static final String UPLOADS_IS_WIFI_ONLY = "is_wifi_only";
-        public static final String UPLOADS_UPLOAD_TIMESTAMP = "upload_timestamp";
+        public static final String UPLOADS_UPLOAD_END_TIMESTAMP = "upload_end_timestamp";
         public static final String UPLOADS_LAST_RESULT = "last_result";
         public static final String UPLOADS_CREATED_BY = "created_by";
 

+ 1 - 1
src/com/owncloud/android/providers/FileContentProvider.java

@@ -857,7 +857,7 @@ public class FileContentProvider extends ContentProvider {
                 + ProviderTableMeta.UPLOADS_IS_CREATE_REMOTE_FOLDER + " INTEGER, "  // boolean
                 + ProviderTableMeta.UPLOADS_IS_WHILE_CHARGING_ONLY + " INTEGER, "  // boolean
                 + ProviderTableMeta.UPLOADS_IS_WIFI_ONLY + " INTEGER, " // boolean
-                + ProviderTableMeta.UPLOADS_UPLOAD_TIMESTAMP + " INTEGER, "
+                + ProviderTableMeta.UPLOADS_UPLOAD_END_TIMESTAMP + " INTEGER, "
                 + ProviderTableMeta.UPLOADS_LAST_RESULT + " INTEGER, "     // Upload LastResult
                 + ProviderTableMeta.UPLOADS_CREATED_BY + " INTEGER );"    // Upload createdBy
         );

+ 11 - 9
src/com/owncloud/android/ui/adapter/ExpandableUploadListAdapter.java

@@ -92,18 +92,20 @@ public class ExpandableUploadListAdapter extends BaseExpandableListAdapter imple
 
         public Comparator<OCUpload> comparator = new Comparator<OCUpload>() {
             @Override
-            public int compare(OCUpload lhs, OCUpload rhs) {
-                return compareUploadId(lhs, rhs);
+            public int compare(OCUpload upload1, OCUpload upload2) {
+                if (upload1.getUploadEndTimestamp() == 0) {
+                    return compareUploadId(upload1, upload2);
+                } else {
+                    return compareUpdateTime(upload1, upload2);
+                }
             }
 
-            private int compareUploadId(OCUpload lsh, OCUpload rsh) {
-                return Long.valueOf(lsh.getUploadId()).compareTo(rsh.getUploadId());
+            private int compareUploadId(OCUpload upload1, OCUpload upload2) {
+                return Long.valueOf(upload1.getUploadId()).compareTo(upload2.getUploadId());
             }
 
-            private int compareUpdateTime(OCUpload lhs, OCUpload rhs) {
-                long lLastModified = new File(lhs.getLocalPath()).lastModified();
-                long rLastModified = new File(rhs.getLocalPath()).lastModified();
-                return Long.valueOf(rLastModified).compareTo(lLastModified);
+            private int compareUpdateTime(OCUpload upload1, OCUpload upload2) {
+                return Long.valueOf(upload2.getUploadEndTimestamp()).compareTo(upload1.getUploadEndTimestamp());
             }
         };
 
@@ -231,7 +233,7 @@ public class ExpandableUploadListAdapter extends BaseExpandableListAdapter imple
 
             //* upload date
             TextView uploadDateTextView = (TextView) view.findViewById(R.id.upload_date);
-            long updateTime = (new File(upload.getLocalPath())).lastModified();
+            long updateTime = upload.getUploadEndTimestamp();//(new File(upload.getLocalPath())).lastModified();
             CharSequence dateString = DisplayUtils.getRelativeDateTimeString(
                     mParentActivity,
                     updateTime,