/**
   * Returns the objects collection.
   *
   * @param
   */
  protected IObjects getIObjects(int _nMaxSize) throws PureException {
    SearchForm thisform = (SearchForm) form;

    // 1. to get the query filter
    QueryFilter filter = thisform.getQueryFilter();
    if (filter.getSelect() == null) {
      filter.addPropertySelect("this", "*");
    }

    // 2. to render SQL
    IContentMgr mgr =
        ArkContentHelper.getContentMgrOf(thisform.getEntityMetadata().getEntityClass());
    List params = new ArrayList();
    String strSQL = filter.toSQL(params);
    if (this.isFromTemp()) {
      strSQL = strSQL.replaceAll("\\{this\\}", mgr.getTempTable(true) + " this");
    }
    logger.debug("SQL=" + strSQL);

    // 3. to execute the query
    IStatement query = null;
    try {
      query = mgr.createQuery(strSQL, 0);
      filter.registerEntitiesInQuery(query);
      query.setParameters(0, params);
      if (_nMaxSize > 0) {
        query.setMaxSize(_nMaxSize);
      }
      return query.executeQuery();
    } finally {
      params.clear();
      if (query != null) query.clear();
    }
  }
 /** @see com.pureinfo.ark.interaction.ActionBase#beforeExecution() */
 protected ActionForward beforeExecution() throws PureException {
   QueryFilter filter = ((SearchForm) form).getQueryFilter();
   filter.setDistinct(true);
   filter.addPropertySelect("this", "*");
   filter.addPropertyCondition(
       "person", "personId", SQLOperator.EQUAL, new Integer(loginUser.getId()));
   filter.addCondition("{person.personType}=1");
   return super.beforeExecution();
 }
  /** @see com.pureinfo.ark.interaction.ActionBase#beforeExecution() */
  protected ActionForward beforeExecution() throws PureException {
    QueryFilter filter = ((SearchForm) form).getQueryFilter();

    OrganizationHelper.addOrgTypeFilter(filter, request);
    String sProductForm = request.getParameter("dp_productForm");
    if (sProductForm == null || sProductForm.trim().length() == 0) {
      String[] _sPaper =
          new String[] {
            ProductConstants.SPRODUCT_FORM_PAPER, ProductConstants.SPRODUCT_FORM_MONOGRAPH
          };
      filter.addPropertyCondition("this", "productForm", SQLOperator.IN, _sPaper);
    }

    String sAuthorName = request.getParameter("productUser_userName", "作者");
    if (sAuthorName != null && (sAuthorName = sAuthorName.trim()).length() > 0) {
      int nSearchAuthorType =
          request.getInt("searchAuthorType", "作者排名", SRMConstants.SEARCH_AUTHOR_TYPE_ALL);
      switch (nSearchAuthorType) {
        case SRMConstants.SEARCH_AUTHOR_TYPE_FIRST:
          {
            filter.addPropertyCondition(
                "productUser", "orderNo", SQLOperator.EQUAL, new Integer(1));
            break;
          }
        case SRMConstants.SEARCH_AUTHOR_TYPE_OTHER:
          {
            filter.addPropertyCondition(
                "productUser", "orderNo", SQLOperator.GREATER, new Integer(1));
            break;
          }
      }
    }

    String sAppend = request.getParameter("appendix");
    if (sAppend != null) {
      if (sAppend.equals("1")) { // 有附件
        filter.setDistinct(true);
        if (isFromAll()) { // 全部
          filter.addCondition(
              "exists (select appendix.host_Id from "
                  + "ark_appendix appendix where appendix.host_id={this.id} and appendix.host_type="
                  + SRMTypes.PRODUCT
                  + ")");
        } else if (isFromTemp()) { // 临时表
          filter.addPropertyCondition("appendix", "temp", SQLOperator.EQUAL, Boolean.TRUE);
        } else { // 正式表
          filter.addPropertyCondition("appendix", "formal", SQLOperator.EQUAL, Boolean.TRUE);
        }
      } else if (sAppend.equals("2")) { // 无附件
        filter.addCondition(
            " not exists (select appendix.host_Id from "
                + "ark_appendix appendix where appendix.host_id={this.id} and appendix.host_type="
                + SRMTypes.PRODUCT
                + ")");
      }
    }
    request.setAttribute(
        "URL", "../product/product-net-search.jsp?type=" + ProductConstants.PRODUCT_FORM_APPRAISE);
    return null;
  }
 /** @see com.pureinfo.ark.interaction.ActionBase#beforeExecution() */
 protected ActionForward beforeExecution() throws PureException {
   QueryFilter filter = ((SearchForm) form).getQueryFilter();
   filter.addCondition("{this.contractId}=0 or {this.contractId} IS NULL");
   filter.addPropertyCondition(
       "this", "lStatus", SQLOperator.LESS, new Integer(ProjectConstants.STATUS_FINISHED));
   SRMUser user = (SRMUser) loginUser;
   boolean bAdmin2 = user.isAdmin2();
   if (bAdmin2) {
     filter.addPropertyCondition(
         "this", "college", SQLOperator.EQUAL, new Integer(user.getCollegeId()));
   }
   return super.beforeExecution();
 }
 /**
  * @param _sFilter
  * @param _sLoginUser
  * @throws PureException
  */
 public void prepareQueryFilter4List(QueryFilter _sFilter, IUser _sLoginUser)
     throws PureException {
   ISQLLogic logic =
       Auth2Helper.getManager().getSQLLogicRule(_sLoginUser, new Team(), ArkActionTypes.LIST);
   if (logic == SQLLogicString.FALSE) {
     return;
   }
   if (logic != SQLLogicString.TRUE) {
     _sFilter.addCondition(logic);
   }
 }
 /**
  * 待审核列表
  *
  * @param _sFilter
  * @param _sLoginUser
  * @throws PureException
  */
 public void prepareQueryFilter4AuditList(QueryFilter _sFilter, IUser _sLoginUser)
     throws PureException {
   ISQLLogic logic =
       Auth2Helper.getManager()
           .getSQLLogicRule(_sLoginUser, new Team(), ArkActionTypes.AUDIT_LIST);
   if (logic == SQLLogicString.FALSE) {
     throw new PureException(ArkExceptionTypes.AUTH_NO_RIGHT, "您没有权限");
   }
   if (logic != SQLLogicString.TRUE) {
     _sFilter.addCondition(logic);
   }
 }
 protected ActionForward beforeExecution() throws PureException {
   QueryFilter filter = ((SearchForm) form).getQueryFilter();
   filter.addCondition("{this.productId} <= 0");
   SRMWebUtil.propertyAndOrSearch((SearchForm) form, request);
   return super.beforeExecution();
 }
  /** @see com.pureinfo.ark.interaction.ActionBase#beforeExecution() */
  protected ActionForward beforeExecution() throws PureException {
    Product product = (Product) getSearchBean();
    SRMWebUtil.propertyAndOrSearch((SearchForm) form, request);

    String sProductForm = product.getProductForm();

    // 1. to validate the authorization
    IAuth2Mgr authMgr = Auth2Helper.getManager();
    ISQLLogic logic = authMgr.getSQLLogicRule(loginUser, product, ArkActionTypes.LIST);
    if (logic == SQLLogicString.FALSE) {
      String sDesc =
          (StringUtils.isEmpty(sProductForm)) ? "成果" : ProductConstants.getDescByForm(sProductForm);
      throw new PureException(ArkExceptionTypes.AUTH_NO_RIGHT, "对不起,您没有权限查看" + sDesc + "列表!");
    }

    // 2. to add the restriction
    QueryFilter filter = ((SearchForm) form).getQueryFilter();
    OrganizationHelper.addOrgTypeFilter(filter, request);
    /** 此处需要讨论 if (logic != SQLLogicString.TRUE) { filter.addCondition(logic); } */

    // 3. to parse some special parameters
    int nCurrRange = this.getRange();

    // 获奖与鉴定的年份小搜索是具体的年份

    if (StringUtils.isNotEmpty(sProductForm)) {
      if (sProductForm.equals(ProductConstants.SPRODUCT_FORM_HONOR)) {
        if (nCurrRange != 0) {
          filter.addCondition("year(publish_date)=" + nCurrRange);
          // filter.addOrder("{this.rank}");
        }
      } else if (sProductForm.equals(ProductConstants.SPRODUCT_FORM_APPRAISE)) {
        if (nCurrRange != 0) {
          filter.addCondition("{this.publicationYear}=" + nCurrRange);
        }
      } else {
        if (!(nCurrRange == RANGE_ALL)) {
          filter.addPropertyCondition(
              "this",
              "publishDate",
              SQLOperator.BETWEEN,
              new Date[] {getBeginYear(), getEndYear()});
        }
      }
    } else {
      String sPaperForm = request.getParameter("paperForm");
      if (sPaperForm != null) {
        if (sPaperForm.equals(ProductConstants.SPRODUCT_FORM_HONOR)) {
          filter.addPropertyCondition("this", "productForm", SQLOperator.EQUAL, sPaperForm);
          // filter.addOrder("{this.rank}");
        } else {
          String[] _sPaper =
              new String[] {
                ProductConstants.SPRODUCT_FORM_PAPER, ProductConstants.SPRODUCT_FORM_MONOGRAPH
              };
          filter.addPropertyCondition("this", "productForm", SQLOperator.IN, _sPaper);
          // 显示范围
          filter.addPropertyCondition(
              "this", "publishDate", SQLOperator.GREATER_OR_EQUAL, getBeginYear());
          filter.addPropertyCondition(
              "this", "publishDate", SQLOperator.LESS_OR_EQUAL, getEndYear());
        }
        String sOrderBy = request.getTrimedParameter("orderBy");
        if (sOrderBy == null || sOrderBy.length() == 0) {
          filter.setOrder("{this.lastModifiedTime} DESC, " + filter.getOrder());
        }
      }
    }

    // set default order for honor list and appraise list
    if (ProductConstants.SPRODUCT_FORM_HONOR.equals(sProductForm)
        || ProductConstants.SPRODUCT_FORM_APPRAISE.equals(sProductForm)) {
      String sOrderBy = request.getTrimedParameter("orderBy");
      if (sOrderBy == null || sOrderBy.length() == 0) {
        // filter.setOrder("YEAR({this.publishDate})
        // DESC,{this.level}");
        filter.setOrder("{this.rank},YEAR({this.publishDate}),{this.level}");
      }
    }

    return super.beforeExecution();
  }