検索

46.5. 3.DataField

download PDF

DataField アノテーションは、フィールドのプロパティーを定義します。各データフィールドは、レコードの位置、タイプ(文字列、整数、日付、および任意でパターン)で識別されます。

アノテーション名レコードタイプレベル

DataField

all

プロパティー

パラメーター名typeInfo

pos

int

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

pattern

string

オプション: デフォルト値 = "" - は、10 進数、日付、形式に使用されます。

長さ

int

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

精度

int

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

pattern

string

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

position

int

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

required

boolean

optional - default value = "false"

trim

boolean

optional - default value = "false"

defaultValue

string

camel 2.10: optional - default value = "": それぞれの CSV フィールドが空でない/利用不可の場合にフィールドのデフォルト値を定義します。

impliedDecimalSeparator

boolean

Camel 2.11: optional - デフォルト値 = "false" - 指定の場所の 10 進数の暗黙がある場合に示唆します。

lengthPos

int

Camel 2.11: optional - このフィールドの固定長を定義する固定長レコードのデータフィールドを特定するために使用できます。

揃える

string

オプション: デフォルト値 = "R" - 固定長フィールドの右側または左側にテキストを合わせます。'R' または 'L' の値を使用します。

delimiter

string

Camel 2.11: optional - 固定長レコード内の variable-length フィールドの末尾を区別するために使用できます。

ケース 1: 指定可能

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

Position

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

    @DataField(pos = 1)
    private int orderNr;

    @DataField(pos = 5)
    private String isinCode;

}

この例で分かるように、位置は '1' から始まりますが、クラスの順序にある '5' に続きます。'2' から '4' までの数字は、クラスクライアントで定義されます(こちらを参照)。

別のモデルクラスで位置が継続される

public class Client {

    @DataField(pos = 2)
    private String clientNr;

    @DataField(pos = 3)
    private String firstName;

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

case 2 : 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: 精度

数値の 10 進数部分を定義する場合に精度が便利です。

精度

@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 レコードに通知します。デフォルトでは、使用される位置は属性「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: 必須

フィールドが必須の場合は、単に true に設定された属性「required」を使用します。

必須

@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

フィールドに、処理される前に削除する必要のある先頭および/または末尾の空白がある場合は、true に設定した属性「trim」を使用します。

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.