Class CSVPath

All Implemented Interfaces:
IPath<Integer>

public class CSVPath extends AbstractPath<Integer>
最小限のCSVPath実装

CSV列選択のパス一致判定のみに特化したシンプルな設計

複数の列セレクターをOR条件で判定する機能を提供

セレクターには次を指定できる。

  • 列名
  • 0始まりの数値インデックス
  • "*" による全列選択

注意: "*" はワイルドカードとして解釈されるため、ヘッダー名そのものが "*" の列を個別指定する用途には使えない。

  • Method Details

    • of

      public static CSVPath of(String selector)
      単一セレクターでCSVPathを作成
      Parameters:
      selector - 列選択子(列名、数値インデックス、または "*" による全列選択)
      Returns:
      CSVPath instance
      Throws:
      IllegalArgumentException - セレクターが不正な場合
    • of

      public static CSVPath of(List<String> selectorList)
      複数セレクターでCSVPathを作成(OR条件)
      Parameters:
      selectorList - 列選択子のリスト
      Returns:
      CSVPath instance
      Throws:
      IllegalArgumentException - セレクターが不正な場合
    • validateAndNormalize

      protected void validateAndNormalize(String rawSelector)
      検証・正規化処理のフック。

      AbstractPath(String) コンストラクタから呼び出されるが、CSVPathでは検証を ファクトリメソッド(of(String) / of(java.util.List))側で行うため、 コンストラクタ内スロー(CT_CONSTRUCTOR_THROW)を避けるためにここでは何もしない。

      Specified by:
      validateAndNormalize in class AbstractPath<Integer>
      Parameters:
      rawSelector - 生のセレクター文字列(未使用)
    • matches

      public boolean matches(Integer columnIndex)
      指定された列インデックスがこのパスにマッチするかどうかを判定する(OR条件)。

      いずれかのセレクターがインデックスに一致すれば true を返す。

      注意: このメソッドでインデックス一致として扱えるのは、数値インデックス指定セレクター(例: "0")と全列選択 "*" のみ。 列名指定セレクター (例: "name", "userId")は常に false を返す。 列名での一致判定には matches(String[], int) を使用すること。

      Parameters:
      columnIndex - 判定対象の列インデックス(0始まり)。nullまたは負値の場合はfalse
      Returns:
      いずれかのセレクターが一致する場合true
    • matches

      public boolean matches(String[] headers, int targetIndex)
      列ヘッダー配列との一致判定(OR条件)
      Parameters:
      headers - CSV列ヘッダー配列
      targetIndex - 対象列のインデックス
      Returns:
      いずれかのセレクターが一致する場合true
    • findMatchingIndices

      public List<Integer> findMatchingIndices(String[] headers)
      マッチするすべての列インデックスを取得(Don't Ask Tell準拠)
      Parameters:
      headers - CSV列ヘッダー配列
      Returns:
      マッチした列インデックスのリスト
    • findMatchingIndices

      public List<Integer> findMatchingIndices(int totalColumns)
      マッチするすべての列インデックスを取得(ヘッダーなしの場合)
      Parameters:
      totalColumns - 総列数
      Returns:
      マッチした列インデックスのリスト
    • toString

      public String toString()
      このパスの文字列表現を返す。

      セレクターが1つの場合はその値をそのまま返し、複数の場合はカンマ区切りで結合する。

      Overrides:
      toString in class Object
      Returns:
      セレクターの文字列表現