Class SignedNumberStringDecimal
入力時にはバイトデータを数値(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を参照すること。
-
Field Summary
Fields inherited from class nablarch.core.dataformat.convertor.datatype.NumberStringDecimal
PADDING_CHAR_LENGTH
Fields inherited from class nablarch.core.dataformat.convertor.datatype.DataType
convertEmptyToNull
-
Constructor Summary
-
Method Summary
Modifier and TypeMethodDescriptionbyte[]
convertOnWrite
(Object data) 出力時に書き込むデータの変換を行う。protected byte[]
convertToBytes
(String strData, boolean isMinus) 文字列をエンコーディングに従いバイトデータに変換する。protected String
負の符号を取得する。protected String
正の符号を取得する。DataType<BigDecimal,
byte[]> initialize
(Object... args) 初期化処理を行う。setFixedSignPosition
(boolean isFixedSignPosition) 符号位置の固定/非固定を設定する。setRequiredPlusSign
(boolean isRequiredPlusSign) 正の符号の要否を設定する。protected String
トリム処理を行う。protected void
validateReadDataFormat
(String strData) 入力データフォーマットの妥当性を検証する。Methods inherited from class nablarch.core.dataformat.convertor.datatype.NumberStringDecimal
checkBytesSize, convertOnRead, convertOnRead, convertToBytes, formatWriteData, getPaddingBytes, getPaddingStr, getScale, init, isNegative, padding, setRequiredDecimalPoint, toBigDecimal, validateWriteDataFormat
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
-
Constructor Details
-
SignedNumberStringDecimal
public SignedNumberStringDecimal()
-
-
Method Details
-
initialize
初期化処理を行う。- Overrides:
initialize
in classNumberStringDecimal
- Parameters:
args
- データタイプのパラメータ- Returns:
- 初期化されたデータタイプ (通常はthisをリターンする)
-
validateReadDataFormat
入力データフォーマットの妥当性を検証する。- Overrides:
validateReadDataFormat
in classNumberStringDecimal
- Parameters:
strData
- 入力データ
-
trim
トリム処理を行う。- Overrides:
trim
in classNumberStringDecimal
- Parameters:
str
- トリム対象の文字列- Returns:
- トリム後の文字列
-
convertOnWrite
出力時に書き込むデータの変換を行う。 この実装では、出力データ(数値)をバイトデータに変換する。- Overrides:
convertOnWrite
in classNumberStringDecimal
- Parameters:
data
- 書き込みを行うデータ- Returns:
- 変換後のバイトデータ
-
convertToBytes
文字列をエンコーディングに従いバイトデータに変換する。 負数の場合は符号を削除したバイトデータを返却する。- Parameters:
strData
- 文字列isMinus
- 負数かどうか- Returns:
- 文字列を変換したバイトデータ
-
getPlusSign
正の符号を取得する。 本メソッドをオーバーライドすることで正の符号を変更することが可能である。- Returns:
- 正の符号
-
getMinusSign
負の符号を取得する。 本メソッドをオーバーライドすることで負の符号を変更することが可能である。 たとえば、本メソッドを「▲」を返却するようにオーバーライドすれば、負の符号として▲が使用される。- Returns:
- 負の符号
-
setRequiredPlusSign
正の符号の要否を設定する。- Parameters:
isRequiredPlusSign
- 正の符号の要否(trueの場合、必要)- Returns:
- このオブジェクト自体
-
setFixedSignPosition
符号位置の固定/非固定を設定する。- Parameters:
isFixedSignPosition
- 符号位置の固定/非固定(trueの場合、固定)- Returns:
- このオブジェクト自体
-