Поиск по этому блогу

Показаны сообщения с ярлыком Google. Показать все сообщения
Показаны сообщения с ярлыком Google. Показать все сообщения

вторник, 25 августа 2015 г.

Guava Lists.partition + gae objectify

Загружать данные из datastore при помощи objectify можно группами(то есть по частям). Для этого можно использовать средства из библиотеке Guava. Это метод Lists.partition, в который передаем два параметра - список ключей и количество элементов в группе (например 25).

for (List<String> list : Lists.partition(new ArrayList<>(ids), 25))

 Подготовленный лист с ключами передаем в метод ids и получаем список значений.

result.addAll(ofy().load().type(UserEntity.class).ids(list).values());


public List<UserEntity> getUserEntities(Collection<Long> userIds, Long systemId) {
    List<UserEntity> result = new ArrayList<>();
    if (userIds == null) {
      return result;
    }
    List<String> ids = new ArrayList<>();
    for (Long id : userIds) {
      ids.add(UserEntity.generateKey(systemId, id));
    }
    for (List<String> list : Lists.partition(new ArrayList<>(ids), 25)) {
      result.addAll(ofy().load().type(UserEntity.class).ids(list).values());
    }
    return result;
 }





четверг, 22 января 2015 г.

JavaScript + JSP + Redirect

Из JS приложения (клиентская часть приложения написана на JS, а серверная на Java и технологиях Google App Engine) необходимо разлогинить пользователя, который залогинился через аккаунт Google. Для этого необходимо создать jsp файл и в нем подключить классы для работы с авторизацией пользователя


  • com.google.appengine.api.users.UserServiceFactory
  • com.google.appengine.api.users.UserService
  • com.google.appengine.api.utils.SystemProperty


Код  в JS файле

Код, который перекинет пользователя на logout.jsp
location.assign("/logout.jsp")

Получим UserService и создадим переменную url, на которую будем перекидывать пользователя который разлогинился. Проверяем, если мы уже задеплоили проект на сервер Google (SystemProperty.Environment.Value.Production), тогда url получает значение - имя приложения на сервере. Если же мы запустили проект локально, то ссылка и останется localhost:8888. После того как определились со значением переменной url, редиректим пользователя по этой ссылке.
response.sendRedirect(us.createLogoutURL(url + "/login.jsp?force"));

Файл logout.jsp

<%@ page import="com.google.appengine.api.users.UserServiceFactory"%>
<%@ page import="com.google.appengine.api.users.UserService"%>
<%@ page import="com.google.appengine.api.utils.SystemProperty"%>
<%
 UserService us = UserServiceFactory.getUserService();
 String url = "http://localhost:8888";
 if (SystemProperty.environment.value() == SystemProperty.Environment.Value.Production) {
   if (SystemProperty.applicationId.get().contains("production")) {
     url = "https://production-version-of-app.com";
   } else {
     url = "https://" + SystemProperty.applicationId.get() + ".appspot.com";
   }
 }
        response.sendRedirect(us.createLogoutURL(url + "/login.jsp?force"));
 return;
%>

воскресенье, 29 июня 2014 г.

Google Guava Splitter Example

Разобрать строку в GWT можно с помощью библиотеки Guava. Вот пример как это сделать.

Описание библиотеки на Wikipedia

Скачать библиотеку Guava

Пример использования Guava
String str = "This;is test;string with;semicolons";
Iterable<String> result = Splitter.on(";").trimResults() 
    .omitEmptyStrings() 
    .split(str); 
StringBuilder sb = new StringBuilder(); 
for (String s : result) { 
  sb.append(s + "\n"); 
} 
System.out.print(sb.toString()); 

Результат работы

суббота, 2 ноября 2013 г.

Какие устройства получат Android 4.4

Android 4.4


31 октября 2013 года в Сан-Франциско корпорация Google представила свою новую мобильную операционную систему — долгожданную Android 4.4 KitKat. Также Google анонсировала смартфон Nexus 5 сделанный совместно с компанией LG. Новый Nexus 5 уже стал доступным для покупки через магазин Google Play. Теперь всех пользователей Android девайсов интересует один вопрос  - какие еще устройства получат обновление до Android 4.4.