com.google.appengine.api.datastore

## Class DataTypeTranslator

- java.lang.Object
- - com.google.appengine.api.datastore.DataTypeTranslator

-     public final class DataTypeTranslator
      extends java.lang.Object

  `DataTypeTranslator` is a utility class for converting between the data store's `Property` protocol buffers and the user-facing classes (`String`, `User`, etc.).

- - ### Nested Class Summary

    Nested Classes
    Modifier and Type | Class and Description
    --- | ---
    `static class` | `DataTypeTranslator.ComparableByteArray` A wrapper for a `byte[]` that implements `Comparable`.

  - ### Method Summary

    All Methods Static Methods Concrete Methods
    Modifier and Type | Method and Description
    --- | ---
    `static void` | `addPropertiesToPb(java.util.Map<java.lang.String,?> map, EntityProto proto)` Add all of the properties in the specified map to an `EntityProto`.
    `static void` | `extractImplicitPropertiesFromPb(EntityProto proto, java.util.Map<java.lang.String,java.lang.Object> map)` Copy all of the implicit properties present on `proto` into `map`.
    `static void` | `extractIndexedPropertiesFromPb(EntityProto proto, java.util.Map<java.lang.String,java.lang.Object> map)` Copy all of the indexed properties present on `proto` into `map`.
    `static void` | `extractPropertiesFromPb(EntityProto proto, java.util.Map<java.lang.String,java.lang.Object> map)` Copy all of the properties present on `proto` into `map`.
    `static java.util.Collection<Property>` | `findIndexedPropertiesOnPb(EntityProto proto, java.lang.String propertyName)` Locates and returns all indexed properties with the given name on the given proto.
    `static java.lang.Comparable<java.lang.Object>` | `getComparablePropertyValue(Property property)` Returns the value for the property as its comparable representation type.
    `static java.lang.Object` | `getPropertyValue(Property property)` Returns the value for the property as its canonical type.
    `static int` | `getTypeRank(java.lang.Class<? extends java.lang.Comparable> datastoreType)` Get the rank of the given datastore type relative to other datastore types.
    `static Entity` | `toEntityFromSerializedV1Proto(byte[] serializedV1Entity)` Deserializes a Cloud Datastore V1 `Entity` protobuf and converts it to an App Engine Datastore `Entity`.
    `static byte[]` | `toSerializedV1Proto(Entity entity)` Converts an App Engine Datastore `Entity` to a Cloud Datastore `Entity` V1 protobuf and serializes it.

    - ### Methods inherited from class java.lang.Object

      `equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

- - ### Method Detail

    - #### addPropertiesToPb

          public static void addPropertiesToPb(java.util.Map<java.lang.String,?> map,
                                               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(EntityProto proto,
                                                            java.util.Map<java.lang.String,java.lang.Object> map)

      Copy all of the indexed properties present on `proto` into `map`.

    - #### extractPropertiesFromPb

          public static void extractPropertiesFromPb(EntityProto proto,
                                                     java.util.Map<java.lang.String,java.lang.Object> map)

      Copy all of the properties present on `proto` into `map`.

    - #### extractImplicitPropertiesFromPb

          public static void extractImplicitPropertiesFromPb(EntityProto proto,
                                                             java.util.Map<java.lang.String,java.lang.Object> map)

      Copy all of the implicit properties present on `proto` into `map`.

    - #### findIndexedPropertiesOnPb

          public static java.util.Collection<Property> findIndexedPropertiesOnPb(EntityProto proto,
                                                                                 java.lang.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 java.lang.Object getPropertyValue(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`

    - #### toEntityFromSerializedV1Proto

          public static Entity toEntityFromSerializedV1Proto(byte[] serializedV1Entity)

      Deserializes a Cloud Datastore V1 `Entity` protobuf and converts it to an App Engine Datastore `Entity`. `serializedV1Entity` should be an output of `toSerializedV1Proto(com.google.appengine.api.datastore.Entity)`; no guarantees for other inputs.
      Throws:
        `java.lang.IllegalArgumentException` - if the argument could not be deserialized

    - #### 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 java.lang.Comparable<java.lang.Object> getComparablePropertyValue(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(java.lang.Class<? extends java.lang.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.