Skip to content

Commit d82dc6a

Browse files
committed
fix skip header
1 parent d6a0403 commit d82dc6a

4 files changed

Lines changed: 89 additions & 4 deletions

File tree

src/main/java/io/github/avew/reader/CsvewReader.java

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,10 @@ protected CsvewResultReader<T> read(
4242

4343
BufferedReader br = new BufferedReader(new InputStreamReader(is, UTF_8));
4444

45+
4546
try {
47+
48+
/* dont validate header */
4649
if (!skipHeader) {
4750
String[] contentHeader = getHeader(br.readLine(), delimeter);
4851
CsvewValidationDTO headerValidation = headerValidation(typeHeader, contentHeader);
@@ -61,12 +64,13 @@ protected CsvewResultReader<T> read(
6164

6265
if (startAt == 0 || startAt == 1) {
6366
startAt = 1;
64-
log.debug("START LINE={}", startAt);
65-
} else log.debug("SKIP LINE CURRENT READ={}", startAt);
67+
log.debug("READ LINE {}", startAt);
68+
} else {
69+
log.debug("SKIP LINE CURRENT READ {}", startAt);
70+
}
6671

6772
AtomicInteger index = new AtomicInteger(startAt);
6873
for (int x = 1; x < startAt; x++) br.readLine();
69-
if (skipHeader) br.readLine();
7074

7175
while ((lineContent = br.readLine()) != null) {
7276
String[] x = lineContent.split(delimeter, -1);
@@ -76,7 +80,7 @@ protected CsvewResultReader<T> read(
7680
value.setLine(line);
7781
value.setRaw(List.of(x));
7882

79-
if (skipHeader) {
83+
if (!skipHeader) {
8084
if (x.length > typeHeader.length) {
8185
validations.add(CsvewValidationDTO.builder()
8286
.line(value.getLine())
Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
package io.github.avew;
2+
3+
import lombok.AllArgsConstructor;
4+
import lombok.Builder;
5+
import lombok.Data;
6+
import lombok.NoArgsConstructor;
7+
8+
@Data
9+
@Builder
10+
@NoArgsConstructor
11+
@AllArgsConstructor
12+
public class CsvSftpValue extends CsvewValue {
13+
14+
private String identityId;
15+
private String identityType;
16+
private String identityName;
17+
private String docNo;
18+
private String docDate;
19+
private String docTemplate;
20+
private String docKopur;
21+
private String docPassword;
22+
private String docReference;
23+
}
Lines changed: 57 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,57 @@
1+
package io.github.avew;
2+
3+
import io.github.avew.reader.CsvewReader;
4+
import org.junit.Assert;
5+
import org.junit.Test;
6+
7+
import java.io.InputStream;
8+
9+
public class CsvewSftpParserTest extends CsvewReader<CsvSftpValue> {
10+
11+
static String[] HEADER = {
12+
"Identity Number",
13+
"Identity Type",
14+
"Identity Name",
15+
"Document Number",
16+
"Document Date",
17+
"Template Code",
18+
"Transaction Value",
19+
"Password",
20+
"Document Reference",
21+
};
22+
23+
@Test
24+
public void testReadSuccess() {
25+
InputStream is = this.getClass().getResourceAsStream("/csv/1.csv");
26+
CsvewResultReader<CsvSftpValue> read = process(0, is);
27+
System.out.println(read.getValues().toString());
28+
}
29+
30+
31+
@Override
32+
public CsvewResultReader<CsvSftpValue> process(int startAt, InputStream is) {
33+
CsvewParser csvParseUser = new CsvewParser();
34+
return read(true,
35+
startAt,
36+
is,
37+
HEADER,
38+
";",
39+
(line, columns, validations, value) -> {
40+
csvParseUser.parseString(line, 0, HEADER[0], columns[0], true, validations, value::setIdentityId);
41+
csvParseUser.parseString(line, 1, HEADER[1], columns[1], true, validations, value::setIdentityType);
42+
csvParseUser.parseString(line, 2, HEADER[2], columns[2], true, validations, value::setIdentityName);
43+
csvParseUser.parseString(line, 3, HEADER[3], columns[3], true, validations, value::setDocNo);
44+
csvParseUser.parseString(line, 4, HEADER[4], columns[4], true, validations, value::setDocDate);
45+
csvParseUser.parseString(line, 5, HEADER[5], columns[5], true, validations, value::setDocTemplate);
46+
csvParseUser.parseString(line, 6, HEADER[6], columns[6], false, validations, value::setDocKopur);
47+
48+
try {
49+
csvParseUser.parseString(line, 7, HEADER[7], columns[7], false, validations, value::setDocPassword);
50+
csvParseUser.parseString(line, 8, HEADER[8], columns[8], false, validations, value::setDocReference);
51+
} catch (IndexOutOfBoundsException ignore) {
52+
}
53+
});
54+
}
55+
56+
57+
}

src/test/resources/csv/1.csv

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
0000111122224444;NOW;RAAM TEST;0614_19112019_000001_082343;19-11-20192;E001;4897546;;;;true;FIELD_VALIDATION;Identity Type should only be NIK (Citizenship ID Number) or NPWP (Taxpayer ID Number)

0 commit comments

Comments
 (0)