Class PackedDecimal

Direct Known Subclasses:
SignedPackedDecimal

public class PackedDecimal 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

    • PackedDecimal

      public PackedDecimal()
  • Method Details

    • initialize

      public PackedDecimal 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:
      変換後の値
    • setPackSignNibblePositive

      public PackedDecimal setPackSignNibblePositive(Integer nibble)
      符号付きパック10進数値の末尾桁の下位4ビット(正数の場合)を返却する。
      Parameters:
      nibble - 符号付きパック10進数値の末尾桁の下位4ビット(正数の場合)
      Returns:
      このオブジェクト自体
    • setPackSignNibbleNegative

      public PackedDecimal setPackSignNibbleNegative(Integer nibble)
      符号付きパック10進数値の末尾桁の下位4ビット(負数の場合)を返却する。
      Parameters:
      nibble - 符号付きパック10進数値の末尾桁の下位4ビット(負数の場合)
      Returns:
      このオブジェクト自体
    • getPackSignNibbleNegative

      public Byte getPackSignNibbleNegative()
      符号付きパック10進数値の末尾桁の下位4ビット(負数の場合)を返却する。
      Returns:
      パック10進数値の下位4ビット(負数の場合)
    • getPackSignNibblePositive

      public Byte getPackSignNibblePositive()
      符号付きパック10進数値の末尾桁の下位4ビット(正数の場合)を返却する。
      Returns:
      パック10進数値の下位4ビット(正数の場合)
    • setSigned

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

      public PackedDecimal setPackNibble(Byte packNibble)
      パックNibbleを設定する。
      Parameters:
      packNibble - パックNibble
      Returns:
      このオブジェクト自体
    • setDefaultPackSignNibbleNegative

      public PackedDecimal setDefaultPackSignNibbleNegative(Byte defaultPackSignNibbleNegative)
      デフォルトの符号付きパック10進数値の末尾桁の下位4ビット(負数の場合)を設定する。
      Parameters:
      defaultPackSignNibbleNegative - デフォルトの符号付きパック10進数値の末尾桁の下位4ビット(負数の場合)
      Returns:
      このオブジェクト自体
    • setDefaultPackSignNibblePositive

      public PackedDecimal setDefaultPackSignNibblePositive(Byte defaultPackSignNibblePositive)
      デフォルトの符号付きパック10進数値の末尾桁の下位4ビット(正数の場合)を設定する。
      Parameters:
      defaultPackSignNibblePositive - デフォルトの符号付きパック10進数値の末尾桁の下位4ビット(正数の場合)
      Returns:
      このオブジェクト自体