Advertisement
Guest User

Untitled

a guest
Jul 7th, 2015
194
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 26.11 KB | None | 0 0
  1. package com.seafile.seadroid2.transfer;
  2.  
  3. import android.content.ContentValues;
  4. import android.database.Cursor;
  5. import android.database.DatabaseUtils;
  6. import android.database.sqlite.SQLiteDatabase;
  7. import android.util.Log;
  8. import com.google.common.collect.Lists;
  9.  
  10. import java.util.List;
  11.  
  12. /**
  13. * Utils for {@link com.seafile.seadroid2.transfer.TransferDatabaseHelper}
  14. *
  15. * Created by Logan on 14/12/27.
  16. */
  17. public class TransferDatabaseUtils {
  18.  
  19. private static final String DEBUG_TAG = "TransferDatabaseUtils";
  20.  
  21. public static final String LOCAL_PATH_IS_EMPTY = "not applicable";
  22. public static final int INVALID_DOWNLOAD_SIZE = 0;
  23.  
  24. public static String downloadWhereClause = TransferDatabaseHelper.DOWNLOAD_COLUMN_REPO_ID + "=? and " +
  25. TransferDatabaseHelper.DOWNLOAD_COLUMN_PATH_IN_REPO + "=? and " +
  26. TransferDatabaseHelper.DOWNLOAD_COLUMN_ACCOUNT_SIGNATURE + "=?";
  27.  
  28. public static String uploadWhereClause = TransferDatabaseHelper.UPLOAD_COLUMN_REPO_ID + "=? and " +
  29. TransferDatabaseHelper.UPLOAD_COLUMN_PARENT_DIR + "=? and " +
  30. TransferDatabaseHelper.UPLOAD_COLUMN_LOCAL_PATH + "=? and " +
  31. TransferDatabaseHelper.UPLOAD_COLUMN_ACCOUNT_SIGNATURE + "=?";
  32.  
  33.  
  34.  
  35. // avoid duplicate inserting request
  36. public static boolean isRowDuplicate(SQLiteDatabase db, String repoID, String pathInRepo, String actSignature) {
  37.  
  38. String whereClause = TransferDatabaseHelper.DOWNLOAD_COLUMN_REPO_ID + "=? and " +
  39. TransferDatabaseHelper.DOWNLOAD_COLUMN_PATH_IN_REPO + "=? and " +
  40. TransferDatabaseHelper.DOWNLOAD_COLUMN_ACCOUNT_SIGNATURE + "=?";
  41.  
  42. String[] whereArgs = new String[] {repoID, pathInRepo, actSignature};
  43.  
  44. return isUploadRowDuplicate(db,whereClause, whereArgs, TransferDatabaseHelper.DOWNLOAD_TABLE_NAME);
  45. }
  46.  
  47. // avoid duplicate inserting request
  48. public static boolean isUploadRowDuplicate(SQLiteDatabase db, String whereClause, String[] whereArgs, String tableName) {
  49.  
  50. long count = DatabaseUtils.queryNumEntries(
  51. db,
  52. tableName,
  53. whereClause,
  54. whereArgs);
  55. return count > 0;
  56.  
  57. }
  58.  
  59. public static void saveDownloadStatus(int taskID,
  60. String repoID,
  61. String repoName,
  62. String pathInRepo,
  63. long totalSize,
  64. String actSignature) {
  65.  
  66. // Log.d(DEBUG_TAG, "add to database >> " + taskID);
  67.  
  68. SQLiteDatabase db = TransferDatabaseHelper.getInstance().getWritableDatabase();
  69. boolean isDuplicate = isRowDuplicate(db, repoID, pathInRepo, actSignature);
  70. if (isDuplicate) {
  71. // if current state is CANCELLED, update to INIT
  72. updateDownloadInitStatus(repoID, pathInRepo, actSignature);
  73. return;
  74. }
  75.  
  76. try {
  77.  
  78. ContentValues cv = new ContentValues();
  79. cv.put(TransferDatabaseHelper.DOWNLOAD_COLUMN_TASKID, taskID);
  80. cv.put(TransferDatabaseHelper.DOWNLOAD_COLUMN_STATE, TransferManager.TaskState.INIT.toString());
  81. cv.put(TransferDatabaseHelper.DOWNLOAD_COLUMN_REPO_ID, repoID);
  82. cv.put(TransferDatabaseHelper.DOWNLOAD_COLUMN_REPO_NAME, repoName);
  83. cv.put(TransferDatabaseHelper.DOWNLOAD_COLUMN_PATH_IN_REPO, pathInRepo);
  84. cv.put(TransferDatabaseHelper.DOWNLOAD_COLUMN_LOCAL_PATH, LOCAL_PATH_IS_EMPTY);
  85. cv.put(TransferDatabaseHelper.DOWNLOAD_COLUMN_TOTAL_SIZE, totalSize);
  86. cv.put(TransferDatabaseHelper.DOWNLOAD_COLUMN_DOWNLOAD_SIZE, INVALID_DOWNLOAD_SIZE);
  87. cv.put(TransferDatabaseHelper.DOWNLOAD_COLUMN_ACCOUNT_SIGNATURE, actSignature);
  88.  
  89. db.replaceOrThrow(TransferDatabaseHelper.DOWNLOAD_TABLE_NAME, null, cv);
  90.  
  91. db.close();
  92. } catch (Exception e) {
  93. if (db != null)
  94. db.close();
  95.  
  96. Log.e(DEBUG_TAG, e.toString());
  97. }
  98. }
  99.  
  100. public static void saveUploadStatus(int taskID,
  101. String repoID,
  102. String repoName,
  103. String parentDir,
  104. String localPath,
  105. int isUpdate,
  106. int isCopyToLocal,
  107. long uploadSize,
  108. long totalSize,
  109. String actSignature) {
  110.  
  111. Log.d(DEBUG_TAG, "add to database >> " + taskID);
  112.  
  113. SQLiteDatabase db = TransferDatabaseHelper.getInstance().getWritableDatabase();
  114.  
  115. String[] whereArgs = new String[] {repoID, parentDir, localPath, actSignature};
  116.  
  117. boolean isDuplicate = isUploadRowDuplicate(db, uploadWhereClause, whereArgs, TransferDatabaseHelper.UPLOAD_TABLE_NAME);
  118. if (isDuplicate) {
  119. String where = TransferDatabaseHelper.UPLOAD_COLUMN_REPO_ID + "=? and " +
  120. TransferDatabaseHelper.UPLOAD_COLUMN_STATE + "=? and " +
  121. TransferDatabaseHelper.UPLOAD_COLUMN_PARENT_DIR + "=? and " +
  122. TransferDatabaseHelper.UPLOAD_COLUMN_LOCAL_PATH + "=? and " +
  123. TransferDatabaseHelper.UPLOAD_COLUMN_ACCOUNT_SIGNATURE + "=?";
  124. String[] args = new String[] {repoID,
  125. TransferManager.TaskState.CANCELLED.toString(),
  126. parentDir,
  127. localPath,
  128. actSignature};
  129. // if current state is CANCELLED, update to INIT
  130. updateUploadInitStatus(where, args, TransferDatabaseHelper.UPLOAD_TABLE_NAME);
  131. return;
  132. }
  133.  
  134. try {
  135.  
  136. ContentValues cv = new ContentValues();
  137. cv.put(TransferDatabaseHelper.UPLOAD_COLUMN_TASKID, taskID);
  138. cv.put(TransferDatabaseHelper.UPLOAD_COLUMN_STATE, TransferManager.TaskState.INIT.toString());
  139. cv.put(TransferDatabaseHelper.UPLOAD_COLUMN_REPO_ID, repoID);
  140. cv.put(TransferDatabaseHelper.UPLOAD_COLUMN_REPO_NAME, repoName);
  141. cv.put(TransferDatabaseHelper.UPLOAD_COLUMN_PARENT_DIR, parentDir);
  142. cv.put(TransferDatabaseHelper.UPLOAD_COLUMN_LOCAL_PATH, localPath);
  143. cv.put(TransferDatabaseHelper.UPLOAD_COLUMN_IS_UPDATE, isUpdate);
  144. cv.put(TransferDatabaseHelper.UPLOAD_COLUMN_IS_COPY_TO_LOCAL, isCopyToLocal);
  145. cv.put(TransferDatabaseHelper.UPLOAD_COLUMN_TOTAL_SIZE, totalSize);
  146. cv.put(TransferDatabaseHelper.UPLOAD_COLUMN_UPLOAD_SIZE, uploadSize);
  147. cv.put(TransferDatabaseHelper.UPLOAD_COLUMN_ACCOUNT_SIGNATURE, actSignature);
  148.  
  149. db.replaceOrThrow(TransferDatabaseHelper.UPLOAD_TABLE_NAME, null, cv);
  150.  
  151. db.close();
  152. } catch (Exception e) {
  153. if (db != null)
  154. db.close();
  155.  
  156. Log.e(DEBUG_TAG, e.toString());
  157. }
  158. }
  159.  
  160. private static void updateDownloadInitStatus(String repoID,
  161. String pathInRepo,
  162. String actSignature) {
  163. String whereClause = TransferDatabaseHelper.DOWNLOAD_COLUMN_REPO_ID + "=? and " +
  164. TransferDatabaseHelper.DOWNLOAD_COLUMN_STATE + "=? and " +
  165. TransferDatabaseHelper.DOWNLOAD_COLUMN_PATH_IN_REPO + "=? and " +
  166. TransferDatabaseHelper.DOWNLOAD_COLUMN_ACCOUNT_SIGNATURE + "=?";
  167.  
  168. String[] whereArgs = new String[] {repoID,
  169. TransferManager.TaskState.CANCELLED.toString(),
  170. pathInRepo,
  171. actSignature};
  172.  
  173. updateUploadInitStatus(whereClause, whereArgs, TransferDatabaseHelper.DOWNLOAD_TABLE_NAME);
  174. }
  175.  
  176. private static void updateUploadInitStatus(String whereClause,
  177. String[] whereArgs,
  178. String tableName) {
  179.  
  180. SQLiteDatabase db = null;
  181.  
  182. try {
  183. db = TransferDatabaseHelper.getInstance().getWritableDatabase();
  184.  
  185. ContentValues cv = new ContentValues();
  186. cv.put(TransferDatabaseHelper.UPLOAD_COLUMN_STATE, TransferManager.TaskState.INIT.toString());
  187.  
  188. db.update(tableName,
  189. cv,
  190. whereClause,
  191. whereArgs);
  192. db.close();
  193. } catch (Exception e) {
  194. if (db != null)
  195. db.close();
  196.  
  197. Log.e(DEBUG_TAG, e.toString());
  198. }
  199.  
  200. }
  201.  
  202. public static void updateDownloadingStatus(long totalSize, long downloadedSize,
  203. String repoID,
  204. String pathInRepo,
  205. String actSignature) {
  206. SQLiteDatabase db = null;
  207. try {
  208. db = TransferDatabaseHelper.getInstance().getWritableDatabase();
  209.  
  210. ContentValues cv = new ContentValues();
  211. cv.put(TransferDatabaseHelper.DOWNLOAD_COLUMN_STATE, TransferManager.TaskState.TRANSFERRING.toString());
  212. cv.put(TransferDatabaseHelper.DOWNLOAD_COLUMN_TOTAL_SIZE, totalSize);
  213. cv.put(TransferDatabaseHelper.DOWNLOAD_COLUMN_DOWNLOAD_SIZE, downloadedSize);
  214.  
  215. db.update(TransferDatabaseHelper.DOWNLOAD_TABLE_NAME,
  216. cv,
  217. downloadWhereClause,
  218. new String[] {repoID,
  219. pathInRepo,
  220. actSignature});
  221.  
  222. db.close();
  223. } catch (Exception e) {
  224. if (db != null)
  225. db.close();
  226.  
  227. Log.e(DEBUG_TAG, e.toString());
  228. }
  229.  
  230. }
  231.  
  232. public static void updateUploadingStatus(long uploadedSize,
  233. String repoID,
  234. String parentDir,
  235. String localPath,
  236. String actSignature) {
  237. SQLiteDatabase db = null;
  238. try {
  239. db = TransferDatabaseHelper.getInstance().getWritableDatabase();
  240.  
  241. ContentValues cv = new ContentValues();
  242. cv.put(TransferDatabaseHelper.UPLOAD_COLUMN_STATE, TransferManager.TaskState.TRANSFERRING.toString());
  243. cv.put(TransferDatabaseHelper.UPLOAD_COLUMN_UPLOAD_SIZE, uploadedSize);
  244.  
  245. db.update(TransferDatabaseHelper.UPLOAD_TABLE_NAME,
  246. cv,
  247. uploadWhereClause,
  248. new String[] {repoID,
  249. parentDir,
  250. localPath,
  251. actSignature});
  252.  
  253. db.close();
  254. } catch (Exception e) {
  255. if (db != null)
  256. db.close();
  257.  
  258. Log.e(DEBUG_TAG, e.toString());
  259. }
  260.  
  261. }
  262.  
  263. public static void updateDownloadPauseStatus(long downloadedSize,
  264. String repoID,
  265. String pathInRepo,
  266. String actSignature) {
  267.  
  268. SQLiteDatabase db = null;
  269. try {
  270. db = TransferDatabaseHelper.getInstance().getWritableDatabase();
  271.  
  272. ContentValues cv = new ContentValues();
  273. cv.put(TransferDatabaseHelper.DOWNLOAD_COLUMN_STATE, TransferManager.TaskState.CANCELLED.toString()); // should create PAUSED value
  274. cv.put(TransferDatabaseHelper.DOWNLOAD_COLUMN_DOWNLOAD_SIZE, downloadedSize);
  275.  
  276. db.update(TransferDatabaseHelper.DOWNLOAD_TABLE_NAME,
  277. cv,
  278. downloadWhereClause,
  279. new String[] {repoID,
  280. pathInRepo,
  281. actSignature});
  282.  
  283. db.close();
  284. } catch (Exception e) {
  285. if (db != null)
  286. db.close();
  287.  
  288. Log.e(DEBUG_TAG, e.toString());
  289. }
  290.  
  291. }
  292.  
  293. public static void updateDownloadCancelStatus(String repoID,
  294. String pathInRepo,
  295. String actSignature) {
  296.  
  297. SQLiteDatabase db = null;
  298.  
  299. try {
  300. db = TransferDatabaseHelper.getInstance().getWritableDatabase();
  301.  
  302. ContentValues cv = new ContentValues();
  303. cv.put(TransferDatabaseHelper.DOWNLOAD_COLUMN_STATE, TransferManager.TaskState.CANCELLED.toString());
  304.  
  305. db.update(TransferDatabaseHelper.DOWNLOAD_TABLE_NAME,
  306. cv,
  307. downloadWhereClause,
  308. new String[] {repoID,
  309. pathInRepo,
  310. actSignature});
  311. db.close();
  312. } catch (Exception e) {
  313. if (db != null)
  314. db.close();
  315.  
  316. Log.e(DEBUG_TAG, e.toString());
  317. }
  318. }
  319.  
  320. public static void updateUploadCancelStatus(String repoID,
  321. String parentDir,
  322. String localPath,
  323. String actSignature) {
  324.  
  325. SQLiteDatabase db = null;
  326.  
  327. try {
  328. db = TransferDatabaseHelper.getInstance().getWritableDatabase();
  329.  
  330. ContentValues cv = new ContentValues();
  331. cv.put(TransferDatabaseHelper.UPLOAD_COLUMN_STATE, TransferManager.TaskState.CANCELLED.toString());
  332.  
  333. db.update(TransferDatabaseHelper.UPLOAD_TABLE_NAME,
  334. cv,
  335. uploadWhereClause,
  336. new String[] {repoID,
  337. parentDir,
  338. localPath,
  339. actSignature});
  340. db.close();
  341. } catch (Exception e) {
  342. if (db != null)
  343. db.close();
  344.  
  345. Log.e(DEBUG_TAG, e.toString());
  346. }
  347. }
  348.  
  349. public static void updateDownloadCompleteStatus(String localPath,
  350. long downloadSize,
  351. String repoID,
  352. String pathInRepo,
  353. String actSignature) {
  354.  
  355. // Log.d(DEBUG_TAG, "Download complete >> " + localPath.substring(localPath.lastIndexOf("/"), localPath.length()));
  356.  
  357. SQLiteDatabase db = null;
  358. try {
  359. db = TransferDatabaseHelper.getInstance().getWritableDatabase();
  360.  
  361. ContentValues cv = new ContentValues();
  362. cv.put(TransferDatabaseHelper.DOWNLOAD_COLUMN_STATE, TransferManager.TaskState.FINISHED.toString());
  363. cv.put(TransferDatabaseHelper.DOWNLOAD_COLUMN_LOCAL_PATH, localPath);
  364. cv.put(TransferDatabaseHelper.DOWNLOAD_COLUMN_DOWNLOAD_SIZE, downloadSize);
  365.  
  366. db.update(TransferDatabaseHelper.DOWNLOAD_TABLE_NAME,
  367. cv,
  368. downloadWhereClause,
  369. new String[] {repoID,
  370. pathInRepo,
  371. actSignature});
  372.  
  373. db.close();
  374. } catch (Exception e) {
  375. if (db != null)
  376. db.close();
  377.  
  378. Log.e(DEBUG_TAG, e.toString());
  379. }
  380. }
  381.  
  382. public static void updateUploadCompleteStatus(String localPath,
  383. String repoID,
  384. String parentDir,
  385. long uploadSize,
  386. String actSignature) {
  387.  
  388. Log.d(DEBUG_TAG, "Upload complete >> " + localPath.substring(localPath.lastIndexOf("/"), localPath.length()));
  389.  
  390. SQLiteDatabase db = null;
  391. try {
  392. db = TransferDatabaseHelper.getInstance().getWritableDatabase();
  393.  
  394. ContentValues cv = new ContentValues();
  395. cv.put(TransferDatabaseHelper.UPLOAD_COLUMN_STATE, TransferManager.TaskState.FINISHED.toString());
  396. cv.put(TransferDatabaseHelper.UPLOAD_COLUMN_UPLOAD_SIZE, uploadSize);
  397.  
  398. db.update(TransferDatabaseHelper.UPLOAD_TABLE_NAME,
  399. cv,
  400. uploadWhereClause,
  401. new String[] {repoID,
  402. parentDir,
  403. localPath,
  404. actSignature});
  405.  
  406. db.close();
  407. } catch (Exception e) {
  408. if (db != null)
  409. db.close();
  410.  
  411. Log.e(DEBUG_TAG, e.toString());
  412. }
  413. }
  414.  
  415. public static final String[] PROJECTION = new String[]{TransferDatabaseHelper.DOWNLOAD_COLUMN_TASKID,
  416. TransferDatabaseHelper.DOWNLOAD_COLUMN_STATE,
  417. TransferDatabaseHelper.DOWNLOAD_COLUMN_REPO_ID,
  418. TransferDatabaseHelper.DOWNLOAD_COLUMN_REPO_NAME,
  419. TransferDatabaseHelper.DOWNLOAD_COLUMN_PATH_IN_REPO,
  420. TransferDatabaseHelper.DOWNLOAD_COLUMN_LOCAL_PATH,
  421. TransferDatabaseHelper.DOWNLOAD_COLUMN_TOTAL_SIZE,
  422. TransferDatabaseHelper.DOWNLOAD_COLUMN_DOWNLOAD_SIZE,
  423. TransferDatabaseHelper.DOWNLOAD_COLUMN_ACCOUNT_SIGNATURE};
  424.  
  425. public static List<DownloadTaskInfo> getDownloadTaskInfos() {
  426.  
  427. List<DownloadTaskInfo> downloadTaskInfos = Lists.newArrayList();
  428.  
  429. SQLiteDatabase db = TransferDatabaseHelper.getInstance().getReadableDatabase();
  430.  
  431. Cursor cursor = db.query(TransferDatabaseHelper.DOWNLOAD_TABLE_NAME,
  432. PROJECTION, // columns
  433. null, // where clause
  434. null, // where args
  435. null,
  436. null,
  437. null,
  438. null);
  439.  
  440. if (cursor == null || cursor.isClosed())
  441. return downloadTaskInfos;
  442.  
  443. if(!cursor.moveToFirst())
  444. return downloadTaskInfos;
  445.  
  446. do {
  447. DownloadTaskInfo downloadTaskInfo = new DownloadTaskInfo(null, // account
  448. cursor.getInt(0), // task iD
  449. convertTaskStateByString(cursor.getString(1)), // state
  450. cursor.getString(2), // repo id
  451. cursor.getString(3), // repo name
  452. cursor.getString(4), // path in repo
  453. cursor.getString(5), // local path
  454. cursor.getLong(6), // total size
  455. cursor.getLong(7), // download size
  456. null); // error
  457. downloadTaskInfos.add(downloadTaskInfo);
  458. } while (cursor.moveToNext());
  459.  
  460. cursor.close();
  461. db.close();
  462. // Log.d(DEBUG_TAG, "sqlite stores " + downloadTaskInfos.size() + "download tasks");
  463. return downloadTaskInfos;
  464. }
  465.  
  466. public static void removeDownloadTask(int taskID) {
  467.  
  468. SQLiteDatabase db = TransferDatabaseHelper.getInstance().getWritableDatabase();
  469.  
  470. String whereClause = TransferDatabaseHelper.DOWNLOAD_COLUMN_TASKID + "=?";
  471.  
  472. int row = db.delete(TransferDatabaseHelper.DOWNLOAD_TABLE_NAME,
  473. whereClause,
  474. new String[]{String.valueOf(taskID)});
  475. // Log.d(DEBUG_TAG, "delete row " + row);
  476. db.close();
  477. }
  478.  
  479. public static void removeUploadTask(int taskID) {
  480.  
  481. SQLiteDatabase db = TransferDatabaseHelper.getInstance().getWritableDatabase();
  482.  
  483. String whereClause = TransferDatabaseHelper.UPLOAD_COLUMN_TASKID + "=?";
  484.  
  485. int row = db.delete(TransferDatabaseHelper.UPLOAD_TABLE_NAME,
  486. whereClause,
  487. new String[]{String.valueOf(taskID)});
  488. Log.d(DEBUG_TAG, "delete row " + row);
  489. db.close();
  490. }
  491.  
  492. public static void removeALLDownloadTaskByState(TransferManager.TaskState taskState) {
  493. String whereClause = TransferDatabaseHelper.DOWNLOAD_COLUMN_STATE + "=?";
  494.  
  495. removeALLTasksByState(TransferDatabaseHelper.DOWNLOAD_TABLE_NAME, whereClause, taskState);
  496. }
  497.  
  498. public static void removeALLTasksByState(String tableName, String whereClause, TransferManager.TaskState taskState) {
  499. SQLiteDatabase db = TransferDatabaseHelper.getInstance().getWritableDatabase();
  500.  
  501. // String whereClause = TransferDatabaseHelper.DOWNLOAD_COLUMN_STATE + "=?";
  502.  
  503. int row = db.delete(tableName,
  504. whereClause,
  505. new String[]{taskState.toString()}
  506. );
  507. // Log.d(DEBUG_TAG, "delete row " + row);
  508. db.close();
  509. }
  510.  
  511. public static TransferManager.TaskState convertTaskStateByString(String state) {
  512. if (state.equals(TransferManager.TaskState.INIT.toString())) {
  513. return TransferManager.TaskState.INIT;
  514. } else if (state.equals(TransferManager.TaskState.TRANSFERRING.toString())) {
  515. return TransferManager.TaskState.TRANSFERRING;
  516. } else if (state.equals(TransferManager.TaskState.FINISHED.toString())) {
  517. return TransferManager.TaskState.FINISHED;
  518. } else if (state.equals(TransferManager.TaskState.CANCELLED.toString())) {
  519. return TransferManager.TaskState.CANCELLED;
  520. } else //state.equals(TransferManager.TaskState.FAILED.toString()
  521. return TransferManager.TaskState.FAILED;
  522. }
  523.  
  524. public static boolean isDownloading() {
  525. return isUploading(TransferDatabaseHelper.DOWNLOAD_TABLE_NAME);
  526. }
  527.  
  528. public static List<UploadTaskInfo> getUploadTaskInfos() {
  529.  
  530. String[] PROJECTION = new String[]{TransferDatabaseHelper.UPLOAD_COLUMN_TASKID,
  531. TransferDatabaseHelper.UPLOAD_COLUMN_STATE,
  532. TransferDatabaseHelper.UPLOAD_COLUMN_REPO_ID,
  533. TransferDatabaseHelper.UPLOAD_COLUMN_REPO_NAME,
  534. TransferDatabaseHelper.UPLOAD_COLUMN_PARENT_DIR,
  535. TransferDatabaseHelper.UPLOAD_COLUMN_LOCAL_PATH,
  536. TransferDatabaseHelper.UPLOAD_COLUMN_IS_UPDATE,
  537. TransferDatabaseHelper.UPLOAD_COLUMN_IS_COPY_TO_LOCAL,
  538. TransferDatabaseHelper.UPLOAD_COLUMN_UPLOAD_SIZE,
  539. TransferDatabaseHelper.UPLOAD_COLUMN_TOTAL_SIZE,
  540. TransferDatabaseHelper.UPLOAD_COLUMN_ACCOUNT_SIGNATURE};
  541.  
  542. List<UploadTaskInfo> uploadTaskInfos = Lists.newArrayList();
  543.  
  544. SQLiteDatabase db = TransferDatabaseHelper.getInstance().getReadableDatabase();
  545.  
  546. Cursor cursor = db.query(TransferDatabaseHelper.UPLOAD_TABLE_NAME,
  547. PROJECTION, // columns
  548. null, // where clause
  549. null, // where args
  550. null,
  551. null,
  552. null,
  553. null);
  554.  
  555. if (cursor == null || cursor.isClosed())
  556. return uploadTaskInfos;
  557.  
  558. if (!cursor.moveToFirst())
  559. return uploadTaskInfos;
  560.  
  561. do {
  562. UploadTaskInfo uploadTaskInfo = new UploadTaskInfo(null, // account
  563. cursor.getInt(0), // task iD
  564. convertTaskStateByString(cursor.getString(1)), // state
  565. cursor.getString(2), // repo id
  566. cursor.getString(3), // repo name
  567. cursor.getString(4), // parent dir
  568. cursor.getString(5), // local path
  569. convertBoolByInt(cursor.getInt(6)), // isUpdate
  570. convertBoolByInt(cursor.getInt(7)), // isCopyToLocal
  571. cursor.getLong(8), // uploadSize
  572. cursor.getLong(9), // total size
  573. null);
  574.  
  575. uploadTaskInfos.add(uploadTaskInfo);
  576. } while (cursor.moveToNext());
  577.  
  578. cursor.close();
  579. db.close();
  580. // Log.d(DEBUG_TAG, "sqlite stores " + uploadTaskInfos.size() + " upload tasks");
  581. return uploadTaskInfos;
  582. }
  583.  
  584. private static boolean convertBoolByInt(int value) {
  585. if (value == 0)
  586. return false;
  587. else
  588. return true;
  589. }
  590.  
  591. public static boolean isUploading(String tableName) {
  592.  
  593. SQLiteDatabase db = TransferDatabaseHelper.getInstance().getReadableDatabase();
  594.  
  595. String whereTransferState = TransferDatabaseHelper.UPLOAD_COLUMN_STATE + "=?";
  596.  
  597. long count = DatabaseUtils.queryNumEntries(
  598. db,
  599. tableName,
  600. whereTransferState,
  601. new String[]{TransferManager.TaskState.INIT.toString()});
  602. db.close();
  603. return count > 0;
  604.  
  605. }
  606. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement