SearchableOrderedMetadataField

  • SearchableOrderedMetadataField is an interface for metadata fields with ordered values used for range queries.

  • This interface allows for creating inequality filters in file queries.

  • You must use SearchableOrderedMetadataField for inequality filters (greaterThan, lessThan, etc.), but it can also be used for equality filters (eq).

public interface SearchableOrderedMetadataField implements SearchableMetadataField<T>

Interface for metadata fields which holds an ordered value (such as a date) and which can be used for range queries. Implementations of this interface (such as the static values in SearchableField) can be used to create inequality filters for file queries.

For example, the following code will find all files that were modified in the last hour with the MIME type "text/plain":


 Date oneHourAgo = new Date(System.currentTimeMillis() - (60 * 60 * 1000));
 Filter dateFilter = Filters.greaterThan(SearchableField.MODIFIED_DATE, oneHourAgo);
 Filter mimeTypeFilter = Filters.eq(SearchableField.MIME_TYPE, "text/plain");
 Query query = new Query.Builder().addFilters(dateFilter, mimeTypeFilter).build();
 for (Metadata metadata : Drive.DriveApi.query(apiClient, query).await().getMetadataBuffer()) {
   System.out.println(metadata.getTitle());
 }
 

Note that you must pass an SearchableOrderedMetadataField to the Filters#greaterThan, Filters#lessThan, Filters#lessThanEquals, or Filters#greaterThanEquals methods; a plain SearchableMetadataField cannot be used as part of an inequality query. However, every SearchableOrderedMetadataField is also a SearchableMetadataField, so you can use a SearchableOrderedMetadataField with Filters#eq (for example, if you want to find a file that was modified at an exact time).