StorageServiceClient.java 4.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164
  1. package com.epson.iprint.storage;
  2. import android.app.Activity;
  3. import android.content.Context;
  4. import android.widget.ImageView;
  5. import com.epson.iprint.storage.box.BoxNetClient;
  6. import com.epson.iprint.storage.dropbox.DropboxV2Client;
  7. import com.epson.iprint.storage.evernote.EvernoteClient;
  8. import com.epson.iprint.storage.gdrivev3.GoogleV3UploadClient;
  9. import com.epson.iprint.storage.onedrive.OneDriveClient;
  10. import epson.common.Utils;
  11. import epson.print.CommonDefine;
  12. import epson.print.fileBrower;
  13. import java.util.List;
  14. import org.apache.commons.lang.CharEncoding;
  15. public abstract class StorageServiceClient {
  16. public static final String EPSON_IPRINT_FOLDER = "Epson iPrint";
  17. public static String STORAGE_BOX = "box";
  18. public static final String STORAGE_DROPBOX = "dropbox";
  19. public static String STORAGE_EVERNOTE = "evernote";
  20. public static String STORAGE_GOOGLEDRIVE = "googledrive";
  21. public static String STORAGE_ONEDRIVE = "onedrive";
  22. public interface DownloadCompletion {
  23. void onDownloadComplete(StorageItem storageItem, String str, ProcessError processError);
  24. }
  25. public interface EnumerateCompletion {
  26. void onEnumerateComplete(List<StorageItem> list, ProcessError processError);
  27. }
  28. public enum ProcessError {
  29. NONE,
  30. CANCELED,
  31. RETRY,
  32. ERROR
  33. }
  34. public interface SigninCompletion {
  35. void onSigninCompletion();
  36. }
  37. public interface UploadCompletion {
  38. void onUploadComplete(String str, String str2, ProcessError processError);
  39. }
  40. public enum UploadFileType {
  41. PDF,
  42. JPEG
  43. }
  44. public abstract Downloader getDownloader(Context context, StorageItem storageItem, String str);
  45. public abstract Enumerator getEnumerator(Context context);
  46. public abstract String getStorageServiceName(Context context);
  47. public abstract Uploader getUploader(Context context, UploadFileType uploadFileType, String str, String str2);
  48. protected boolean isNeedSignin() {
  49. return false;
  50. }
  51. public abstract boolean isSignedIn(Context context);
  52. public abstract boolean isSupportedUploadType(UploadFileType uploadFileType);
  53. public abstract boolean revokeSignedInData(Activity activity);
  54. public static StorageServiceClient getClient(String str) {
  55. if (str.equals(STORAGE_GOOGLEDRIVE)) {
  56. return new GoogleV3UploadClient();
  57. }
  58. if (str.equals(STORAGE_DROPBOX)) {
  59. return new DropboxV2Client();
  60. }
  61. if (str.equals(STORAGE_BOX)) {
  62. return BoxNetClient.getInstance();
  63. }
  64. if (str.equals(STORAGE_EVERNOTE)) {
  65. return new EvernoteClient();
  66. }
  67. if (str.equals(STORAGE_ONEDRIVE)) {
  68. return new OneDriveClient();
  69. }
  70. return null;
  71. }
  72. public abstract class Uploader {
  73. public void cancel() {
  74. }
  75. public abstract boolean isCancelable();
  76. public abstract void start(UploadCompletion uploadCompletion);
  77. public Uploader() {
  78. }
  79. }
  80. public abstract class Downloader {
  81. public void cancel() {
  82. }
  83. public abstract boolean isCancelable();
  84. public abstract void start(DownloadCompletion downloadCompletion);
  85. public Downloader() {
  86. }
  87. }
  88. public abstract class Enumerator {
  89. public void cleanUpResources() {
  90. }
  91. public abstract void enumerate(StorageItem storageItem, EnumerateCompletion enumerateCompletion);
  92. public void enumerate(StorageItem storageItem, EnumerateCompletion enumerateCompletion, SigninCompletion signinCompletion) {
  93. }
  94. public abstract StorageItem getRootItem();
  95. public void setThumbnailInBackground(StorageItem storageItem, ImageView imageView) {
  96. }
  97. public Enumerator() {
  98. }
  99. }
  100. protected boolean isValidUploadName(String str) {
  101. try {
  102. byte[] bytes = str.getBytes(CharEncoding.UTF_8);
  103. if (bytes != null) {
  104. if (bytes.length <= 64) {
  105. if (!fileBrower.isAvailableFileName(str)) {
  106. return false;
  107. }
  108. return true;
  109. }
  110. }
  111. return false;
  112. } catch (Exception unused) {
  113. return false;
  114. }
  115. }
  116. protected boolean isPrintableFileTypes(StorageItem storageItem) {
  117. return isPrintableFilename(storageItem.name);
  118. }
  119. public static boolean isPrintableFilename(@Nullable String str) {
  120. if (str == null) {
  121. return false;
  122. }
  123. return Utils.isPhotoFile(str) || StorageItem.endsWith(str, CommonDefine.FileType_PDF) || Utils.isGConvertFile(str);
  124. }
  125. protected String getDownloadLocalPath(Context context, StorageItem storageItem) {
  126. return storageItem.getDownloadLocalPath(context);
  127. }
  128. }