GoogleV3UploadClient.java 4.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125
  1. package epson.print.storage.gdrivev3;
  2. import android.app.Activity;
  3. import android.content.Context;
  4. import android.os.AsyncTask;
  5. import com.epson.iprint.storage.StorageItem;
  6. import com.epson.iprint.storage.StorageServiceClient;
  7. public class GoogleV3UploadClient extends StorageServiceClient {
  8. public static final String UPLOAD_FOLDER_NAME = "Epson iPrint";
  9. private static boolean sCheckSignIn;
  10. private IprintGoogleSignIn mIprintGoogleSignIn = new IprintGoogleSignIn();
  11. public boolean isSupportedUploadType(StorageServiceClient.UploadFileType uploadFileType) {
  12. return true;
  13. }
  14. public static boolean isCheckSignIn() {
  15. return sCheckSignIn;
  16. }
  17. public static void setSingInValue(boolean z) {
  18. sCheckSignIn = z;
  19. }
  20. public GoogleV3UploadClient() {
  21. sCheckSignIn = false;
  22. }
  23. public StorageServiceClient.Uploader getUploader(Context context, StorageServiceClient.UploadFileType uploadFileType, String str, String str2) {
  24. return new GoogleV3Uploader(context, new UploadInfo(uploadFileType, str, str2));
  25. }
  26. public StorageServiceClient.Downloader getDownloader(Context context, StorageItem storageItem, String str) {
  27. throw new UnsupportedOperationException();
  28. }
  29. @NonNull
  30. public StorageServiceClient.Enumerator getEnumerator(Context context) {
  31. throw new UnsupportedOperationException();
  32. }
  33. public boolean isSignedIn(Context context) {
  34. if (!isCheckSignIn()) {
  35. return false;
  36. }
  37. return mIprintGoogleSignIn.isSignInValid(context, IprintGoogleSignIn.OperationType.UPLOAD);
  38. }
  39. public boolean revokeSignedInData(Activity activity) {
  40. activity.startActivity(GoogleV3UploadSignInActivity.getDisconnectIntent(activity));
  41. return false;
  42. }
  43. public String getStorageServiceName(Context context) {
  44. return context.getString(R.string.google_drive);
  45. }
  46. class GoogleV3Uploader extends StorageServiceClient.Uploader {
  47. private final Context mContext;
  48. private UploadInfo mUploadInfo;
  49. public boolean isCancelable() {
  50. return false;
  51. }
  52. public GoogleV3Uploader(Context context, @NonNull UploadInfo uploadInfo) {
  53. super();
  54. mContext = context.getApplicationContext();
  55. mUploadInfo = uploadInfo;
  56. }
  57. public void start(StorageServiceClient.UploadCompletion uploadCompletion) {
  58. new UploadTask(mContext, uploadCompletion).executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR, new UploadInfo[]{mUploadInfo});
  59. }
  60. }
  61. private static class UploadTask extends AsyncTask<UploadInfo, Void, Void> {
  62. private final Context mContext;
  63. private final StorageServiceClient.UploadCompletion mUploadNotifier;
  64. UploadTask(Context context, StorageServiceClient.UploadCompletion uploadCompletion) {
  65. mContext = context;
  66. mUploadNotifier = uploadCompletion;
  67. }
  68. protected Void doInBackground(UploadInfo... uploadInfoArr) {
  69. if (uploadInfoArr == null || uploadInfoArr[0] == null) {
  70. mUploadNotifier.onUploadComplete((String) null, (String) null, StorageServiceClient.ProcessError.ERROR);
  71. return null;
  72. }
  73. UploadInfo uploadInfo = uploadInfoArr[0];
  74. DriveWriter createDriveWriter = DriveWriter.createDriveWriter(mContext);
  75. try {
  76. createDriveWriter.uploadFile(uploadInfo.originalLocalPath, uploadInfo.uploadFilename, uploadInfo.fileType == StorageServiceClient.UploadFileType.PDF ? "application/pdf" : "image/jpeg", createDriveWriter.findOrCreateFolder("Epson iPrint"));
  77. notifyUploadEnd(uploadInfo, StorageServiceClient.ProcessError.NONE);
  78. return null;
  79. } catch (Exception unused) {
  80. notifyUploadEnd(uploadInfo, StorageServiceClient.ProcessError.ERROR);
  81. return null;
  82. }
  83. }
  84. private void notifyUploadEnd(UploadInfo uploadInfo, StorageServiceClient.ProcessError processError) {
  85. StorageServiceClient.UploadCompletion uploadCompletion = mUploadNotifier;
  86. if (uploadCompletion != null) {
  87. uploadCompletion.onUploadComplete(uploadInfo.originalLocalPath, uploadInfo.uploadFilename, processError);
  88. }
  89. }
  90. }
  91. public static class UploadInfo {
  92. StorageServiceClient.UploadFileType fileType;
  93. String originalLocalPath;
  94. String uploadFilename;
  95. public UploadInfo(@NonNull StorageServiceClient.UploadFileType uploadFileType, @NonNull String str, @NonNull String str2) {
  96. fileType = uploadFileType;
  97. originalLocalPath = str;
  98. uploadFilename = str2;
  99. }
  100. }
  101. }