/** * Updates states of all transfer records with the specified which are "running" and "waiting" to * "pending cancel" * * @param TransferType The type of transfers to cancel * @return Number of rows updated. */ public int cancelAllWithType(TransferType type) { ContentValues values = new ContentValues(); values.put(TransferTable.COLUMN_STATE, TransferState.PENDING_CANCEL.toString()); String selection = null; String[] selectionArgs = null; if (type == TransferType.ANY) { selection = TransferTable.COLUMN_STATE + " in (?,?,?,?,?)"; selectionArgs = new String[] { TransferState.IN_PROGRESS.toString(), TransferState.RESUMED_WAITING.toString(), TransferState.WAITING.toString(), TransferState.PAUSED.toString(), TransferState.WAITING_FOR_NETWORK.toString() }; } else { selection = TransferTable.COLUMN_STATE + " in (?,?,?,?,?) and " + TransferTable.COLUMN_TYPE + "=?"; selectionArgs = new String[] { TransferState.IN_PROGRESS.toString(), TransferState.RESUMED_WAITING.toString(), TransferState.WAITING.toString(), TransferState.PAUSED.toString(), TransferState.WAITING_FOR_NETWORK.toString(), type.toString() }; } return transferDBBase.update(transferDBBase.getContentUri(), values, selection, selectionArgs); }
/** * Generates a ContentValues object to insert into the database with the given values for a * multipart upload record. * * @param bucket The name of the bucket to upload to. * @param key The key in the specified bucket by which to store the new object. * @param file The file to upload. * @param fileOffset The byte offset for the file to upload. * @param partNumber The part number of this part. * @param uploadId The multipart upload id of the upload. * @param bytesTotal The Total bytes of the file. * @param isLastPart Whether this part is the last part of the upload. * @return The ContentValues object generated. */ public ContentValues generateContentValuesForMultiPartUpload( String bucket, String key, File file, long fileOffset, int partNumber, String uploadId, long bytesTotal, int isLastPart, ObjectMetadata metadata) { ContentValues values = new ContentValues(); values.put(TransferTable.COLUMN_TYPE, TransferType.UPLOAD.toString()); values.put(TransferTable.COLUMN_STATE, TransferState.WAITING.toString()); values.put(TransferTable.COLUMN_BUCKET_NAME, bucket); values.put(TransferTable.COLUMN_KEY, key); values.put(TransferTable.COLUMN_FILE, file.getAbsolutePath()); values.put(TransferTable.COLUMN_BYTES_CURRENT, 0l); values.put(TransferTable.COLUMN_BYTES_TOTAL, bytesTotal); values.put(TransferTable.COLUMN_IS_MULTIPART, 1); values.put(TransferTable.COLUMN_PART_NUM, partNumber); values.put(TransferTable.COLUMN_FILE_OFFSET, fileOffset); values.put(TransferTable.COLUMN_MULTIPART_ID, uploadId); values.put(TransferTable.COLUMN_IS_LAST_PART, isLastPart); values.put(TransferTable.COLUMN_IS_ENCRYPTED, 0); values.putAll(generateContentValuesForObjectMetadata(metadata)); return values; }
/** * Updates states of all transfer records which are "running" and "waiting" to "network * disconnect" * * @return Number of rows updated. */ public int updateNetworkDisconnected() { ContentValues values = new ContentValues(); values.put(TransferTable.COLUMN_STATE, TransferState.PENDING_NETWORK_DISCONNECT.toString()); return transferDBBase.update( transferDBBase.getContentUri(), values, TransferTable.COLUMN_STATE + " in (?,?,?)", new String[] { TransferState.IN_PROGRESS.toString(), TransferState.RESUMED_WAITING.toString(), TransferState.WAITING.toString() }); }
/** * Updates states of all transfer records which are "running" and "waiting" to "paused" * * @return Number of rows updated. */ public int setAllRunningRecordsToPausedBeforeShutdownService() { ContentValues values = new ContentValues(); values.put(TransferTable.COLUMN_STATE, TransferState.PAUSED.toString()); return transferDBBase.update( transferDBBase.getContentUri(), values, TransferTable.COLUMN_STATE + " in (?,?,?,?)", new String[] { TransferState.IN_PROGRESS.toString(), TransferState.PENDING_PAUSE.toString(), TransferState.RESUMED_WAITING.toString(), TransferState.WAITING.toString() }); }
/** * Generates a ContentValues object to insert into the database with the given values for a single * chunk upload or download. * * @param type The type of the transfer, can be "upload" or "download". * @param bucket The name of the bucket to upload to. * @param key The key in the specified bucket by which to store the new object. * @param file The file to upload. * @param metadata The S3 ObjectMetadata to send along with the object * @return The ContentValues object generated. */ private ContentValues generateContentValuesForSinglePartTransfer( TransferType type, String bucket, String key, File file, ObjectMetadata metadata) { ContentValues values = new ContentValues(); values.put(TransferTable.COLUMN_TYPE, type.toString()); values.put(TransferTable.COLUMN_STATE, TransferState.WAITING.toString()); values.put(TransferTable.COLUMN_BUCKET_NAME, bucket); values.put(TransferTable.COLUMN_KEY, key); values.put(TransferTable.COLUMN_FILE, file.getAbsolutePath()); values.put(TransferTable.COLUMN_BYTES_CURRENT, 0l); if (type.equals(TransferType.UPLOAD)) values.put(TransferTable.COLUMN_BYTES_TOTAL, file == null ? 0l : file.length()); values.put(TransferTable.COLUMN_IS_MULTIPART, 0); values.put(TransferTable.COLUMN_PART_NUM, 0); values.put(TransferTable.COLUMN_IS_ENCRYPTED, 0); values.putAll(generateContentValuesForObjectMetadata(metadata)); return values; }