Class CsvDataBindConfig

java.lang.Object
nablarch.common.databind.csv.CsvDataBindConfig
All Implemented Interfaces:
DataBindConfig

@Published public class CsvDataBindConfig extends Object implements DataBindConfig
CSVのフォーマットを表すクラス。

デフォルト設定を使用する場合は、DEFAULTオブジェクトを使用する。
独自の設定を行う場合は、CsvDataBindConfig(char, String, char, boolean, boolean, String[], String[], Charset, boolean, QuoteMode, List) を使用しオブジェクトを生成するか、DEFAULTオブジェクトのセッタを実行して値を設定する。

下記にデフォルトの設定値を示す。

 列区切り文字                          -->  ","
 行区切り文字                          -->  "\r\n"(CRLF)
 フィールド囲み文字                    -->  """
 空行を無視するか否か                  -->  無視する(true)
 ヘッダ行が必須か否か                  -->  必須(true)
 ヘッダーに出力するタイトル            -->  空のString型配列
 プロパティ名リスト                    -->  空のString型配列
 文字コード                            -->  UTF-8
 空のフィールドをnullに変換するか否か  --> 変換する(true)
 フィールド囲み文字で囲む
 フィールドを指定するモード            -->  NORMAL(フィールド囲み文字、フィールド区切り文字、改行が存在するフィールドが対象となる)
 フィールド囲み文字で囲む
 フィールドのリスト                    -->  空のリスト
 
Author:
Naoki Yamamoto
  • Field Details

    • DEFAULT

      public static final CsvDataBindConfig DEFAULT
      デフォルトのフォーマット定義
    • RFC4180

      public static final CsvDataBindConfig RFC4180
      RFC4180準拠のフォーマット定義
    • EXCEL

      public static final CsvDataBindConfig EXCEL
      EXCEL形式のCSVフォーマット定義
    • TSV

      public static final CsvDataBindConfig TSV
      タブ区切り(TSV)のフォーマット定義
  • Constructor Details

    • CsvDataBindConfig

      public CsvDataBindConfig(char fieldSeparator, String lineSeparator, char quote, boolean ignoreEmptyLine, boolean requiredHeader, String[] headerTitles, Charset charset, boolean emptyToNull, CsvDataBindConfig.QuoteMode quoteMode, List<String> quotedColumnNames)
      CSVのフォーマット定義を生成する。
      Parameters:
      fieldSeparator - 列区切り文字
      lineSeparator - 行区切り文字(\r\n(CRLF) or \r(CR) or \n(LF)であること)
      quote - フィールド囲み文字
      ignoreEmptyLine - 空行を無視するか否か
      requiredHeader - ヘッダ行(タイトル行)が必須か否か
      headerTitles - ヘッダーに出力するタイトル
      charset - 文字コード
      emptyToNull - 空のフィールドをnullに変換するかどうか
      quoteMode - 出力時にフィールド囲み文字で囲むフィールドを指定するモード
      quotedColumnNames - フィールド囲み文字で囲むフィールドのリスト
      Throws:
      IllegalArgumentException - 行区切り文字が「\r\n(CRLF)・\r(CR)・\n(LF)」以外の場合
    • CsvDataBindConfig

      public CsvDataBindConfig(char fieldSeparator, String lineSeparator, char quote, boolean ignoreEmptyLine, boolean requiredHeader, String[] headerTitles, String[] properties, Charset charset, boolean emptyToNull, CsvDataBindConfig.QuoteMode quoteMode, List<String> quotedColumnNames)
      CSVのフォーマット定義を生成する。
      Parameters:
      fieldSeparator - 列区切り文字
      lineSeparator - 行区切り文字(\r\n(CRLF) or \r(CR) or \n(LF)であること)
      quote - フィールド囲み文字
      ignoreEmptyLine - 空行を無視するか否か
      requiredHeader - ヘッダ行(タイトル行)が必須か否か
      headerTitles - ヘッダーに出力するタイトル
      properties - プロパティ名リスト
      charset - 文字コード
      emptyToNull - 空のフィールドをnullに変換するかどうか
      quoteMode - 出力時にフィールド囲み文字で囲むフィールドを指定するモード
      quotedColumnNames - フィールド囲み文字で囲むフィールドのリスト
      Throws:
      IllegalArgumentException - 行区切り文字が「\r\n(CRLF)・\r(CR)・\n(LF)」以外の場合
  • Method Details

    • getFieldSeparator

      public char getFieldSeparator()
      列区切り文字を取得する。
      Returns:
      列区切り文字
    • withFieldSeparator

      public CsvDataBindConfig withFieldSeparator(char newFieldSeparator)
      列区切り文字を設定する。
      Parameters:
      newFieldSeparator - 新しい列区切り文字
      Returns:
      新しいCsvDataBindConfig
    • getLineSeparator

      public String getLineSeparator()
      行区切り文字を取得する。
      Returns:
      行区切り文字
    • withLineSeparator

      public CsvDataBindConfig withLineSeparator(String newLineSeparator)
      改行文字を設定する。

      改行文字が(CR|LF|CRLF)以外の場合はエラーとする。

      Parameters:
      newLineSeparator - 改行文字
      Returns:
      新しいCsvDataBindConfig
    • getQuote

      public char getQuote()
      フィールド囲み文字を取得する。
      Returns:
      フィールド囲み文字
    • withQuote

      public CsvDataBindConfig withQuote(char newQuote)
      フィールド囲み文字を設定する。
      Parameters:
      newQuote - フィールド囲み文字
      Returns:
      新しいCsvDataBindConfig
    • isIgnoreEmptyLine

      public boolean isIgnoreEmptyLine()
      空行を無視するか否かを取得する。
      Returns:
      空行を無視する場合true
    • withIgnoreEmptyLine

      public CsvDataBindConfig withIgnoreEmptyLine()
      空行を無視する。
      Returns:
      新しいCsvDataBindConfig
    • withIgnoreEmptyLine

      public CsvDataBindConfig withIgnoreEmptyLine(boolean newOption)
      空行を無視するか否かを設定する。
      Parameters:
      newOption - 空行を無視する場合true
      Returns:
      新しいCsvDataBindConfig
    • isRequiredHeader

      public boolean isRequiredHeader()
      ヘッダー行(タイトル行)が必須か否か。
      Returns:
      ヘッダー行(タイトル行)が必須の場合true
    • withRequiredHeader

      public CsvDataBindConfig withRequiredHeader()
      ヘッダー行(タイトル行)を必須に設定する。
      Returns:
      新しいCsvDataBindConfig
    • withRequiredHeader

      public CsvDataBindConfig withRequiredHeader(boolean newOption)
      ヘッダー行(タイトル行)を必須とするか否かを設定する。
      Parameters:
      newOption - ヘッダーが必須な場合true
      Returns:
      新しいCsvDataBindConfig
    • getHeaderTitles

      public String[] getHeaderTitles()
      ヘッダー行(タイトル行)に出力するタイトルのリスト。
      Returns:
      ヘッダー行に出力するタイトル
    • withHeaderTitles

      public CsvDataBindConfig withHeaderTitles(String... newHeaderTitles)
      ヘッダー行(タイトル行)に出力するタイトルを設定する。
      Parameters:
      newHeaderTitles - ヘッダー行(タイトル行)に出力するタイトル
      Returns:
      新しいCsvDataBindConfig
    • getProperties

      public String[] getProperties()
      プロパティ名リストを取得する。
      Returns:
      プロパティ名リスト
    • withProperties

      public CsvDataBindConfig withProperties(String... newProperties)
      プロパティ名リストを設定する。
      Parameters:
      newProperties - プロパティ名リスト
      Returns:
      新しいCsvDataBindConfig
    • getKeys

      public String[] getKeys()
      オブジェクトにマッピングする際に使用するキーのリストを取得する。

      propertiesが設定されていれば、propertiesをキーとして返す。
      propertiesが設定されていなければ、headerTitlesをキーとして返す。

      Returns:
      キーのリスト
    • getCharset

      public Charset getCharset()
      文字コードを取得する。
      Returns:
      文字コード
    • withCharset

      public CsvDataBindConfig withCharset(String newCharset)
      文字コードを設定する。
      Parameters:
      newCharset - 文字コード
      Returns:
      新しいCsvDataBindConfig
    • withCharset

      public CsvDataBindConfig withCharset(Charset newCharset)
      文字コードを設定する。
      Parameters:
      newCharset - 文字コード
      Returns:
      新しいCsvDataBindConfig
    • isEmptyToNull

      public boolean isEmptyToNull()
      空フィールドをnullに置き換えるか否か。
      Returns:
      置き換える場合はtrue
    • withEmptyToNull

      public CsvDataBindConfig withEmptyToNull(boolean newEmptyToNull)
      空フィールドをnullに置き換えるか否かを設定する。
      Parameters:
      newEmptyToNull - nullに置き換える場合はtrue
      Returns:
      新しいCsvDataBindConfig
    • getQuoteMode

      public CsvDataBindConfig.QuoteMode getQuoteMode()
      フィールド囲み文字で囲むフィールドを取得する。
      Returns:
      フィールド囲み文字で囲むフィールド
    • withQuoteMode

      public CsvDataBindConfig withQuoteMode(CsvDataBindConfig.QuoteMode newQuoteMode)
      出力時にフィールド囲み文字で囲むフィールドを設定する。
      Parameters:
      newQuoteMode - フィールド囲み文字で囲むフィールドを指定するモード
      Returns:
      新しいCsvDataBindConfig
    • getQuotedColumnNames

      public List<String> getQuotedColumnNames()
      出力時にフィールド囲み文字(getQuote())で囲むフィールドのリストを取得する。
      Returns:
      フィールド囲み文字で囲むフィールドのリスト
    • withQuotedColumnNames

      public CsvDataBindConfig withQuotedColumnNames(String... fieldNames)
      フィールド囲み文字(getQuote()で囲むフィールドのリストを設定する。

      getQuoteMode()CsvDataBindConfig.QuoteMode.CUSTOMの場合に、 設定したフィールドがフィールド囲み文字で囲まれる。

      Parameters:
      fieldNames - フィールド囲み文字で囲むフィールド名称
      Returns:
      新しいCsvDataBindConfig
    • verify

      public void verify()
      コンフィグの妥当性検証を行う。

      以下の場合に検証エラーとする。

      • ヘッダが必須でヘッダタイトルが未設定
      • ヘッダが任意でプロパティ名が未設定
      • ヘッダが必須でヘッダタイトルとプロパティ名のサイズが一致しない