GoogleDriveFile.java 2.2 KB

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