スケジュールのエクスポート機能を追加その2

前回同様、イベントログのCsvファイルを参考にスケジュールのエクスポート機能を作っていきます。

まず、エクスポートするためのスケジュール情報を取得して格納する必要があるので、

ScheduleSearchSelectData.javaのファイルにある

 protected Object getResultData(VEipTScheduleList record)
      throws ALPageNotFoundException, ALDBErrorException {
    ScheduleSearchResultData rd = new ScheduleSearchResultData();
    rd.initField();
    try {
      if ("R".equals(record.getStatus())) {
        return null;
      }

      boolean is_member = record.isMember();

      if ("C".equals(record.getPublicFlag())
        && (userid != record.getOwnerId().intValue())
        && !is_member) {
        rd.setName(ALLocalizationUtils.getl10n("SCHEDULE_CLOSE_PUBLIC_WORD"));
        // 仮スケジュールかどうか
        rd.setTmpreserve(false);
      } else {
        rd.setName(record.getName());
        // 仮スケジュールかどうか
        rd.setTmpreserve("T".equals(record.getStatus()));
      }

      // ID
      rd.setScheduleId(record.getScheduleId().intValue());
      // 親スケジュール ID
      rd.setParentId(record.getParentId().intValue());
      // 開始日時
      rd.setStartDate(record.getStartDate());
      // 終了日時
      rd.setEndDate(record.getEndDate());
      // 公開するかどうか
      rd.setPublic("O".equals(record.getPublicFlag()));
      // 非表示にするかどうか
      rd.setHidden("P".equals(record.getPublicFlag()));
      // ダミーか
      rd.setDummy("D".equals(record.getStatus()));
      // ログインユーザかどうか
      // rd.setLoginuser(is_member);
      // オーナーかどうか
      rd.setOwner(record.getOwnerId().intValue() == userid);
      // 共有メンバーかどうか
      rd.setMember(is_member);
      // 繰り返しパターン
      rd.setPattern(record.getRepeatPattern());
      rd.setCreateUser(ALEipUtils.getALEipUser(record.getCreateUserId()));
      rd.setNote(record.getNote());
      rd.setPlace(record.getPlace());
      rd.setDescription(record.getNote());

      if (!rd.getPattern().equals("N") && !rd.getPattern().equals("S")) {
        rd.setRepeat(true);
      }

    } catch (Exception e) {
      logger.error("schedule", e);
      return null;
    }
    return rd;
  }

をコピーして、Csvファイル内のResultData に値を格納して返します。(一覧データ)と書かれている 下に書き換えます。

続いて、エクスポートの部分に関するところですが、 イベントログのCsvファイルの122行目の

ResultList<EipTEventlog> list = query.getResultList();

という一文でデータベースから格納してあるイベントログの情報をリスト化しています。

つまり、これより上の文章は、イベントログ用のテーブルになっているので、 スケジュール用のテーブルにする必要があります。

新たにテーブルを作ろうと悩んでいましたが、データベース上にすでにあることが判明しました。

その見方ですが、pgAdmin3のアプリケーションを立ち上げて スキーマ>public>テーブル>eip_t_schedule このファイルが、エクスポートするためのテーブルです。

eclipse上では、フォルダ上部の \oms\src\main\java\com\aimluck\eip\cayenne\om\portlet\ にあります。