Package com.appspot.plucial.service

Source Code of com.appspot.plucial.service.UserUrlsService

package com.appspot.plucial.service;

import java.util.ArrayList;
import java.util.List;

import org.slim3.memcache.Memcache;

import com.appspot.plucial.dao.UserUrlsModelDao;
import com.appspot.plucial.model.UserModel;
import com.appspot.plucial.model.UserUrlsModel;
import com.appspot.plucial.utils.Utils;
import com.google.appengine.api.datastore.Text;

public class UserUrlsService {

    private static UserUrlsModelDao dao = new UserUrlsModelDao();

    /**
     *  リストキャッシュキー
     */
    public static final String USER_URLS_LIST_MEMCACHE_KEY = "user_urls_list_memcache_key";

    /**
     * PUT
     * @param model
     * @return
     */
    private static UserUrlsModel put(UserUrlsModel model) {
        // 永久化
        dao.put(model);

        return model;
    }

    /**
     * PUT
     * @param value
     * @param type
     * @param label
     * @return
     */
    public static UserUrlsModel put(UserModel userModel,
            String value,
            String type,
            String label) {

        UserUrlsModel model = new UserUrlsModel();

        // value
        if(value != null && !value.isEmpty()) {
            model.setValue(new Text(value));
        }

        // type
        if(type != null && !type.isEmpty()) {
            model.setType(type);
        }

        // label
        if(label != null && !label.isEmpty()) {
            model.setLabel(new Text(label));
        }

        // 関連
        model.getUserModelRef().setModel(userModel);

        return put(model);
    }

    /**
     * ユーザーのURLSリストの取得
     * @param userModel
     * @param dateModel
     * @return
     */
    public static List<UserUrlsModel> getUrlsList(UserModel userModel) {

        // Memcache に存在した場合はMemcache内のmodelを返す
        List<UserUrlsModel> list = Memcache.get(getUserUrlsListMemcacheKey(userModel));
        if(Utils.isNotEmpty(list)) return list;

        // DBから取得し、存在した場合はMemcacheに入れる
        list = userModel.getUserUrlsModelListRef().getModelList();
        if(Utils.isNotEmpty(list)) Memcache.put(getUserUrlsListMemcacheKey(userModel), list);

        return list == null ? new ArrayList<UserUrlsModel>() : list;
    }

    /**
     * ユーザーのURLSリストの取得
     * @param userModel
     * @param dateModel
     * @return
     */
    public static List<UserUrlsModel> getUrlsListByType(UserModel userModel, String type) {

        // 全リストを取得
        List<UserUrlsModel> allList = getUrlsList(userModel);

        // 新しいリストを作成
        List<UserUrlsModel> list = new ArrayList<UserUrlsModel>();

        // 対象タイプのリストを抽出
        for(UserUrlsModel model: allList) {
            if(model.getType() != null && model.getType().equals(type)) {
                list.add(model);
            }
        }

        return list;
    }

    /**
     * Delete All
     * @param model
     * @return
     */
    public static void deleteAll(UserModel userModel) {

        // キャッシュを防ぐためDBから取得
        UserModel user = UserService.getOrNull(userModel.getKey().getName());

        // ユーザーのすべてのurlsModelを取得
        List<UserUrlsModel> list = user.getUserUrlsModelListRef().getModelList();

        if(list == null) return;

        for(UserUrlsModel model: list) {

            // DateModelの削除
            dao.delete(model.getKey());
        }

        // リストのキャッシュをクリア
        Memcache.delete(getUserUrlsListMemcacheKey(userModel));
    }

    /**
     * DateListのキャッシュキーを取得
     * @param userModel
     * @param dateModel
     * @return
     */
    private static String getUserUrlsListMemcacheKey(UserModel userModel) {
        return USER_URLS_LIST_MEMCACHE_KEY
                + "_" + userModel.getKey().getName();
    }

}
TOP

Related Classes of com.appspot.plucial.service.UserUrlsService

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.