Class DataTypeTranslator


  • public final class DataTypeTranslator
    extends Object
    DataTypeTranslator is a utility class for converting between the data store's Property protocol buffers and the user-facing classes (String, User, etc.).
    • Method Detail

      • addPropertiesToPb

        public static void addPropertiesToPb​(Map<String,​?> map,
                                             com.google.storage.onestore.v3.OnestoreEntity.EntityProto proto)
        Add all of the properties in the specified map to an EntityProto. This involves determining the type of each property and creating the proper type-specific protocol buffer.

        If the property value is an Entity.UnindexedValue, or if it's a type that is never indexed, e.g. Text and Blob, it's added to EntityProto.raw_property. Otherwise it's added to EntityProto.property.

        Parameters:
        map - A not null map of all the properties which will be set on proto
        proto - A not null protocol buffer
      • extractIndexedPropertiesFromPb

        public static void extractIndexedPropertiesFromPb​(com.google.storage.onestore.v3.OnestoreEntity.EntityProto proto,
                                                          Map<String,​@Nullable Object> map)
        Copy all of the indexed properties present on proto into map.
      • extractPropertiesFromPb

        public static void extractPropertiesFromPb​(com.google.storage.onestore.v3.OnestoreEntity.EntityProto proto,
                                                   Map<String,​@Nullable Object> map)
        Copy all of the properties present on proto into map.
      • extractImplicitPropertiesFromPb

        public static void extractImplicitPropertiesFromPb​(com.google.storage.onestore.v3.OnestoreEntity.EntityProto proto,
                                                           Map<String,​@Nullable Object> map)
        Copy all of the implicit properties present on proto into map.
      • findIndexedPropertiesOnPb

        public static Collection<com.google.storage.onestore.v3.OnestoreEntity.Property> findIndexedPropertiesOnPb​(com.google.storage.onestore.v3.OnestoreEntity.EntityProto proto,
                                                                                                                   String propertyName)
        Locates and returns all indexed properties with the given name on the given proto. If there are a mix of matching multiple and non-multiple properties, the collection will contain the first non-multiple property.
        Returns:
        A list, potentially empty, containing matching properties.
      • getPropertyValue

        public static @Nullable Object getPropertyValue​(com.google.storage.onestore.v3.OnestoreEntity.Property property)
        Returns the value for the property as its canonical type.
        Parameters:
        property - a not null property
        Returns:
        null if no value was set for property
      • toSerializedV1Proto

        public static byte[] toSerializedV1Proto​(Entity entity)
        Converts an App Engine Datastore Entity to a Cloud Datastore Entity V1 protobuf and serializes it.

        Note that the conversion may be lossy or fail; for example, the Cloud Datastore V1 API supports only UTF-8 strings, so App Engine Datastore entities with string properties that are not UTF-8 encoded may behave in unexpected ways if supplied to Cloud Datastore. You can verify that the conversion was successful for entity x by checking x.equals(toEntityFromSerializedV1Proto(toSerializedV1Proto(x)).

      • getComparablePropertyValue

        public static @Nullable Comparable<Object> getComparablePropertyValue​(com.google.storage.onestore.v3.OnestoreEntity.Property property)
        Returns the value for the property as its comparable representation type.
        Parameters:
        property - a not null property
        Returns:
        null if no value was set for property
      • getTypeRank

        public static int getTypeRank​(Class<? extends Comparable> datastoreType)
        Get the rank of the given datastore type relative to other datastore types. Note that datastore types do not necessarily have unique ranks.