Class SignedNumberStringDecimal


public class SignedNumberStringDecimal extends NumberStringDecimal
符号付き数値のデータタイプ。

入力時にはバイトデータを数値(BigDecimal)に変換し、 出力時にはオブジェクトをバイトデータに変換して返却する。

NumberStringDecimalを継承し、符号付き数値を読み書きする機能を追加している。

データタイプの引数として設定可能なパラメータ

データタイプの第1引数にはバイト長を指定する。必須項目である。

データタイプの第2引数には小数点位置を指定する。ここで指定された小数点位置に従い、データの読み書きを行う。
ただし、入力データに小数点が含まれている場合(例:123.45)は、ここで指定した小数点位置は無視され、入力データ内の小数点をもとにデータの読み込みが行われる。

本データタイプは符号付き数値の入出力データを扱うことを前提として設計されている。
入出力データとして符号なし数値のみを扱う場合は、NumberStringDecimalを使用すること。

データタイプの引数の一覧を以下に示す。

引数 パラメータ名 パラメータの型 必須/任意 デフォルト値
第1引数 バイト長 Integer 必須 -
第2引数 小数点位置 Integer 任意 0

セッターを使用して設定可能なパラメータ

小数点の要否は#setRequiredDecimalPoint(boolean)によって指定できる。
trueを設定した場合、出力データに小数点が付与される。

符号位置は#setFixedSignPosition(boolean)によって指定できる。
trueを設定した場合、符号位置は固定となる。
符号位置が固定の場合、入力データの先頭に符号が存在すると想定してデータを読み込み、また、符号を先頭に付与した出力データを書き込む。

正の符号の要否は#setFixedSignPosition(boolean)によって指定できる。
trueを設定した場合、正の符号は必須となる。
正の符号が必須の場合、入力データに正の符号が含まれないと例外をスローし、また出力データの先頭に正の符号を付与する。

セッターを使用して設定可能なパラメータの一覧を以下に示す。これらのパラメータはディレクティブを使用して設定することを想定している。

パラメータ名 パラメータの型 必須/任意 デフォルト値
小数点の要否 boolean 任意 true
符号位置の固定/非固定 boolean 任意 true
正の符号の要否 boolean 任意 false

入力時にはトリム処理を、出力時にはパディング処理を行う。
パディング/トリム文字として、デフォルトでは"0"を使用するが、個別にパディング/トリム文字を使用することもできる。
(※パディング/トリム文字として指定できるのは1バイトの文字のみである。また、パディング/トリム文字として1~9の文字を使用することはできない)

設定例

入力データを読み込む場合の設定例を以下に示す。

入力データ バイト長 小数点位置 符号位置の固定/非固定 正の符号の要否 パディング/トリム文字 入力データ変換後の値(BigDecimal)
0000012345 10 0 固定 不要 0 12345
+000012345 10 0 固定 必要 0 12345
-000012345 10 0 固定 不要 0 -12345
0000+12345 10 0 非固定 必要 0 12345
0000-12345 10 0 非固定 不要 0 -12345
(半角スペース4個)+12345 10 0 非固定 不要 半角スペース 12345
-000012345 10 2 固定 不要 0 -123.45

出力データを書き込む場合の設定例を以下に示す。

出力データ 出力データの型 バイト長 小数点位置 符号位置の固定/非固定 正の符号の要否 パディング/トリム文字 出力データ変換後の値(byte[])
12345 String 10 0 固定 不要 0 0000012345
12345 String 10 0 固定 必要 0 +000012345
-12345 String 10 0 固定 不要 0 -000012345
12345 String 10 0 非固定 必要 0 0000+12345
-12345 String 10 0 非固定 不要 0 0000-12345
12345 String 10 0 非固定 必要 半角スペース (半角スペース4個)+12345
12345 BigDecimal 10 0 非固定 必要 0 0000+12345
12345 BigDecimal 10 2 非固定 必要 0 000+123.45

小数点の要否の設定例については、親クラスNumberStringDecimalのjavadocを参照すること。

  • Constructor Details

    • SignedNumberStringDecimal

      public SignedNumberStringDecimal()
  • Method Details

    • initialize

      public DataType<BigDecimal,byte[]> initialize(Object... args)
      初期化処理を行う。
      Overrides:
      initialize in class NumberStringDecimal
      Parameters:
      args - データタイプのパラメータ
      Returns:
      初期化されたデータタイプ (通常はthisをリターンする)
    • validateReadDataFormat

      protected void validateReadDataFormat(String strData)
      入力データフォーマットの妥当性を検証する。
      Overrides:
      validateReadDataFormat in class NumberStringDecimal
      Parameters:
      strData - 入力データ
    • trim

      protected String trim(String str)
      トリム処理を行う。
      Overrides:
      trim in class NumberStringDecimal
      Parameters:
      str - トリム対象の文字列
      Returns:
      トリム後の文字列
    • convertOnWrite

      public byte[] convertOnWrite(Object data)
      出力時に書き込むデータの変換を行う。

      この実装では、出力データ(数値)をバイトデータに変換する。

      Overrides:
      convertOnWrite in class NumberStringDecimal
      Parameters:
      data - 書き込みを行うデータ
      Returns:
      変換後のバイトデータ
    • convertToBytes

      protected byte[] convertToBytes(String strData, boolean isMinus)
      文字列をエンコーディングに従いバイトデータに変換する。

      負数の場合は符号を削除したバイトデータを返却する。

      Parameters:
      strData - 文字列
      isMinus - 負数かどうか
      Returns:
      文字列を変換したバイトデータ
    • getPlusSign

      protected String getPlusSign()
      正の符号を取得する。

      本メソッドをオーバーライドすることで正の符号を変更することが可能である。

      Returns:
      正の符号
    • getMinusSign

      protected String getMinusSign()
      負の符号を取得する。

      本メソッドをオーバーライドすることで負の符号を変更することが可能である。 たとえば、本メソッドを「▲」を返却するようにオーバーライドすれば、負の符号として▲が使用される。

      Returns:
      負の符号
    • setRequiredPlusSign

      public SignedNumberStringDecimal setRequiredPlusSign(boolean isRequiredPlusSign)
      正の符号の要否を設定する。
      Parameters:
      isRequiredPlusSign - 正の符号の要否(trueの場合、必要)
      Returns:
      このオブジェクト自体
    • setFixedSignPosition

      public SignedNumberStringDecimal setFixedSignPosition(boolean isFixedSignPosition)
      符号位置の固定/非固定を設定する。
      Parameters:
      isFixedSignPosition - 符号位置の固定/非固定(trueの場合、固定)
      Returns:
      このオブジェクト自体