前回同様、イベントログの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\ にあります。