GoogleDriveFile.java 2.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576
  1. package com.epson.iprint.storage.gdrivev3;
  2. import android.support.annotation.NonNull;
  3. import android.support.annotation.Nullable;
  4. import com.epson.iprint.storage.StorageServiceClient;
  5. import com.google.api.services.drive.model.File;
  6. import java.util.HashSet;
  7. public class GoogleDriveFile implements OnlineFile {
  8. private static HashSet<String> sGoogleDocumentsTypeSet;
  9. private final File mDriveFile;
  10. public GoogleDriveFile(@NonNull File file) {
  11. this.mDriveFile = file;
  12. }
  13. public String getName() {
  14. return this.mDriveFile.getName();
  15. }
  16. public boolean isFolder() {
  17. return GoogleDriveMimeType.MIME_TYPE_GOOGLE_FOLDER.equals(this.mDriveFile.getMimeType());
  18. }
  19. @Nullable
  20. public String getId() {
  21. return this.mDriveFile.getId();
  22. }
  23. public String getMimeType() {
  24. return this.mDriveFile.getMimeType();
  25. }
  26. public boolean isDisplayFile() {
  27. if (localGetTrashed()) {
  28. return false;
  29. }
  30. if (!isFolder() && !isIprintFile()) {
  31. return false;
  32. }
  33. return true;
  34. }
  35. private boolean isIprintFile() {
  36. if (localGetTrashed()) {
  37. return false;
  38. }
  39. prepareFileTypeSet();
  40. if (sGoogleDocumentsTypeSet.contains(getMimeType())) {
  41. return true;
  42. }
  43. return StorageServiceClient.isPrintableFilename(getName());
  44. }
  45. public boolean isGoogleDocuments() {
  46. prepareFileTypeSet();
  47. return sGoogleDocumentsTypeSet.contains(getMimeType());
  48. }
  49. private boolean localGetTrashed() {
  50. Boolean trashed = this.mDriveFile.getTrashed();
  51. return trashed != null && trashed.booleanValue();
  52. }
  53. private static synchronized void prepareFileTypeSet() {
  54. synchronized (GoogleDriveFile.class) {
  55. if (sGoogleDocumentsTypeSet == null) {
  56. sGoogleDocumentsTypeSet = new HashSet<>();
  57. sGoogleDocumentsTypeSet.add(GoogleDriveMimeType.MIME_TYPE_GOOGLE_DOC);
  58. sGoogleDocumentsTypeSet.add(GoogleDriveMimeType.MIME_TYPE_GOOGLE_SHEETS);
  59. sGoogleDocumentsTypeSet.add(GoogleDriveMimeType.MIME_TYPE_GOOGLE_DRAWING);
  60. sGoogleDocumentsTypeSet.add(GoogleDriveMimeType.MIME_TYPE_GOOGLE_SLIDES);
  61. }
  62. }
  63. }
  64. }