Example #1
0
  /**
   * ユーザーの所属する部署の一覧を取得します。
   *
   * @param uid ユーザーID
   * @return 所属する部署リスト
   */
  public static List<AddressBookUserGroupLiteBean> getPostBeanList(int uid) {
    SelectQuery<TurbineUserGroupRole> query = Database.query(TurbineUserGroupRole.class);
    Expression exp1 =
        ExpressionFactory.matchExp(
            TurbineUserGroupRole.TURBINE_USER_PROPERTY, Integer.valueOf(uid));
    Expression exp2 =
        ExpressionFactory.greaterExp(
            TurbineUserGroupRole.TURBINE_GROUP_PROPERTY, Integer.valueOf(3));
    Expression exp3 =
        ExpressionFactory.matchExp(
            TurbineUserGroupRole.TURBINE_GROUP_PROPERTY + "." + TurbineGroup.OWNER_ID_PROPERTY,
            Integer.valueOf(1));
    query.setQualifier(exp1);
    query.andQualifier(exp2);
    query.andQualifier(exp3);

    List<TurbineUserGroupRole> list = query.fetchList();

    if (list == null || list.size() < 0) {
      return null;
    }

    List<AddressBookUserGroupLiteBean> resultList = new ArrayList<AddressBookUserGroupLiteBean>();

    TurbineUserGroupRole ugr = null;
    TurbineGroup group = null;
    AddressBookUserGroupLiteBean bean = null;
    int size = list.size();
    for (int i = 0; i < size; i++) {
      ugr = list.get(i);
      group = ugr.getTurbineGroup();
      EipMPost post = group.getEipMPost();
      bean = new AddressBookUserGroupLiteBean();
      bean.initField();
      bean.setGroupId(post.getPostId());
      bean.setName(post.getPostName());
      resultList.add(bean);
    }

    return resultList;
  }
  /**
   * 検索条件を設定した SelectQuery を返します。 <br>
   *
   * @param rundata
   * @param context
   * @return
   */
  protected SelectQuery<TurbineUser> getSelectQuery(RunData rundata, Context context) {

    ObjectId oid = new ObjectId("TurbineUser", TurbineUser.USER_ID_PK_COLUMN, 3);

    Expression exp_base =
        ExpressionFactory.matchAllDbExp(oid.getIdSnapshot(), Expression.GREATER_THAN);

    SelectQuery<TurbineUser> query =
        Database.query(TurbineUser.class, exp_base)
            .where(
                Operations.eq(TurbineUser.COMPANY_ID_PROPERTY, Integer.valueOf(1)),
                Operations.ne(TurbineUser.DISABLED_PROPERTY, "T"));

    String filter = ALEipUtils.getTemp(rundata, context, LIST_FILTER_STR);
    String filter_role = ALEipUtils.getTemp(rundata, context, LIST_FILTER_ROLE_STR);
    currentPost = filter;
    currentRole = filter_role;

    if (target_keyword != null && !target_keyword.getValue().equals("")) {
      String transWord =
          ALStringUtil.convertHiragana2Katakana(
              ALStringUtil.convertH2ZKana(target_keyword.getValue()));
      transWord = transWord.replace(" ", "").replace(" ", ""); // 全角/半角スペースを削除
      String[] transWords = transWord.split(""); // 1文字ずつに分解

      for (int i = 0; i < transWords.length; i++) {
        Expression exp11 =
            ExpressionFactory.likeExp(
                TurbineUser.FIRST_NAME_PROPERTY, "%" + target_keyword.getValue() + "%");
        Expression exp12 =
            ExpressionFactory.likeExp(
                TurbineUser.LAST_NAME_PROPERTY, "%" + target_keyword.getValue() + "%");
        Expression exp13 =
            ExpressionFactory.likeExp(
                TurbineUser.FIRST_NAME_KANA_PROPERTY, "%" + target_keyword.getValue() + "%");
        Expression exp14 =
            ExpressionFactory.likeExp(
                TurbineUser.LAST_NAME_KANA_PROPERTY, "%" + target_keyword.getValue() + "%");
        Expression exp15 =
            ExpressionFactory.likeExp(
                TurbineUser.EMAIL_PROPERTY, "%" + target_keyword.getValue() + "%");
        Expression exp16 =
            ExpressionFactory.likeExp(
                TurbineUser.TURBINE_USER_GROUP_ROLE_PROPERTY
                    + "."
                    + TurbineUserGroupRole.TURBINE_GROUP_PROPERTY
                    + "."
                    + TurbineGroup.GROUP_ALIAS_NAME_PROPERTY,
                "%" + target_keyword.getValue() + "%");
        Expression exp17 =
            ExpressionFactory.likeExp(
                TurbineUser.LOGIN_NAME_PROPERTY, "%" + target_keyword.getValue() + "%");
        Expression exp21 =
            ExpressionFactory.likeExp(
                TurbineUser.OUT_TELEPHONE_PROPERTY, "%" + target_keyword.getValue() + "%");
        Expression exp22 =
            ExpressionFactory.likeExp(
                TurbineUser.IN_TELEPHONE_PROPERTY, "%" + target_keyword.getValue() + "%");
        Expression exp23 =
            ExpressionFactory.likeExp(
                TurbineUser.CELLULAR_PHONE_PROPERTY, "%" + target_keyword.getValue() + "%");
        Expression exp31 =
            ExpressionFactory.likeExp(TurbineUser.FIRST_NAME_PROPERTY, "%" + transWords[i] + "%");
        Expression exp32 =
            ExpressionFactory.likeExp(TurbineUser.LAST_NAME_PROPERTY, "%" + transWords[i] + "%");
        Expression exp33 =
            ExpressionFactory.likeExp(
                TurbineUser.FIRST_NAME_KANA_PROPERTY, "%" + transWords[i] + "%");
        Expression exp34 =
            ExpressionFactory.likeExp(
                TurbineUser.LAST_NAME_KANA_PROPERTY, "%" + transWords[i] + "%");
        Expression exp35 =
            ExpressionFactory.likeExp(
                TurbineUser.TURBINE_USER_GROUP_ROLE_PROPERTY
                    + "."
                    + TurbineUserGroupRole.TURBINE_GROUP_PROPERTY
                    + "."
                    + TurbineGroup.GROUP_ALIAS_NAME_PROPERTY,
                "%" + transWords[i] + "%");

        query.andQualifier(
            exp11
                .orExp(exp12)
                .orExp(exp13)
                .orExp(exp14)
                .orExp(exp15)
                .orExp(exp16)
                .orExp(exp17)
                .orExp(exp21)
                .orExp(exp22)
                .orExp(exp23)
                .orExp(exp31)
                .orExp(exp32)
                .orExp(exp33)
                .orExp(exp34)
                .orExp(exp35));
      }
    }

    // ユーザーの状態によるフィルターが指定されている場合。
    if (filter_role != null && !filter_role.equals("")) {

      // 管理者かどうか
      if (filter_role.equals(AccountUtils.ROLE_ADMIN.toString())) {
        try {
          Group group = JetspeedSecurity.getGroup("LoginUser");
          Role adminrole = JetspeedSecurity.getRole("admin");
          List<TurbineUserGroupRole> admins =
              Database.query(TurbineUserGroupRole.class)
                  .where(
                      Operations.eq(TurbineUserGroupRole.TURBINE_ROLE_PROPERTY, adminrole.getId()),
                      Operations.eq(TurbineUserGroupRole.TURBINE_GROUP_PROPERTY, group.getId()),
                      Operations.ne(TurbineUserGroupRole.TURBINE_USER_PROPERTY, 1))
                  .distinct(true)
                  .fetchList();
          List<Integer> admin_ids = new ArrayList<Integer>();
          admin_ids.add(Integer.valueOf(1));
          for (TurbineUserGroupRole tugr : admins) {
            admin_ids.add(tugr.getTurbineUser().getUserId());
          }
          query.andQualifier(ExpressionFactory.inDbExp(TurbineUser.USER_ID_PK_COLUMN, admin_ids));

        } catch (Exception ex) {
          logger.error("AccountUserSelectData.getSelectQuery", ex);
        }
      }

      // 有効ユーザーかどうか
      if (filter_role.equals(AccountUtils.ROLE_ACTIVE.toString())) {
        query.andQualifier(ExpressionFactory.matchExp(TurbineUser.DISABLED_PROPERTY, "F"));
      }

      // 有効ユーザーかどうか
      if (filter_role.equals(AccountUtils.ROLE_IN_ACTIVE.toString())) {
        query.andQualifier(ExpressionFactory.matchExp(TurbineUser.DISABLED_PROPERTY, "N"));
      }
    }

    // 部署によるフィルターが指定されている場合。
    if (filter != null && !filter.equals("")) {

      String groupName =
          (ALEipManager.getInstance().getPostMap().get(Integer.valueOf(filter)))
              .getGroupName()
              .getValue();

      query.where(
          Operations.eq(
              TurbineUser.TURBINE_USER_GROUP_ROLE_PROPERTY
                  + "."
                  + TurbineUserGroupRole.TURBINE_GROUP_PROPERTY
                  + "."
                  + TurbineGroup.GROUP_NAME_PROPERTY,
              groupName));
    }

    query.distinct();

    return query;
  }