Package com.denisk.appengine.nl.server

Source Code of com.denisk.appengine.nl.server.DtoServiceServlet

package com.denisk.appengine.nl.server;

import java.util.HashSet;
import java.util.Iterator;

import org.codehaus.jettison.json.JSONException;

import com.denisk.appengine.nl.client.service.DtoService;
import com.denisk.appengine.nl.server.data.Category;
import com.denisk.appengine.nl.shared.UserStatus;
import com.google.appengine.api.blobstore.BlobInfo;
import com.google.appengine.api.blobstore.BlobInfoFactory;
import com.google.appengine.api.blobstore.BlobKey;
import com.google.appengine.api.blobstore.BlobstoreServiceFactory;
import com.google.appengine.api.datastore.KeyFactory;
import com.google.appengine.api.memcache.MemcacheServiceFactory;
import com.google.appengine.api.users.User;
import com.google.appengine.api.users.UserService;
import com.google.appengine.api.users.UserServiceFactory;
import com.google.gwt.user.server.rpc.RemoteServiceServlet;

public class DtoServiceServlet extends RemoteServiceServlet implements DtoService {
  private static final long serialVersionUID = 3021789825605473063L;
  private static DataHandler dh = new DataHandler();
  private static UserService us = UserServiceFactory.getUserService();

  @Override
  public String countEntities() {
    return "Catogories: " + dh.countCategories() + ", goods: " + dh.countGoods();
  }

  @Override
  public String getCategoriesJson() {
    try {
      return dh.getCategoriesJson();
    } catch (JSONException e) {
      e.printStackTrace();
      return null;
    }
  }

  @Override
  public void clearData() {
    checkCredentials();

    dh.clearAll();
   
    MemcacheServiceFactory.getMemcacheService().clearAll();
   
    Iterator<BlobInfo> infos = new BlobInfoFactory().queryBlobInfos();
    HashSet<BlobKey> toDelete = new HashSet<BlobKey>();
    while(infos.hasNext()){
      toDelete.add(infos.next().getBlobKey());
    }
    BlobstoreServiceFactory.getBlobstoreService().delete(toDelete.toArray(new BlobKey[]{}));
  }


  @Override
  public String getImageUploadUrl() {
    checkCredentials();
    return BlobstoreServiceFactory.getBlobstoreService().createUploadUrl("/upload");
  }

  @Override
  public String persistCategory(String categoryJson) {
    checkCredentials();
    Category category = new Category().getFromJson(categoryJson);
    return KeyFactory.keyToString(dh.saveCategoryWithGoods(category));
  }


  public static void checkCredentials() throws IllegalAccessError {
    if(us.getCurrentUser() == null || ! us.isUserAdmin()){
      throw new IllegalAccessError("User is not allowed to perform this operation: " + us.getCurrentUser());
    }
  }


  @Override
  public UserStatus isAdmin() {
    User currentUser = us.getCurrentUser();
    if(currentUser==null){
      return UserStatus.NOT_LOGGED_IN;
    }
    return us.isUserAdmin() ? UserStatus.ADMIN : UserStatus.NOT_ADMIN;
  }


  @Override
  public String getLoginUrl() {
    return us.createLoginURL("/");
  }


  @Override
  public String getLogoutUrl() {
    return us.createLogoutURL("/");
  }


  @Override
  public String getGoodsJson(String categoryKeyStr) {
    return dh.getGoodsJson(categoryKeyStr);
  }


  @Override
  public void clearGoodsForCategory(String categoryKeyStr) {
    checkCredentials();
    dh.clearGoodsForCategory(categoryKeyStr);
  }


  @Override
  public String persistGood(String goodJson) {
    checkCredentials();
    return KeyFactory.keyToString(dh.persistGood(goodJson));
  }


  @Override
  public void updateCategoryBackground(String categoryKeyStr,  String backgoundImageKeyStr) {
    checkCredentials();
    dh.updateCategoryBackground(categoryKeyStr, backgoundImageKeyStr);
  }


  @Override
  public void deleteCategory(String key, String imageKey, String backgroundImageKey) {
    checkCredentials();
    dh.deleteCategory(key, imageKey, backgroundImageKey);
  }
 
  @Override
  public void deleteGood(String key, String imageKey){
    checkCredentials();
    dh.deleteGood(key, imageKey);
  }

  @Override
  public String getCategoryBackgroundKey(String categoryKey) {
    return dh.getCategoryBackgroundKey(categoryKey);
  }

  @Override
  public String getAllGoodsJson() {
    try {
      return dh.getAllGoodsJson();
    } catch (JSONException e) {
      throw new RuntimeException(e);
    }
  }
 
  @Override
  public String getAllCategoriesExcept(String categoryKeyStr){
    try {
      return dh.getAllCategoriesExcept(categoryKeyStr);
    } catch (JSONException e) {
      throw new RuntimeException(e);
    }
  }
}
TOP

Related Classes of com.denisk.appengine.nl.server.DtoServiceServlet

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.