/** * Delete * * @param model * @return */ public static void delete(UserModel userModel) { // ユーザーのすべてのDateModelを取得 List<DateModel> dateModelList = userModel.getDateModelListRef().getModelList(); for (DateModel dateModel : dateModelList) { // DateModelに紐づくつべてのActivityModel を取得 List<ActivityModel> activityModelList = dateModel.getActivityModelListRef().getModelList(); for (ActivityModel activityModel : activityModelList) { // アクティビティの削除 ActivityService.delete(userModel, activityModel); } // DateModelの削除 DateService.delete(userModel, dateModel); } // URLリストの削除 UserUrlsService.deleteAll(userModel); userModelDao.delete(userModel.getKey()); // 自信のキャッシュをクリア Memcache.delete(userModel.getKey().toString()); // ユーザーカウントのキャッシュクリア clearUserCountAndListMemcache(); // グループのキャッシュをクリア clearGroupUserListMemcache(userModel.getGroup()); }
/** * 短縮URLの取得 * * @return * @throws Exception */ public String getShortUrl(UserModel userModel, ActivityModel activityModel) throws Exception { // アプリ承認オブジェクトの生成 GoogleCredential credential = new GoogleCredential.Builder() .setJsonFactory(JSON_FACTORY) .setTransport(TRANSPORT) .setClientSecrets( Constants.GOOGLE_PROJECT_CLIENT_ID, Constants.GOOGLE_PROJECT_CLIENT_SECRET) .build() .setRefreshToken(userModel.getRefreshToken()); // Urlshortener オブジェクトの生成 Urlshortener.Builder builder = new Urlshortener.Builder(TRANSPORT, JSON_FACTORY, credential); builder.setApplicationName(Constants.GOOGLE_APPLICATION_NAME); Urlshortener urlshortener = builder.build(); // URLの設定 Url url = new Url(); url.setLongUrl( "http://plucial.com/u/" + userModel.getKey().getName() + "/a/" + activityModel.getKey().getName()); // 短縮URLの発行 url = urlshortener.url().insert(url).execute(); return url.getId(); }
/** * ユーザーの取得 * * @param email * @return */ public static UserModel getOrNull(String userID) { Key key = createKey(userID); UserModel model = Memcache.get(key.toString()); if (model != null) return model; model = userModelDao.getOrNull(key); if (model != null) Memcache.put(model.getKey().toString(), model); return model; }
/** * PUT * * @param model * @return */ public static UserModel put(UserModel model) { // 永久化 userModelDao.put(model); // 自信のキャッシュをクリア Memcache.delete(model.getKey().toString()); // グループのキャッシュをクリア clearGroupUserListMemcache(model.getGroup()); return model; }
@Override protected Navigation run() throws Exception { UserModel acsessUserModel = null; UserModel loginUserModel = null; try { // アクセスしているページのユーザー情報を取得 acsessUserModel = getAccessUserModel(); S3QueryResultList<DateModel> dateModelList = DateService.getDateModelList(acsessUserModel, null); requestScope("date_cursor", dateModelList.getEncodedCursor()); requestScope("date_hasNext", String.valueOf(dateModelList.hasNext())); List<UserUrlsModel> profileUrlList = UserUrlsService.getUrlsListByType(acsessUserModel, Constants.USER_URLS_TYPE_PROFILE); List<UserUrlsModel> contributorUrlList = UserUrlsService.getUrlsListByType(acsessUserModel, Constants.USER_URLS_TYPE_CONTRIBUTOR); requestScope("acsessUserModel", acsessUserModel); requestScope("userId", acsessUserModel.getKey().getName()); requestScope("dateModelList", dateModelList); requestScope("profileUrlList", profileUrlList); requestScope("contributorUrlList", contributorUrlList); // ログインユーザー情報を取得 loginUserModel = getLoginUserModel(); requestScope("isLogin", String.valueOf(loginUserModel != null)); requestScope("loginUserModel", loginUserModel); // ログイン済みの場合 return execute(acsessUserModel, loginUserModel, true, isSmartPhone()); } catch (UserLoginException e) { // ログインしていない場合 return execute(acsessUserModel, loginUserModel, false, isSmartPhone()); } catch (NoContentsException e) { // アクセスページのユーザーが存在しない場合 return redirect("/error/404.html"); } }