Pagerの作成 

Pagerが完成しました。

ポイントは以下の通りです。

  • viewYearに、ページのview_year=以下の値を入れるために、ALEipUtilsクラスを使用したこと。

  • ExpressionFactoryでlikeExpメソッドを使わず、greaterOrEqualExpメソッドとlessOrEqualExpメソッドを使って範囲指定したこと。(HOLIDAY_DATEがDATE型であったためLIKEが機能しないのと、処理の速さを考慮したため)

  • orderAscendingメソッドを使って、昇順にソートして見栄えを良くした。

Iitializeメソッド

 /** 個別の休日の日付 */
  private ALDateField holiday_date;

  /** 現在のページの年 */
  private ALDateTimeField viewYear;

  /** 前の年 */
  private ALDateTimeField prevYear;

  /** 次の年 */
  private ALDateTimeField nextYear;

  @Override
  public void init(ALAction action, RunData rundata, Context context)
      throws ALPageNotFoundException {

    Calendar cal = Calendar.getInstance();
    // 前の年 次の年
    prevYear = new ALDateTimeField("yyyy");
    nextYear = new ALDateTimeField("yyyy");
    holiday_date = new ALDateField();
    holiday_date.setValue(cal.getTime());
    // 現在のページの年
    viewYear = new ALDateTimeField("yyyy");
    viewYear.setNotNull(true);

    if (ALEipUtils.isMatch(rundata, context)) {
      if (rundata.getParameters().containsKey("view_year")) {
        ALEipUtils.setTemp(rundata, context, "view_year", rundata
          .getParameters()
          .getString("view_year"));
      }
    }
    String tmpViewYear = ALEipUtils.getTemp(rundata, context, "view_year");
    if (tmpViewYear == null || tmpViewYear.equals("")) {
      viewYear.setValue(cal.getTime());
    } else {
      viewYear.setValue(tmpViewYear);
      if (!viewYear.validate(new ArrayList<String>())) {
        ALEipUtils.removeTemp(rundata, context, "view_year");
        throw new ALPageNotFoundException();
      }
    }

    // 前の年 次の年
    prevYear = new ALDateTimeField("yyyy");
    nextYear = new ALDateTimeField("yyyy");

    Calendar cal1 = Calendar.getInstance();
    cal1.setTime(viewYear.getValue());
    cal1.add(Calendar.YEAR, 1);
    nextYear.setValue(cal1.getTime());
    cal1.add(Calendar.YEAR, -2);
    prevYear.setValue(cal1.getTime());

  }

getSelectQueryメソッド


/** * 検索条件を設定した SelectQuery を返します。 <BR> * * @param rundata * @param context * @return */ private SelectQuery<EipMHoliday> getSelectQuery(RunData rundata, Context context) { SelectQuery<EipMHoliday> query = Database.query(EipMHoliday.class); Expression exp1 = ExpressionFactory.greaterOrEqualExp( EipMHoliday.HOLIDAY_DATE_PROPERTY, viewYear.getYear() + "-01-01"); query.setQualifier(exp1); Expression exp2 = ExpressionFactory.lessOrEqualExp( EipMHoliday.HOLIDAY_DATE_PROPERTY, viewYear.getYear() + "-12-31"); query.andQualifier(exp2); return buildSelectQueryForFilter(query, rundata, context); }

selectListメソッド


/** * 一覧データを取得します。 <BR> * * @param rundata * @param context * @return * @throws ALPageNotFoundException * @throws ALDBErrorException */ @Override protected ResultList<EipMHoliday> selectList(RunData rundata, Context context) throws ALPageNotFoundException, ALDBErrorException { try { SelectQuery<EipMHoliday> query = getSelectQuery(rundata, context); buildSelectQueryForListView(query); query.orderAscending(EipMHoliday.HOLIDAY_DATE_PROPERTY); return query.getResultList(); } catch (Exception ex) { logger.error("system", ex); return null; } }