Class NumberStringDecimal
- Direct Known Subclasses:
SignedNumberStringDecimal
入力時にはバイトデータを数値(BigDecimal)に変換し、 出力時にはオブジェクトをバイトデータに変換して返却する。
本データタイプは符号なし数値の入出力データを扱うことを前提として設計されている。
入出力データとして符号付き数値を扱う場合は、SignedNumberStringDecimal
を使用すること。
本データタイプは符号なし数値の入出力データを扱うことを前提として設計されている。
よって符号('+'または'-')が存在する入力データや、負数の出力データを扱うことはできない。
入力時にはトリム処理を、出力時にはパディング処理を行う。
パディング/トリム文字として、デフォルトでは"0"を使用するが、個別にパディング/トリム文字を使用することもできる。
(※パディング/トリム文字として指定できるのは1バイトの文字のみである。また、パディング/トリム文字として1~9の文字を使用することはできない)
データタイプの第1引数にはバイト長を指定する。必須項目である。
データタイプの第2引数には小数点位置を指定する。ここで指定された小数点位置に従い、データの読み書きを行う。
ただし、入力データに小数点が含まれている場合(例:123.45)は、ここで指定した小数点位置は無視され、入力データ内の小数点をもとにデータの読み込みが行われる。
データタイプの引数の一覧を以下に示す。
引数 | パラメータ名 | パラメータの型 | 必須/任意 | デフォルト値 |
---|---|---|---|---|
第1引数 | バイト長 | Integer | 必須 | - |
第2引数 | 小数点位置 | Integer | 任意 | 0 |
小数点の要否は#setRequiredDecimalPoint(boolean)によって指定できる。
trueを設定した場合、出力データに小数点が付与される。
セッタを使用して設定可能なパラメータの一覧を以下に示す。これらのパラメータはディレクティブを使用して設定することを想定している。
パラメータ名 | パラメータの型 | 必須/任意 | デフォルト値 |
---|---|---|---|
小数点の要否 | boolean | 任意 | true |
入力データを読み込む場合の設定例を以下に示す。
入力データ | バイト長 | 小数点位置 | 小数点の要否 | パディング/トリム文字 | 入力データ変換後の値(BigDecimal) |
---|---|---|---|---|---|
0000012345 | 10 | 0 | 必要 | 0 | 12345 |
0000123.45 | 10 | 0 | 必要 | 0 | 123.45 |
0000012345 | 10 | 0 | 必要 | 0 | 12345 |
(半角スペース5個)12345 | 10 | 0 | 必要 | 半角スペース | 12345 |
0000012345 | 10 | 2 | 必要 | 0 | 123.45 |
出力データを書き込む場合の設定例を以下に示す。
出力データ | 出力データの型 | バイト長 | 小数点位置 | 小数点の要否 | パディング/トリム文字 | 出力データ変換後の値(byte[]) |
---|---|---|---|---|---|---|
12345 | String | 10 | 0 | 必要 | 0 | 0000012345 |
123.45 | String | 10 | 0 | 必要 | 0 | 0000012345 |
12345 | String | 10 | 0 | 必要 | 半角スペース | (半角スペース5個)12345 |
12345 | BigDecimal | 10 | 0 | 必要 | 0 | 0000012345 |
123.45 | BigDecimal | 10 | 2 | 必要 | 0 | 0000123.45 |
123.45 | BigDecimal | 10 | 3 | 必要 | 0 | 000123.450 |
123.45 | BigDecimal | 10 | 3 | 不要 | 0 | 0000123450 |
12345 | BigDecimal | 10 | 3 | 必要 | 0 | 012345.000 |
123000 | BigDecimal | 10 | -3 | 不要 | 0 | 0000000123 |
123000 | BigDecimal | 10 | -4 | 必要 | 0 | 00000012.3 |
-
Field Summary
FieldsFields inherited from class nablarch.core.dataformat.convertor.datatype.DataType
convertEmptyToNull
-
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionprotected void
checkBytesSize
(byte[] bytes) 出力データのサイズをチェックする。convertOnRead
(byte[] data) 入力時に読み込んだデータを変換する。protected BigDecimal
convertOnRead
(String strData) 文字列に変換した入力データに対してトリム処理を行い、BigDecimalに変換する。byte[]
convertOnWrite
(Object data) 出力時にフィールドデータの変換を行う。protected byte[]
convertToBytes
(String strData) 文字列をエンコーディングに従いバイトデータに変換する。protected String
formatWriteData
(BigDecimal bigDecimal) 書き込みを行うデータをフォーマットする。protected byte[]
getPaddingBytes
(String paddingStr) パディング/トリム文字のバイト配列を返却する。protected String
パディング/トリム文字を返却する。 パディング/トリム文字が指定されていない場合、デフォルトで半角スペースを使用する。int
getScale()
小数点の位置を取得する。DataType<BigDecimal,
byte[]> init
(FieldDefinition field, Object... args) 初期化処理を行う。DataType<BigDecimal,
byte[]> initialize
(Object... args) 初期化処理を行う。protected boolean
isNegative
(BigDecimal bigDecimal) BigDecimalが負数かどうか。protected byte[]
padding
(byte[] bytes, int size) パディング処理を行う。setRequiredDecimalPoint
(boolean requiredDecimalPoint) 小数点の要否を設定する。protected BigDecimal
toBigDecimal
(String trimmedStr) トリム後の文字列をBigDecimalに変換する。protected String
トリム処理を行う。protected void
validateReadDataFormat
(String data) 入力データが妥当であることをチェックする。protected void
validateWriteDataFormat
(BigDecimal bigDecimal) 書き込みを行うデータの形式をチェックする。Methods inherited from class nablarch.core.dataformat.convertor.datatype.ByteStreamDataSupport
getSize, setSize
Methods inherited from class nablarch.core.dataformat.convertor.datatype.DataType
getField, removePadding, setConvertEmptyToNull
-
Field Details
-
PADDING_CHAR_LENGTH
protected static final int PADDING_CHAR_LENGTHパディング/トリム文字のサイズ- See Also:
-
-
Constructor Details
-
NumberStringDecimal
public NumberStringDecimal()
-
-
Method Details
-
init
初期化処理を行う。- Overrides:
init
in classDataType<BigDecimal,
byte[]> - Parameters:
field
- フィールド定義args
- データタイプのパラメータ- Returns:
- 初期化されたデータタイプ (通常はthisをリターンする)
-
getPaddingBytes
パディング/トリム文字のバイト配列を返却する。- Parameters:
paddingStr
- パディング/トリム文字- Returns:
- パディング/トリム文字のバイト配列
-
initialize
初期化処理を行う。- Specified by:
initialize
in classDataType<BigDecimal,
byte[]> - Parameters:
args
- データタイプのパラメータ- Returns:
- 初期化されたデータタイプ (通常はthisをリターンする)
-
convertOnRead
入力時に読み込んだデータを変換する。この実装では、入力時に、入力データをBigDecimalに変換して返却する。
変換の際に指定された文字でトリムを行う。デフォルトのトリム文字として'0'を使用する。
入力データの読み込みは、
setRequiredDecimalPoint(boolean)
で指定された小数点位置にしたがって行う。
ただし、入力データに小数点が含まれている場合(例:123.45)は、入力データ内の小数点にしたがってデータの読み込みが行われる。- Specified by:
convertOnRead
in classDataType<BigDecimal,
byte[]> - Parameters:
data
- フィールドの値データ- Returns:
- 変換後の値
-
convertOnRead
文字列に変換した入力データに対してトリム処理を行い、BigDecimalに変換する。入力データに符号('+'または'-')が存在する場合、例外をスローする。
- Parameters:
strData
- 入力データ- Returns:
- 数値
-
validateReadDataFormat
入力データが妥当であることをチェックする。 数値型で無い場合は、例外をスローする。- Parameters:
data
- 入力データまたは出力データ
-
trim
トリム処理を行う。 もし、パディング/トリム文字が'0'かつ、トリム対象のデータが0のみで構成される数値(0や000000)の場合、0を返却する。- Parameters:
str
- トリム対象のデータ- Returns:
- トリム後の文字列
-
toBigDecimal
トリム後の文字列をBigDecimalに変換する。- Parameters:
trimmedStr
- トリム後の文字列- Returns:
- 変換後のBigDecimal
-
convertOnWrite
出力時にフィールドデータの変換を行う。 もし書き込みを行うデータが負数の場合、例外をスローする。- Specified by:
convertOnWrite
in classDataType<BigDecimal,
byte[]> - Parameters:
data
- 書き込みを行うデータ- Returns:
- 変換後のバイトデータ
-
validateWriteDataFormat
書き込みを行うデータの形式をチェックする。データが負の符号を持つ場合、例外をスローする。
符号を許容するサブクラスでは、本メソッドをオーバーライドし、無効化すること。
- Parameters:
bigDecimal
- 書き込みを行うデータ
-
formatWriteData
書き込みを行うデータをフォーマットする。小数点が必要な場合は小数点を付与した文字列を返却し、
不要な場合は小数点を削除した文字列を返却する。- Parameters:
bigDecimal
- BigDecimal変換後の書き込みデータ- Returns:
- フォーマット後のデータ
-
isNegative
BigDecimalが負数かどうか。- Parameters:
bigDecimal
- BigDecimal- Returns:
- 負数かどうか
-
convertToBytes
文字列をエンコーディングに従いバイトデータに変換する。- Parameters:
strData
- 文字列- Returns:
- 文字列を変換したバイトデータ
-
checkBytesSize
protected void checkBytesSize(byte[] bytes) 出力データのサイズをチェックする。 出力データのサイズがバイト長を超える場合、例外をスローする。- Parameters:
bytes
- 出力データ
-
padding
protected byte[] padding(byte[] bytes, int size) パディング処理を行う。- Parameters:
bytes
- パディング前の値size
- パディングを行うサイズ- Returns:
- パディング後の値
-
getPaddingStr
パディング/トリム文字を返却する。 パディング/トリム文字が指定されていない場合、デフォルトで半角スペースを使用する。- Returns:
- パディング/トリム文字
-
setRequiredDecimalPoint
小数点の要否を設定する。- Parameters:
requiredDecimalPoint
- 小数点の要否(trueの場合、必要)- Returns:
- このオブジェクト自体
-
getScale
public int getScale()小数点の位置を取得する。- Returns:
- 小数点の位置
-