Разработка типа данных объекта сущности движка Google App - PullRequest
1 голос
/ 21 июля 2011

У меня есть этот объект - я пытаюсь определить тип его свойств - во внутренних типах данных Google App Engine PREFERRED (в отличие от типов данных Java).
Код ниже, очевидно, упрощен.В действительности я не знаю свойства сущности или что-либо еще об этом.

final DatastoreService dss = DatastoreServiceFactory.getDatastoreService();
final Query query = new Query("Person");
final PreparedQuery pq = dss.prepare(query);

for (Entity entity : pq.asIterable())
{
    final Object property = entity.getProperty("some_property");
    // Here I want to determine which data type 'property' represents - GAE-wise.
}

В коде Java App Engine я нашел несколько подсказок:

DataTypeTranslator
    DataTypeTranslator.typeMap (internal private member)
Property.Meaning.GD_PHONENUMBER

Я не могу связать их вместе в то, что мне нужно - какое-то отражение.

Я бы хотел сделать что-то вроде этого:

entity.getPropertyType("some_property");

Кто-нибудь знает лучше?

Исходный код DataTypeTranslator здесь

Редактировать # 1: << INGORE этот.Это я поставил эти постфиксы (я был озадачен документом). </em>
Вот более важная информация, которую я нашел.
Я получаю ее в мини-окне всплывающей подсказки Eclipse, когда указываюповерх сущности (той, которую я только что извлек из хранилища данных).
Кажется, хранилище данных отправляет его (эту полезную нагрузку) в виде необработанного текста, что приятно, возможно, мне придется проанализировать его (но как мне его получить?из кода LOL).
Обратите внимание на типы здесь, это написано просто.
Вот оно:

<Entity [Bird(9)]:
    Int64Type:44rmna4kc2g23i9brlupps74ir#Int64Type = 1234567890
    String:igt7qvk9p89nc3gjqn9s3jq69c = 7tns1l48vpttq5ff47i3jlq3f9
    PhoneNumber:auih50aecl574ud23v9h4rfvt1#PhoneNumberType = 03-6491234
    Date:k1qstkn9np0mpb6fp41cj6i3am = Wed Jul 20 23:03:13 UTC 2011
>

Например, свойство с именем String:igt7qvk9p89nc3gjqn9s3jq69c имеет значение 7tns1l48vpttq5ff47i3jlq3f9 и это не говорит его тип.Также свойство Date:k1qstkn9np0mpb6fp41cj6i3am.
Свойство с именем Int64Type:44rmna4kc2g23i9brlupps74ir имеет значение "1234567890", и здесь строго указывается, что тип данных имеет тип "Int64Type".

1 Ответ

0 голосов
/ 21 декабря 2011

Я тоже его ищу.

Это что-то вроде хака, но по крайней мере мой вывод включает тип (без необходимости секретного кольца декодера).Но мой код немного отличается:

Query allusersentityquery = new Query();
allusersentityquery.setAncestor(userKey);

for (final Entity entity : datastore.prepare(allusersentityquery).asIterable()) {
    Map<String, Object> properties = entity.getProperties();
    String[] propertyNames = properties.keySet().toArray(
        new String[properties.size()]);

    for(final String propertyName : propertyNames) {
      // propertyNames string contains
      // "com.google.appengine.api.datastore.PostalAddress" if it is a Postal Address
    }
}

Похоже, что нет никаких документов по определению типов собственности здесь .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...