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