예제 #1
0
  /**
   * 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();
  }
예제 #3
0
  /**
   * ユーザーの取得
   *
   * @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;
  }
예제 #4
0
  /**
   * PUT
   *
   * @param model
   * @return
   */
  public static UserModel put(UserModel model) {
    // 永久化
    userModelDao.put(model);

    // 自信のキャッシュをクリア
    Memcache.delete(model.getKey().toString());

    // グループのキャッシュをクリア
    clearGroupUserListMemcache(model.getGroup());

    return model;
  }
예제 #5
0
  @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");
    }
  }