/** * <br> * [機 能] 順序変更処理 <br> * [解 説] <br> * [備 考] * * @param con コネクション * @param paramMdl パラメータ情報 * @param changeKbn 処理区分 0:順序をあげる 1:順序を下げる * @throws SQLException SQL実行時例外 */ public void updateSort(Connection con, Sml310ParamModel paramMdl, int changeKbn) throws SQLException { // 画面表示全キーリスト取得 String[] keyList = paramMdl.getSml310sortLabel(); if (keyList == null || keyList.length < 1) { return; } // ラジオ選択値取得 String selectedKey = paramMdl.getSml310SortRadio(); if (StringUtil.isNullZeroString(selectedKey)) { return; } String[] selectKeyList = selectedKey.split(SORT_SEPARATE); // 画面表示順 int selectedKeyDispNum = Integer.parseInt(selectKeyList[2]); log__.debug("画面表示順 = " + selectedKeyDispNum); // 画面の最初に表示されている項目 + 順位を上げる if (selectedKeyDispNum == 0 && changeKbn == GSConstSmail.SORT_UP) { return; // 画面の最後に表示されている項目 + 順位を下げる } else if (selectedKeyDispNum == keyList.length - 1 && changeKbn == GSConstSmail.SORT_DOWN) { return; } // 選択された項目のラベルSID + ソート順 int motoSid = Integer.parseInt(selectKeyList[0]); int motoSort = Integer.parseInt(selectKeyList[1]); int sakiSid = -1; int sakiSort = -1; int target = selectedKeyDispNum; if (changeKbn == GSConstSmail.SORT_UP) { target -= 1; } else if (changeKbn == GSConstSmail.SORT_DOWN) { target += 1; } // 画面表示全キーから入れ替え先のデータを探す TreeMap<Integer, String> sortMap = new TreeMap<Integer, String>(); for (String allKey : keyList) { String[] allKeyList = allKey.split(SORT_SEPARATE); int allKeyDispNum = Integer.parseInt(allKeyList[2]); if (allKeyDispNum == target) { sakiSid = Integer.parseInt(allKeyList[0]); sakiSort = Integer.parseInt(allKeyList[1]); } else if (allKeyDispNum > target) { sortMap.put(allKeyDispNum, allKey); } } if (sakiSid == -1 || sakiSort == -1) { return; } // 順序入れ替え if (motoSort == sakiSort) { motoSort++; } Sml310Dao dao = new Sml310Dao(con); dao.updateSort(motoSid, motoSort, sakiSid, sakiSort); int newSort = sakiSort; // 新しいキーを設定 paramMdl.setSml310SortRadio(__getRadioValueStr(motoSid, newSort, target)); }