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'sProperty
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 abyte[]
that implementsComparable
.
-
Method Summary
All Methods Static Methods Concrete Methods Modifier and Type Method and Description static void
addPropertiesToPb(java.util.Map<java.lang.String,java.lang.Object> map, EntityProto proto)
Add all of the properties in the specified map to anEntityProto
.static void
extractImplicitPropertiesFromPb(EntityProto proto, java.util.Map<java.lang.String,java.lang.Object> map)
Copy all of the implicit properties present onproto
intomap
.static void
extractIndexedPropertiesFromPb(EntityProto proto, java.util.Map<java.lang.String,java.lang.Object> map)
Copy all of the indexed properties present onproto
intomap
.static void
extractPropertiesFromPb(EntityProto proto, java.util.Map<java.lang.String,java.lang.Object> map)
Copy all of the properties present onproto
intomap
.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 V1Entity
protobuf and converts it to an App Engine DatastoreEntity
.static byte[]
toSerializedV1Proto(Entity entity)
Converts an App Engine DatastoreEntity
to a Cloud DatastoreEntity
V1 protobuf and serializes it.
-
-
-
Method Detail
-
addPropertiesToPb
public static void addPropertiesToPb(java.util.Map<java.lang.String,java.lang.Object> map, EntityProto proto)
Add all of the properties in the specified map to anEntityProto
. 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
andBlob
, it's added toEntityProto.raw_property
. Otherwise it's added toEntityProto.property
.- Parameters:
map
- A notnull
map of all the properties which will be set onproto
proto
- A notnull
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 onproto
intomap
.
-
extractPropertiesFromPb
public static void extractPropertiesFromPb(EntityProto proto, java.util.Map<java.lang.String,java.lang.Object> map)
Copy all of the properties present onproto
intomap
.
-
extractImplicitPropertiesFromPb
public static void extractImplicitPropertiesFromPb(EntityProto proto, java.util.Map<java.lang.String,java.lang.Object> map)
Copy all of the implicit properties present onproto
intomap
.
-
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 notnull
property- Returns:
null
if no value was set forproperty
-
toEntityFromSerializedV1Proto
public static Entity toEntityFromSerializedV1Proto(byte[] serializedV1Entity)
Deserializes a Cloud Datastore V1Entity
protobuf and converts it to an App Engine DatastoreEntity
.serializedV1Entity
should be an output oftoSerializedV1Proto(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 DatastoreEntity
to a Cloud DatastoreEntity
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 checkingx.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 notnull
property- Returns:
null
if no value was set forproperty
-
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.
-
-