48.5. 3.DataField


DataField アノテーションは、フィールドのプロパティーを定義します。各データフィールドは、レコード内の位置、タイプ (string、int、date など)、およびパターン (任意) によって識別されます

アノテーション名レコードの種類レベル

DataField

all

プロパティー

パラメーター名typeInfo

pos

int

必須 - フィールドの 入力 位置。1 から … までの桁数 - position パラメーターを参照してください。

pattern

string

オプション - デフォルト値 = "" - Decimal、Date、

長さ

int

オプション - 固定長形式のフィールドの長さを表します

精度

int

オプション - 10 進数がフォーマット/解析されるときに使用される精度を表します

pattern

string

オプション - デフォルト値 = "" - Java フォーマッター (例では SimpleDateFormat) によってデータのフォーマット/検証に使用されます。パターンを使用する場合は、バインドデータ形式にロケールを設定することをお勧めします。us などの既知のロケールに設定するか、default を使用してプラットフォームのデフォルトロケールを使用します。デフォルトには Camel 2.14/2.13.3/2.12.5 が必要であることに注意してください。

position

int

オプション - 生成された CSV 内のフィールドの位置 (出力メッセージ) が、入力位置 (pos) と比較して異なる必要がある場合に使用します。pos パラメーターを参照してください。

必須

boolean

optional - default value = "false"

trim

boolean

optional - default value = "false"

defaultValue

string

Camel 2.10: オプション - デフォルト値 = "" - それぞれの CSV フィールドが空/利用できない場合のフィールドのデフォルト値を定義します

impliedDecimalSeparator

boolean

Camel 2.11: オプション - デフォルト値 = "false" - 指定された位置に暗黙の小数点があるかどうかを示します

lengthPos

int

Camel 2.11 : オプション - このフィールドの固定長を定義する固定長レコード内のデータフィールドを識別するために使用できます

align

string

オプション - デフォルト値 = "R" - テキストを固定長フィールド内で右または左に揃えます。値 R または L を使用してください

delimiter

string

Camel 2.11: オプション - 固定長レコード内の可変長フィールドの終わりを区切るために使用できます

ケース 1: pos

このパラメーター/属性は、csv レコード内のフィールドの位置を表します

Position

@CsvRecord(separator = ",")
public class Order {

    @DataField(pos = 1)
    private int orderNr;

    @DataField(pos = 5)
    private String isinCode;

}

この例でわかるように、位置は 1 から始まりますが、クラス Order では続きは 5 になります。2 から 4 までの数字はクラス Client で定義されています (以下を参照)。

位置は別のモデルクラスで継続する

public class Client {

    @DataField(pos = 2)
    private String clientNr;

    @DataField(pos = 3)
    private String firstName;

    @DataField(pos = 4)
    private String lastName;
}

ケース 2: pattern

パターンを使用すると、データの形式を強化または検証できます

Pattern

@CsvRecord(separator = ",")
public class Order {

    @DataField(pos = 1)
    private int orderNr;

    @DataField(pos = 5)
    private String isinCode;

    @DataField(name = "Name", pos = 6)
    private String instrumentName;

    @DataField(pos = 7, precision = 2)
    private BigDecimal amount;

    @DataField(pos = 8)
    private String currency;

    // pattern used during parsing or when the date is created
    @DataField(pos = 9, pattern = "dd-MM-yyyy")
    private Date orderDate;
}

ケース 3: precision

精度は、数値の小数部分を定義する場合に役立ちます

精度

@CsvRecord(separator = ",")
public class Order {

    @DataField(pos = 1)
    private int orderNr;

    @Link
    private Client client;

    @DataField(pos = 5)
    private String isinCode;

    @DataField(name = "Name", pos = 6)
    private String instrumentName;

    @DataField(pos = 7, precision = 2)
    private BigDecimal amount;

    @DataField(pos = 8)
    private String currency;

    @DataField(pos = 9, pattern = "dd-MM-yyyy")
    private Date orderDate;
}

ケース 4: 出力で位置が異なる

position 属性は、生成された CSV レコードにフィールドを配置する方法を bindy に通知します。デフォルトでは、使用される位置は属性 pos で定義された位置に対応します。位置が異なる場合 (つまり、マーシャリングとアンマーシャリングを比較する非対称プロセスがあることを意味します)、position を使用してこれを指定できます。

以下に例を示します。

出力位置が異なる

@CsvRecord(separator = ",", isOrdered = true)
public class Order {

    // Positions of the fields start from 1 and not from 0

    @DataField(pos = 1, position = 11)
    private int orderNr;

    @DataField(pos = 2, position = 10)
    private String clientNr;

    @DataField(pos = 3, position = 9)
    private String firstName;

    @DataField(pos = 4, position = 8)
    private String lastName;

    @DataField(pos = 5, position = 7)
    private String instrumentCode;

    @DataField(pos = 6, position = 6)
    private String instrumentNumber;
}

アノテーション @DataField のこの属性は、アノテーション @CsvRecord の属性 isOrdered = true と組み合わせて使用する必要があります。

ケース 5: 必須

フィールドが必須の場合は、required 属性を true に設定して使用します。

必須

@CsvRecord(separator = ",")
public class Order {

    @DataField(pos = 1)
    private int orderNr;

    @DataField(pos = 2, required = true)
    private String clientNr;

    @DataField(pos = 3, required = true)
    private String firstName;

    @DataField(pos = 4, required = true)
    private String lastName;
}

このフィールドがレコードに存在しない場合には、パーサーにより次の情報を含めてエラーが報告されます。

一部のフィールドが欠落しています (オプションまたは必須)、行:

case 6 : trim

フィールドの先頭および/または末尾にスペースがあり、処理する前に削除する必要がある場合は、trim 属性を true に設定してください。

Trim

@CsvRecord(separator = ",")
public class Order {

    @DataField(pos = 1, trim = true)
    private int orderNr;

    @DataField(pos = 2, trim = true)
    private Integer clientNr;

    @DataField(pos = 3, required = true)
    private String firstName;

    @DataField(pos = 4)
    private String lastName;
}

case 7 : defaultValue

フィールドが定義されていない場合は、defaultValue 属性で示される値が使用されます

デフォルト値

@CsvRecord(separator = ",")
public class Order {

    @DataField(pos = 1)
    private int orderNr;

    @DataField(pos = 2)
    private Integer clientNr;

    @DataField(pos = 3, required = true)
    private String firstName;

    @DataField(pos = 4, defaultValue = "Barin")
    private String lastName;
}

この属性は、オプションのフィールドにのみ適用されます。

Red Hat logoGithubRedditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

Red Hat ドキュメントについて

Red Hat をお使いのお客様が、信頼できるコンテンツが含まれている製品やサービスを活用することで、イノベーションを行い、目標を達成できるようにします。

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

© 2024 Red Hat, Inc.