Пример #1
0
  /**
   * <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));
  }