|
@@ -20,10 +20,14 @@
|
|
*/
|
|
*/
|
|
package com.owncloud.android.datamodel;
|
|
package com.owncloud.android.datamodel;
|
|
|
|
|
|
|
|
+import android.app.job.JobInfo;
|
|
|
|
+import android.app.job.JobScheduler;
|
|
import android.content.ContentResolver;
|
|
import android.content.ContentResolver;
|
|
import android.content.ContentValues;
|
|
import android.content.ContentValues;
|
|
|
|
+import android.content.Context;
|
|
import android.database.Cursor;
|
|
import android.database.Cursor;
|
|
import android.net.Uri;
|
|
import android.net.Uri;
|
|
|
|
+import android.os.PersistableBundle;
|
|
|
|
|
|
import com.owncloud.android.db.OCUpload;
|
|
import com.owncloud.android.db.OCUpload;
|
|
import com.owncloud.android.db.ProviderMeta.ProviderTableMeta;
|
|
import com.owncloud.android.db.ProviderMeta.ProviderTableMeta;
|
|
@@ -33,7 +37,9 @@ import com.owncloud.android.lib.common.operations.RemoteOperationResult;
|
|
import com.owncloud.android.lib.common.utils.Log_OC;
|
|
import com.owncloud.android.lib.common.utils.Log_OC;
|
|
import com.owncloud.android.operations.UploadFileOperation;
|
|
import com.owncloud.android.operations.UploadFileOperation;
|
|
|
|
|
|
|
|
+import java.util.ArrayList;
|
|
import java.util.Calendar;
|
|
import java.util.Calendar;
|
|
|
|
+import java.util.List;
|
|
import java.util.Observable;
|
|
import java.util.Observable;
|
|
|
|
|
|
/**
|
|
/**
|
|
@@ -43,6 +49,7 @@ import java.util.Observable;
|
|
public class UploadsStorageManager extends Observable {
|
|
public class UploadsStorageManager extends Observable {
|
|
|
|
|
|
private ContentResolver mContentResolver;
|
|
private ContentResolver mContentResolver;
|
|
|
|
+ private Context mContext;
|
|
private static final String AND = " AND ";
|
|
private static final String AND = " AND ";
|
|
|
|
|
|
static private final String TAG = UploadsStorageManager.class.getSimpleName();
|
|
static private final String TAG = UploadsStorageManager.class.getSimpleName();
|
|
@@ -89,11 +96,12 @@ public class UploadsStorageManager extends Observable {
|
|
|
|
|
|
}
|
|
}
|
|
|
|
|
|
- public UploadsStorageManager(ContentResolver contentResolver) {
|
|
|
|
|
|
+ public UploadsStorageManager(ContentResolver contentResolver, Context context) {
|
|
if (contentResolver == null) {
|
|
if (contentResolver == null) {
|
|
throw new IllegalArgumentException("Cannot create an instance with a NULL contentResolver");
|
|
throw new IllegalArgumentException("Cannot create an instance with a NULL contentResolver");
|
|
}
|
|
}
|
|
mContentResolver = contentResolver;
|
|
mContentResolver = contentResolver;
|
|
|
|
+ mContext = context;
|
|
}
|
|
}
|
|
|
|
|
|
/**
|
|
/**
|
|
@@ -364,12 +372,33 @@ public class UploadsStorageManager extends Observable {
|
|
* Get all uploads which are currently being uploaded or waiting in the queue to be uploaded.
|
|
* Get all uploads which are currently being uploaded or waiting in the queue to be uploaded.
|
|
*/
|
|
*/
|
|
public OCUpload[] getCurrentAndPendingUploads() {
|
|
public OCUpload[] getCurrentAndPendingUploads() {
|
|
- return getUploads(
|
|
|
|
|
|
+
|
|
|
|
+ OCUpload[] uploads = getUploads(
|
|
ProviderTableMeta.UPLOADS_STATUS + "==" + UploadStatus.UPLOAD_IN_PROGRESS.value + " OR " +
|
|
ProviderTableMeta.UPLOADS_STATUS + "==" + UploadStatus.UPLOAD_IN_PROGRESS.value + " OR " +
|
|
ProviderTableMeta.UPLOADS_LAST_RESULT + "==" + UploadResult.DELAYED_FOR_WIFI.getValue() + " OR " +
|
|
ProviderTableMeta.UPLOADS_LAST_RESULT + "==" + UploadResult.DELAYED_FOR_WIFI.getValue() + " OR " +
|
|
ProviderTableMeta.UPLOADS_LAST_RESULT + "==" + UploadResult.DELAYED_FOR_CHARGING.getValue(),
|
|
ProviderTableMeta.UPLOADS_LAST_RESULT + "==" + UploadResult.DELAYED_FOR_CHARGING.getValue(),
|
|
null
|
|
null
|
|
);
|
|
);
|
|
|
|
+
|
|
|
|
+ // add pending Jobs
|
|
|
|
+ return getPendingJobs().toArray(uploads);
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ private List<OCUpload> getPendingJobs() {
|
|
|
|
+ JobScheduler js = (JobScheduler) mContext.getSystemService(Context.JOB_SCHEDULER_SERVICE);
|
|
|
|
+
|
|
|
|
+ ArrayList<OCUpload> list = new ArrayList<>();
|
|
|
|
+
|
|
|
|
+ for (JobInfo ji: js.getAllPendingJobs()) {
|
|
|
|
+ PersistableBundle extras = ji.getExtras();
|
|
|
|
+ OCUpload upload = new OCUpload(extras.getString("filePath"),
|
|
|
|
+ extras.getString("remotePath"),
|
|
|
|
+ extras.getString("account"));
|
|
|
|
+
|
|
|
|
+ list.add(upload);
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ return list;
|
|
}
|
|
}
|
|
|
|
|
|
/**
|
|
/**
|