CsvRecord 주석은 모델의 루트 클래스를 식별하는 데 사용됩니다. 레코드 = "csv 파일의 줄"을 나타내며 여러 하위 모델 클래스에 연결할 수 있습니다.
Expand
주석 이름
레코드 유형
level
CsvRecord
CSV
클래스
Expand
매개변수 이름
유형
필수 항목
기본값
정보
구분기
문자열
✓
토큰(필수)에서 레코드를 분할하는 데 사용되는 구분 기호는 ',' 또는 ';' 또는 'anything'일 수 있습니다. 지원되는 유일한 공백 문자는 탭(\t)입니다. 다른 공백 문자(spaces)는 지원되지 않습니다. 이 값은 정규식으로 해석됩니다. 정규 표현식에서 특별한 의미가 있는 기호를 사용하려는 경우, 예를 들어 '|' 기호와 같이 마스크해야 합니다.
allowEmptyStream
boolean
false
allowEmptyStream 매개변수를 사용하면 CSV 파일의 실행 불가능한 스트림을 실행할 수 있습니다.
autospanLine
boolean
false
마지막 레코드의 나머지 행 (선택 사항) - 활성화하면 마지막 열이 행 끝에 자동으로 확장됩니다(예: 주석인 경우 등) 줄에는 모든 문자, 구분자 줄도 포함될 수 있습니다.
CRLF
문자열
WINDOWS
각 레코드(선택 사항) 뒤에 캐리지 반환을 추가하는 데 사용할 문자 - 사용할 캐리지 반환 문자를 정의할 수 있습니다. 이전에 나열된 세 개 이외의 값을 지정하면 입력한 값(사용자)이 CRLF 문자로 사용됩니다. 세 가지 값을 사용할 수 있습니다. ECDHEDOWS, UNIX, MAC 또는 사용자 지정.
endWithLineBreak
boolean
true
CSV 파일이 줄 바꿈으로 끝나야 하는 경우 endWithLineBreak 매개변수 플래그(선택 사항)
generateHeaderColumns
boolean
false
generateHeader>-<s 매개변수를 사용하면 CSV에 열 이름을 포함하는 헤더가 생성된 것을 추가할 수 있습니다.
isOrdered
boolean
false
메시지 출력 순서를 지정해야 하는지 여부를 나타냅니다.
name
문자열
레코드를 설명하는 이름 (선택 사항)
quote
문자열
"
지정된 인용 문자(선택 사항)를 사용하여 열 마샬링 여부 - CSV가 생성될 때 필드의 인용문을 지정할 수 있습니다. 이 주석은 모델의 루트 클래스와 연결되며 한 번 선언해야 합니다.
인용
boolean
false
마샬링 시 값(및 헤더)을 따옴표로 묶어야 하는지 여부를 나타냅니다(선택 사항)
quotingEscaped
boolean
false
인용할 때 값을 이스케이프해야 하는지 여부를 나타냅니다(선택 사항)
removeQuotes
boolean
true
각 필드의 따옴표를 제거하려고 하는 경우 따옴표 제거 플래그
skipField
boolean
false
skipField 매개변수를 사용하면 CSV 파일의 필드를 건너뛸 수 있습니다. 일부 필드가 필요하지 않은 경우 생략할 수 있습니다.
skipFirstLine
boolean
false
skipFirstLine 매개변수는 CSV 파일의 첫 번째 줄을 건너뛰거나 생략할 수 없습니다. 이 줄에는 종종 열 정의가 포함됩니다.
Copy to ClipboardCopied!Toggle word wrapToggle overflow
@CsvRecord( separator = "\\|" )
public Class Order {
}
@CsvRecord( separator = "\\|" )
public Class Order {
}
Copy to ClipboardCopied!Toggle word wrapToggle overflow
case 4 : separator = '\",\"'
Camel 2.8.2 이상에 적용
CSV 레코드의 구문 분석할 필드에 . 또는 . 또한 구분자로 사용되는 필드에는 이 경우를 처리하는 방법을 카타릴이 나타내는 다른 전략을 찾아야 합니다. 데이터를 포함하는 필드를 쉼표로 정의하기 위해 구분자(예: '10', 'Street 10, 'USA', 'Street 10, "10', "USA")로 작은 따옴표를 사용합니다.
Expand
__
이 경우 한 줄 또는 이중 따옴표인 행의 첫 번째 문자와 마지막 문자는 bindy로 제거됩니다.
Copy to ClipboardCopied!Toggle word wrapToggle overflow
@CsvRecord( separator = "," )
public Class Order {
}
@CsvRecord( separator = "," )
public Class Order {
}
Copy to ClipboardCopied!Toggle word wrapToggle overflow
Object에서 CSV로 마샬링하고 따옴표를 사용하려면 @CsvRecord 의 quote 속성을 사용하여 사용할 인용문을 지정해야 합니다.
@CsvRecord( separator = ",", quote = "\"" )
public Class Order {
}
@CsvRecord( separator = ",", quote = "\"" )
public Class Order {
}
Copy to ClipboardCopied!Toggle word wrapToggle overflow
케이스 5 : 구분자 & 건너뛰기FirstLine
이 기능은 클라이언트가 파일의 첫 번째 줄에 데이터 필드 이름인 경우 유용합니다.
order id, client id, first name, last name, isin code, instrument name, quantity, currency, date
order id, client id, first name, last name, isin code, instrument name, quantity, currency, date
Copy to ClipboardCopied!Toggle word wrapToggle overflow
구문 분석 프로세스 중에 이 첫 번째 줄을 건너뛰어야 함을 바인딩하려면 다음과 같은 특성을 사용합니다.
@CsvRecord(separator = ",", skipFirstLine = true)
public Class Order {
}
@CsvRecord(separator = ",", skipFirstLine = true)
public Class Order {
}
Copy to ClipboardCopied!Toggle word wrapToggle overflow
케이스 6: generateHeader>-<s
생성된 CSV의 첫 번째 줄에 추가하려면 다음과 같은 주석에서 generateHeader>-<s를 true로 설정해야 합니다.
@CsvRecord( generateHeaderColumns = true )
public Class Order {
}
@CsvRecord( generateHeaderColumns = true )
public Class Order {
}
Copy to ClipboardCopied!Toggle word wrapToggle overflow
결과적으로 Bindy during the unmarshaling process will generate CSV like this :
order id, client id, first name, last name, isin code, instrument name, quantity, currency, date
10, J, Pauline, M, XD12345678, Fortis Dynamic 15/15, 2500, USD, 08-01-2009
order id, client id, first name, last name, isin code, instrument name, quantity, currency, date
10, J, Pauline, M, XD12345678, Fortis Dynamic 15/15, 2500, USD, 08-01-2009
Copy to ClipboardCopied!Toggle word wrapToggle overflow
케이스 7 : 운송 반환
camel-bindy가 실행되는 플랫폼이 Windows가 아닌 Macintosh 또는 Unix가 아닌 경우 다음과 같이 crlf 속성을 변경할 수 있습니다. 세 가지 값을 사용할 수 있습니다 : UNIX 또는 MAC
@CsvRecord(separator = ",", crlf="MAC")
public Class Order {
}
@CsvRecord(separator = ",", crlf="MAC")
public Class Order {
}
Copy to ClipboardCopied!Toggle word wrapToggle overflow
또한 어떤 이유로든 다른 줄 끝 문자를 추가해야 하는 경우 crlf 매개변수를 사용하여 지정할 수 있습니다. 다음 예제에서는 쉼표 뒤에 줄 바꿈 문자를 사용하여 행을 종료할 수 있습니다.
@CsvRecord(separator = ",", crlf=",\n")
public Class Order {
}
@CsvRecord(separator = ",", crlf=",\n")
public Class Order {
}
Copy to ClipboardCopied!Toggle word wrapToggle overflow
케이스 8 : isOrdered
경우에 따라 모델의 CSV 레코드를 생성하는 동안 따라야 하는 순서는 구문 분석 중 사용되는 순서와 다릅니다. 그러면 이 경우 isOrdered = true 를 사용하여 DataField 주석의 속성 위치와 함께 이 속성을 표시할 수 있습니다.
@CsvRecord(isOrdered = true)
public Class Order {
@DataField(pos = 1, position = 11)
private int orderNr;
@DataField(pos = 2, position = 10)
private String clientNr;
}
@CsvRecord(isOrdered = true)
public Class Order {
@DataField(pos = 1, position = 11)
private int orderNr;
@DataField(pos = 2, position = 10)
private String clientNr;
}
Copy to ClipboardCopied!Toggle word wrapToggle overflow
Expand
__
POS 는 파일 스트림을 구문 분석하는 데 사용되며, 위치는 CSV를 생성하는 데 사용됩니다.
Grouping Separator to be used with BigDecimal number when we would like to format/parse to number with grouping e.g. 10.0.0.1,456.789
impliedDecimalSeparator
boolean
false
지정된 위치에 부동 소수점이 있는지 여부를 나타냅니다.Indicates if there is a decimal point implied at a specified location.
길이
int
0
레코드가 고정된 길이로 설정된 경우 데이터 블록의 길이(숫자)
lengthPos
int
0
이 필드에 예상 고정된 길이를 정의하는 레코드의 데이터 필드를 식별합니다.Identifies a data field in the record that defines the expected fixed length for this field.
method
문자열
DataField에 이러한 사용자 지정을 적용하기 위해 호출할 메서드 이름입니다. datafield 자체의 메서드여야 하며 클래스 메서드의 정적 정규화된 이름을 제공해야 합니다(예: 단위 테스트 org.apache.camel.dataformat.bindy.csv.BindySimpleCsvFunctionWithExternalMethodTest.replaceToanchor).
name
문자열
필드의 이름 (선택 사항)
paddingChar
grafka
레코드가 고정된 길이로 설정된 경우와 함께 줄임
패턴
문자열
Java 포맷터(예별SimpleDateFormat)가 데이터를 변환하는 데 사용하는 패턴(선택 사항)입니다. 패턴을 사용하는 경우 bindy 데이터 형식으로 로케일을 설정하는 것이 좋습니다. "us"와 같은 알려진 로케일로 설정하거나 "default"를 사용하여 플랫폼 기본 로케일을 사용합니다.
위치
int
0
생성된 출력 메시지의 필드 위치입니다(1부터 시작). CSV에서 생성된 필드(출력 메시지)의 위치가 입력 위치(pos)와 비교되어야 하는 경우 사용해야 합니다. pos 매개변수를 참조하십시오.
Precision
int
0
생성할 \{@link java.math.BigDecimal} 번호의 정밀성
필수 항목
boolean
false
필드가 필수인지 여부를 나타냅니다.
반올림
문자열
통합
Round mode to be used to be used to be used to be used to be used to round/scale a BigDecimal Values : UP, DOWN, nodejsILING, FLOOR, HALF_UP, HALF_UP,HALF_DOWN, UNNECESEN, UNNECESSARY 예: number = 123456.789, Precision = 2, Rounding = 1, 1234ILING Result : 123456
timezone
문자열
사용할 시간대입니다.
Trim
boolean
false
값을 트리밍할지 여부를 나타냅니다.Indicates whether the value should be trimmed
케이스 1 : pos
이 매개변수/attribute는 CSV 레코드의 필드 위치를 나타냅니다.
위치
@CsvRecord(separator = ",")
public class Order {
@DataField(pos = 1)
private int orderNr;
@DataField(pos = 5)
private String isinCode;
}
@CsvRecord(separator = ",")
public class Order {
@DataField(pos = 1)
private int orderNr;
@DataField(pos = 5)
private String isinCode;
}
Copy to ClipboardCopied!Toggle word wrapToggle overflow
이 예제에서 위치가 1 에서 시작되지만 클래스 순서의 5 에서 계속됩니다. 2 에서 4 까지의 숫자는 클래스 Client에 정의되어 있습니다(다음 참조).
Copy to ClipboardCopied!Toggle word wrapToggle overflow
케이스 2 : 패턴
패턴을 통해 데이터 형식을 강화하거나 검증할 수 있습니다.
패턴
@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;
}
@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;
}
Copy to ClipboardCopied!Toggle word wrapToggle overflow
Copy to ClipboardCopied!Toggle word wrapToggle overflow
case 4 : Position은 출력마다 다릅니다.
position 속성은 생성된 CSV 레코드에 필드를 배치하는 방법을 바인딩합니다. 기본적으로 사용되는 위치는 특성 pos 에 정의된 위치에 해당합니다. 위치가 다른 경우 (즉, 미정형에서 마샬링을 비교한다는 것을 의미함) 우리는 위치를 사용하여 이를 나타낼 수 있습니다.
예를 들면 다음과 같습니다.
위치가 출력마다 다릅니다.
@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;
}
@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;
}
Copy to ClipboardCopied!Toggle word wrapToggle overflow
주석 @DataField 의 이 속성은 속성과 함께 사용해야 합니다. @CsvRecord 주석의 isOrdered = true 입니다.
FixedLengthRecord 주석은 모델의 루트 클래스를 식별하는 데 사용됩니다. 레코드 = "데이터 고정 길이(자수) 형식이 지정된 파일/메시지를 나타내며 여러 하위 모델 클래스에 연결할 수 있습니다. 이 형식은 필드의 데이터를 오른쪽 또는 왼쪽에 맞게 정렬할 수 있기 때문에 약간 특정적입니다.
데이터 크기가 필드의 길이를 완전히 채우지 않으면 '패드' 문자를 추가할 수 있습니다.
Expand
주석 이름
레코드 유형
level
FixedLengthRecord
수정됨
클래스
Expand
매개변수 이름
유형
필수 항목
기본값
정보
countGrapheme
boolean
false
줄선이 계산되는 방식을 나타냅니다.
CRLF
문자열
WINDOWS
각 레코드 다음에 캐리지 리턴을 추가하는 데 사용할 문자(선택 사항) 가능한 값: >-<DOWS, UNIX, MAC 또는 사용자 지정. 이 옵션은 마샬링 중에만 사용되며 unmarshalling은 eol을 사용자 정의하지 않는 한 시스템 기본 JDK 제공 줄 구분 기호를 사용합니다.
EOL
문자열
마샬링은 다른 줄 구분 기호 중 하나에만 사용되며, 마샬링은 다른 값을 제공하지 않는 한 시스템 기본 줄 구분 기호(선택 사항 - default: "", 기본 JDK 제공 줄 구분 기호를 사용할 수 있도록 지원) 이후 줄 종료를 처리하는 데 사용할 문자입니다.
footer
클래스
void
파일 끝에 이 유형의 레코드가 한 발씩 올 수 있음을 나타냅니다.Indicates that the record(s) of this type may be followed by a single footer record at the end of the file.
header
클래스
void
이 유형의 레코드가 파일 시작 시 단일 헤더 레코드 앞에 있을 수 있음을 나타냅니다.
ignoreMissingChars
boolean
false
너무 짧은 줄이 무시되는지 여부를 나타냅니다.
ignoreTrailingChars
boolean
false
요약 / 구문 분석 시 마지막으로 매핑된 filed 이외의 문자는 무시될 수 있음을 나타냅니다. 이 주석은 모델의 루트 클래스와 연결되며 한 번 선언해야 합니다.
길이
int
0
레코드의 고정된 길이(자 수)입니다. 레코드가 항상 \{#paddingChar()}'s로 채워지는 것을 의미합니다.
name
문자열
레코드를 설명하는 이름 (선택 사항)
paddingChar
grafka
함께 사용할 줄임말입니다.
skipFooter
boolean
false
footer 레코드 마샬링 / 마샬링을 건너뛰도록 데이터 형식을 설정합니다. 기본 레코드(예: 헤더 또는 도글러가 아닌)에서 이 매개 변수를 구성합니다.
skipHeader
boolean
false
헤더 레코드의 마샬링 / 마샬링을 건너뛰도록 데이터 형식을 구성합니다. 기본 레코드(예: 헤더 또는 도글러가 아닌)에서 이 매개 변수를 구성합니다.
레코드는 헤더/축소 및 기본 고정 길이 레코드가 모두 아닐 수 있습니다.
케이스 1: 간단한 고정 길이 레코드
이 간단한 예제에서는 고정 메시지의 구문 분석/포멧을 사용하도록 모델을 설계하는 방법을 보여줍니다.
Copy to ClipboardCopied!Toggle word wrapToggle overflow
케이스 6 : 헤더와 각면을 사용하여 길이 레코드 수정
Bindy는 정렬된 클래스가 기본 @FixedLengthRecord 클래스와 동일한 패키지에 있거나 구성된 검사 패키지 중 하나에 있는 경우 모델의 일부로 구성된 고정 길이 헤더 및 푸터 레코드를 검색합니다. 다음 텍스트는 헤더 레코드와 테일러 레코드로 요약된 두 개의 고정 길이 레코드를 보여줍니다.
Copy to ClipboardCopied!Toggle word wrapToggle overflow
케이스 7 : 고정된 길이 레코드를 구문 분석할 때 콘텐츠 스케이핑
대상 사용 사례에 필요한 것보다 더 많은 정보를 포함하는 고정 길이 레코드를 제공하는 시스템과 통합하는 것이 일반적입니다. 이 경우 필요하지 않은 필드의 선언 및 구문 분석을 생략하는 것이 유용합니다. 이를 위해 Bindy는 다음 선언된 필드의 pos 값이 마지막 구문 분석 필드의 커서 위치를 벗어나는 경우 레코드 내의 다음 매핑된 필드로 건너뜁니다. 관심 필드(보조 값 대신)에 절대 pos 위치를 사용하면 Bindy가 두 필드 간의 콘텐츠를 건너뜁니다.
마찬가지로, 특정 필드 이외의 어떠한 콘텐츠도 관심을 가질 수 없습니다. 이 경우 @FixedLengthRecord 선언에서 ignoreTrailingChars 속성을 설정하여 마지막 매핑 필드 이외의 모든 항목의 분석을 건너뛰도록 바인딩에 지시할 수 있습니다.
@FixedLengthRecord(ignoreTrailingChars = true)
public static class Order {
@DataField(pos = 1, length = 2)
private int orderNr;
@DataField(pos = 3, length = 2)
private String clientNr;
// any characters that appear beyond the last mapped field will be ignored
}
@FixedLengthRecord(ignoreTrailingChars = true)
public static class Order {
@DataField(pos = 1, length = 2)
private int orderNr;
@DataField(pos = 3, length = 2)
private String clientNr;
// any characters that appear beyond the last mapped field will be ignored
}
Copy to ClipboardCopied!Toggle word wrapToggle overflow
Message 주석은 키 값 쌍 필드를 포함할 모델의 클래스를 식별하는 데 사용됩니다. 이러한 종류의 형식은 주로 FIX(Fixin Exchange Protocol Messages)에서 사용됩니다. 하지만 이 주석은 데이터가 키로 식별되는 다른 형식에 사용할 수 있습니다. 키 쌍 값은 탭 구분기 (유니코드 표현 : \u0009)와 같은 특수 문자가 될 수있는 구분자로 서로 분리되거나 (유코드 표현 : \u0001)
참고
FIX 메시지로 작업하려면 모델에 Order 클래스일 수 있는 루트 메시지 클래스에 연결된 Header 및 Trailer 클래스가 포함되어야 합니다. 필수는 아니지만 quickFix 프로젝트를 기반으로 한 수정 게이트웨이인 camel-bindy와 함께 camel-bindy를 사용할 때 매우 유용합니다.
Expand
주석 이름
레코드 유형
level
메시지
키 값 쌍
클래스
Expand
매개변수 이름
유형
필수 항목
기본값
정보
keyValuePairSeparator
문자열
✓
키 값 쌍 구분 기호는 키(필수)에서 값을 분할하는 데 사용됩니다. '\u0001', '\u0009', '#' 또는 'anything'일 수 있습니다.
pairSeparator
문자열
✓
토큰으로 키 값 쌍을 분할하는 데 사용되는 쌍 구분자(필수)입니다. '=', ';' 또는 'anything'일 수 있습니다.
CRLF
문자열
WINDOWS
각 레코드 다음에 캐리지 리턴을 추가하는 데 사용할 문자(선택 사항) 가능한 값 = ECDHEDOWS, UNIX, MAC 또는 사용자 지정. 이전에 나열된 세 개 이외의 값을 지정하면 입력한 값(사용자)이 CRLF 문자로 사용됩니다.
isOrdered
boolean
false
메시지 출력 순서를 지정해야 하는지 여부를 나타냅니다. 이 주석은 모델의 메시지 클래스와 연결되며 한 번 선언해야 합니다.
name
문자열
메시지 설명의 이름 (선택 사항)
type
문자열
FIX
type은 메시지 유형을 정의하는 데 사용됩니다 (예: FIX, EMX, …) (선택 사항)
버전
문자열
4.1
version은 메시지 버전(예: 4.1, …)을 정의합니다(선택 사항)
case 1 : 구분자 = 'u0001'
FIX 메시지에서 키 값 쌍 필드를 분할하는 데 사용되는 구분자는 ASCII 01 문자 또는 유니코드 형식 \u0001 입니다. 이 문자는 java 런타임 오류를 방지하려면 두 번째 이스케이프해야 합니다. 예를 들면 다음과 같습니다.
고정 길이 레코드의 FIX 메시지에서 일반적으로 information : header, body 및 섹션 표현에 다른 섹션이 있습니다. 주석 @Section 의 목적은 모델의 어떤 클래스가 헤더(= 섹션 1), body(= 섹션 2) 및 footer(= 섹션 3)를 나타내는 바인딩에 대해 알리는 것입니다.
이 주석에는 하나의 속성/parameter만 있습니다.
Expand
주석 이름
레코드 유형
level
섹션
FIX
클래스
Expand
매개변수 이름
유형
필수 항목
기본값
정보
number
int
✓
섹션의 수
케이스 1: 섹션
header 섹션의 정의:
FIX message - section - Header
@Section(number = 1)
public class Header {
@KeyValuePairField(tag = 8, position = 1) // Message Header
private String beginString;
@KeyValuePairField(tag = 9, position = 2) // Checksum
private int bodyLength;
}
@Section(number = 1)
public class Header {
@KeyValuePairField(tag = 8, position = 1) // Message Header
private String beginString;
@KeyValuePairField(tag = 9, position = 2) // Checksum
private int bodyLength;
}
Copy to ClipboardCopied!Toggle word wrapToggle overflow
본문 섹션의 정의:
수정 메시지 - 섹션 - body
@Section(number = 2)
@Message(keyValuePairSeparator = "=", pairSeparator = "\\u0001", type = "FIX", version = "4.1", isOrdered = true)
public class Order {
@Link Header header;
@Link Trailer trailer;
@KeyValuePairField(tag = 1, position = 1) // Client reference
private String account;
@KeyValuePairField(tag = 11, position = 3) // Order reference
private String clOrdId;
@Section(number = 2)
@Message(keyValuePairSeparator = "=", pairSeparator = "\\u0001", type = "FIX", version = "4.1", isOrdered = true)
public class Order {
@Link Header header;
@Link Trailer trailer;
@KeyValuePairField(tag = 1, position = 1) // Client reference
private String account;
@KeyValuePairField(tag = 11, position = 3) // Order reference
private String clOrdId;
Copy to ClipboardCopied!Toggle word wrapToggle overflow
footer 섹션의 정의:
오류 메시지 - 섹션 -
@Section(number = 3)
public class Trailer {
@KeyValuePairField(tag = 10, position = 1)
// CheckSum
private int checkSum;
public int getCheckSum() {
return checkSum;
}
@Section(number = 3)
public class Trailer {
@KeyValuePairField(tag = 10, position = 1)
// CheckSum
private int checkSum;
public int getCheckSum() {
return checkSum;
}
Copy to ClipboardCopied!Toggle word wrapToggle overflow
주석 @OneToMany 의 용도는 List<?& gt; 필드로 정의되는 클래스 또는 반복적인 그룹을 포함하는 레코드에서 작업할 수 있도록 허용하는 것입니다.
참고
OneToMany 에 대한 제한 사항: 많은 바인딩으로 인해 계층 구조의 여러 수준에 정의된 반복을 처리할 수 없습니다.
다음의 경우 OneToMany ONLY WORKS
반복적인 그룹(= 태그/키 그룹)을 포함하는 FIX 메시지 읽기
반복적인 데이터가 포함된 CSV 생성
Expand
주석 이름
레코드 유형
level
OneToMany
all
속성
Expand
매개변수 이름
유형
필수 항목
기본값
정보
mappedTo
문자열
List<Type of the Class>의 유형과 연관된 클래스 이름
case 1 : 반복적인 데이터로 CSV 생성
원하는 CSV 출력은 다음과 같습니다.
Claus,Ibsen,Camel in Action 1,2010,35
Claus,Ibsen,Camel in Action 2,2012,35
Claus,Ibsen,Camel in Action 3,2013,35
Claus,Ibsen,Camel in Action 4,2014,35
Claus,Ibsen,Camel in Action 1,2010,35
Claus,Ibsen,Camel in Action 2,2012,35
Claus,Ibsen,Camel in Action 3,2013,35
Claus,Ibsen,Camel in Action 4,2014,35
Copy to ClipboardCopied!Toggle word wrapToggle overflow
참고
반복적인 데이터는 책 제목과 게시 날짜의 제목과 관련된 반면, 성과 기간이 일반적이며, 이를 모델링하는 데 사용되는 클래스가 있습니다. Author 클래스에는 도서 목록이 포함되어 있습니다.
반복적인 데이터를 사용하여 CSV 생성
@CsvRecord(separator=",")
public class Author {
@DataField(pos = 1)
private String firstName;
@DataField(pos = 2)
private String lastName;
@OneToMany
private List<Book> books;
@DataField(pos = 5)
private String Age;
}
public class Book {
@DataField(pos = 3)
private String title;
@DataField(pos = 4)
private String year;
}
@CsvRecord(separator=",")
public class Author {
@DataField(pos = 1)
private String firstName;
@DataField(pos = 2)
private String lastName;
@OneToMany
private List<Book> books;
@DataField(pos = 5)
private String Age;
}
public class Book {
@DataField(pos = 3)
private String title;
@DataField(pos = 4)
private String year;
}
Copy to ClipboardCopied!Toggle word wrapToggle overflow
case 2 : 태그/키의 그룹을 포함하는 FIX 메시지 읽기
다음은 이 모델에서 수행하려는 메시지입니다.
8=FIX 4.19=2034=135=049=INVMGR56=BRKR
1=BE.CHM.00111=CHM0001-0158=this is a camel - bindy test
22=448=BE000124567854=1
22=548=BE000987654354=2
22=648=BE000999999954=3
10=220
8=FIX 4.19=2034=135=049=INVMGR56=BRKR
1=BE.CHM.00111=CHM0001-0158=this is a camel - bindy test
22=448=BE000124567854=1
22=548=BE000987654354=2
22=648=BE000999999954=3
10=220
Copy to ClipboardCopied!Toggle word wrapToggle overflow
태그 22, 48 및 54가 반복됩니다.
코드:
태그/키 그룹이 포함된 FIX 메시지 읽기
public class Order {
@Link Header header;
@Link Trailer trailer;
@KeyValuePairField(tag = 1) // Client reference
private String account;
@KeyValuePairField(tag = 11) // Order reference
private String clOrdId;
@KeyValuePairField(tag = 58) // Free text
private String text;
@OneToMany(mappedTo = "org.apache.camel.dataformat.bindy.model.fix.complex.onetomany.Security")
List<Security> securities;
}
public class Security {
@KeyValuePairField(tag = 22) // Fund ID type (Sedol, ISIN, ...)
private String idSource;
@KeyValuePairField(tag = 48) // Fund code
private String securityCode;
@KeyValuePairField(tag = 54) // Movement type ( 1 = Buy, 2 = sell)
private String side;
}
public class Order {
@Link Header header;
@Link Trailer trailer;
@KeyValuePairField(tag = 1) // Client reference
private String account;
@KeyValuePairField(tag = 11) // Order reference
private String clOrdId;
@KeyValuePairField(tag = 58) // Free text
private String text;
@OneToMany(mappedTo = "org.apache.camel.dataformat.bindy.model.fix.complex.onetomany.Security")
List<Security> securities;
}
public class Security {
@KeyValuePairField(tag = 22) // Fund ID type (Sedol, ISIN, ...)
private String idSource;
@KeyValuePairField(tag = 48) // Fund code
private String securityCode;
@KeyValuePairField(tag = 54) // Movement type ( 1 = Buy, 2 = sell)
private String side;
}
Copy to ClipboardCopied!Toggle word wrapToggle overflow