Class ZonedDecimal

Direct Known Subclasses:
SignedZonedDecimal

public class ZonedDecimal extends ByteStreamDataSupport<BigDecimal>
ゾーン10進数のデータタイプ。

入力時にはバイト配列(ゾーン10進数)をBigDecimal型に変換し、 出力時にはオブジェクト(BigDecimalや文字列型の数値など)をバイト配列(ゾーン10進数)に変換して返却する。

出力対象のデータ(#convertOnWrite(Object)の引数)として使用できるオブジェクトの種類を以下に示す。nullは許容しない。

  • BigDecimal
  • BigDecimalに変換可能なオブジェクト(数値や文字列など)

出力対象のデータに小数点が含まれる場合、小数点を取り除いた値に変換する。
また、出力対象のデータがBigDecimalの場合はスケーリングした値に変換する。
以下に出力例を示す。

出力対象データの型 出力対象データの値 出力対象データの変換後の値
Integer 123.45 12345
String "123.45000" 12345000
BigDecimal 123.45 12345
BigDecimal(scale=5) 123.45 12345000

本クラスが出力対象のデータの桁数として許容するのは18桁までの数値である。
この桁数とは、出力対象のデータから小数点を取り除き、BigDecimalの場合はスケールに従い変換した後の桁数のことを指す。
(※処理を高速化するために内部的に出力対象データをlong型に変換し扱っているので、このような桁数の制約を設けている)

  • Constructor Details

    • ZonedDecimal

      public ZonedDecimal()
  • Method Details

    • initialize

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

      public BigDecimal convertOnRead(byte[] buff)
      入力時に読み込んだデータを変換する。
      Specified by:
      convertOnRead in class DataType<BigDecimal,byte[]>
      Parameters:
      buff - フィールドの値データ
      Returns:
      変換後の値
    • convertOnWrite

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

      出力対象のデータが以下の場合、InvalidDataFormatExceptionをスローする。

      • null
      • BigDecimalに変換できないオブジェクト
      • データから小数点を取り除き、またBigDecimalの場合はスケーリングした後の桁数が19桁以上の場合
      Specified by:
      convertOnWrite in class DataType<BigDecimal,byte[]>
      Parameters:
      data - 書き込みを行うデータ
      Returns:
      変換後の値
    • setSigned

      public ZonedDecimal setSigned(boolean signed)
      符号付きの整数として処理するかどうかを設定する。
      Parameters:
      signed - 符号付きの整数として扱う場合はtrue
      Returns:
      このオブジェクト自体
    • getZoneSignNibbleNegative

      public Byte getZoneSignNibbleNegative()
      符号付きゾーン10進数値の末尾桁の上位4ビット(負数の場合)を返却する。
      Returns:
      ゾーン10進数値の上位4ビット(負数の場合)
    • setZoneSignNibblePositive

      public ZonedDecimal setZoneSignNibblePositive(Integer nibble)
      符号付きゾーン10進数値の末尾桁の上位4ビット(正数の場合)を返却する。
      Parameters:
      nibble - 符号付きゾーン10進数値の末尾桁の上位4ビット(正数の場合)
      Returns:
      このオブジェクト自体
    • setZoneSignNibbleNegative

      public ZonedDecimal setZoneSignNibbleNegative(Integer nibble)
      符号付きゾーン10進数値の末尾桁の上位4ビット(負数の場合)を返却する。
      Parameters:
      nibble - 符号付きゾーン10進数値の末尾桁の上位4ビット(負数の場合)
      Returns:
      このオブジェクト自体
    • setZoneNibble

      public ZonedDecimal setZoneNibble(Byte zoneNibble)
      ゾーンNibbleを設定する。
      Parameters:
      zoneNibble - ゾーンNibble
      Returns:
      このオブジェクト自体
    • setDefaultZoneSignNibbleNegative

      public ZonedDecimal setDefaultZoneSignNibbleNegative(Byte defaultZoneSignNibbleNegative)
      デフォルトの符号付きゾーン10進数値の末尾桁の上位4ビット(負数の場合)を設定する。
      Parameters:
      defaultZoneSignNibbleNegative - デフォルトの符号付きゾーン10進数値の末尾桁の上位4ビット(負数の場合)
      Returns:
      このオブジェクト自体
    • setDefaultZoneSignNibblePositive

      public ZonedDecimal setDefaultZoneSignNibblePositive(Byte defaultZoneSignNibblePositive)
      デフォルトの符号付きゾーン10進数値の末尾桁の上位4ビット(正数の場合)を設定する。
      Parameters:
      defaultZoneSignNibblePositive - デフォルトの符号付きゾーン10進数値の末尾桁の上位4ビット(正数の場合)
      Returns:
      このオブジェクト自体