/** * <br> * 時間帯情報を画面表示用に格納します * * @param chList チャートモデルリスト * @param admConf タイムカード基本設定モデル * @return ArrayList < TcdTimezoneMeiModel > */ private ArrayList<TcdTimezoneMeiModel> __getDspTimeZoneList( ArrayList<TcdTimezoneMeiModel> chList, TcdAdmConfModel admConf) { ArrayList<TcdTimezoneMeiModel> dspList = new ArrayList<TcdTimezoneMeiModel>(); TcdTimezoneMeiModel valueMdl = null; // 時間帯情報無し log__.debug("時間帯情報件数==>" + chList.size()); if (chList.size() == 0) { valueMdl = new TcdTimezoneMeiModel(); valueMdl.setTimeZoneSID(GSConstTimecard.BLANK_ZONE_SID); valueMdl.setRows(__getMaxRowsCount(admConf.getTacInterval())); valueMdl.setIndex(1); chList.add(valueMdl); return chList; } // 出力済情報の格納用 HashMap<String, TcdTimezoneMeiModel> map = new HashMap<String, TcdTimezoneMeiModel>(); while (chList.size() != map.size()) { // 1行分を作成する dspList = __getDailyLineMdl(chList, map, admConf, dspList); } return dspList; }
/** * <br> * 1行分の時間帯モデルを生成する <br> * [備考]出力済みの時間帯情報はHashMapに格納します * * @param tzhList 時間帯情報 * @param map 出力済みの時間帯情報情報 * @param admConf タイムカード基本設定 * @param dspList 表示情報リスト * @return ArrayList */ private ArrayList<TcdTimezoneMeiModel> __getDailyLineMdl( ArrayList<TcdTimezoneMeiModel> tzhList, HashMap<String, TcdTimezoneMeiModel> map, TcdAdmConfModel admConf, ArrayList<TcdTimezoneMeiModel> dspList) { TcdTimezoneMeiModel valueMdl = null; TcdTimezoneMeiModel tzMdl = null; int tzSid = 0; int maxRows = __getMaxRowsCount(admConf.getTacInterval()); int endIndex = 1; for (int i = 0; i < tzhList.size(); i++) { tzMdl = tzhList.get(i); tzSid = tzMdl.getTimeZoneSID(); if (map.containsKey(String.valueOf(tzSid))) { // 出力済みは除外 continue; } // 空白部分を設定 valueMdl = __getBlankTimeZone(tzMdl, admConf, endIndex); if (valueMdl != null) { dspList.add(valueMdl); endIndex = endIndex + valueMdl.getRows(); log__.debug("空白部分==>" + valueMdl.getRows()); } // 時間帯部分を設定 int rows = __getRows(tzMdl, admConf, endIndex); log__.debug("時間帯部分row==>" + rows); valueMdl = new TcdTimezoneMeiModel(); valueMdl.setRows(rows); valueMdl.setTimeZoneSID(tzMdl.getTimeZoneSID()); valueMdl.setTimeZoneKbn(tzMdl.getTimeZoneKbn()); valueMdl.setTimeZoneStr(tzMdl.getTimeZoneStr()); valueMdl.setIndex(endIndex); dspList.add(valueMdl); endIndex = endIndex + rows; map.put(String.valueOf(tzSid), tzMdl); // 格納先インデックスがMAXの場合breakする if (endIndex == maxRows) { break; } } // 表示終了時刻までの空白を設定 valueMdl = __getEndBlankTimeZone(tzMdl, admConf, endIndex); if (valueMdl != null) { dspList.add(valueMdl); endIndex = endIndex + valueMdl.getRows(); } return dspList; }
/** * <br> * 表示終了時刻と出力済みポインタから空時間帯を必要に応じて生成する * * @param schMdl 時間帯情報 * @param admConf タイムカード基本設定 * @param endIndex 出力済みポインタ * @return TcdTimezoneMeiModel */ private TcdTimezoneMeiModel __getEndBlankTimeZone( TcdTimezoneMeiModel schMdl, TcdAdmConfModel admConf, int endIndex) { TcdTimezoneMeiModel valueMdl = null; int index = __getMaxRowsCount(admConf.getTacInterval()) + 1; int rows = index - endIndex; if (rows > 0) { // 空の時間帯を生成する valueMdl = new TcdTimezoneMeiModel(); valueMdl.setRows(rows); valueMdl.setTimeZoneSID(GSConstTimecard.BLANK_ZONE_SID); valueMdl.setIndex(endIndex); } return valueMdl; }
/** * <br> * 時間帯情報と出力済みポインタから空時間帯を必要に応じて生成する * * @param tzMdl 時間帯情報 * @param admConf 基本設定 * @param endIndex 出力済みポインタ * @return TcdTimezoneMeiModel */ private TcdTimezoneMeiModel __getBlankTimeZone( TcdTimezoneMeiModel tzMdl, TcdAdmConfModel admConf, int endIndex) { TcdTimezoneMeiModel valueMdl = null; int index = __getIndex(tzMdl, admConf); int rows = index - endIndex; log__.debug("__getBlankTimeZone.index.endIndex.rows==>" + index + "." + endIndex + "." + rows); if (rows > 0) { // 空時間帯を生成する valueMdl = new TcdTimezoneMeiModel(); valueMdl.setRows(rows); valueMdl.setTimeZoneSID(GSConstTimecard.BLANK_ZONE_SID); valueMdl.setIndex(endIndex); } return valueMdl; }