Skip to content

Commit df58e18

Browse files
authored
Merge pull request #630 from digital-preservation/update-result-interface-to-publicise-errors
Java API interface updated to give results from implementation classes.
2 parents 245bb28 + c1bc083 commit df58e18

5 files changed

Lines changed: 60 additions & 79 deletions

File tree

README.md

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -75,7 +75,7 @@ Example Java code of using the CSV Validator through the Java API:
7575
csvReader, csvSchemaReader
7676
)
7777

78-
Result result = validateWithStringNames
78+
List<FailMessage> messages = validateWithStringNames
7979
.usingCsvEncoding(csvEncoding, validateCsvEncoding) // should only be `true` if using UTF-8 encoding, otherwise it will throw an exception
8080
.usingCsvSchemaEncoding(csvSchemaEncoding)
8181
.usingFailFast(failFast)
@@ -85,9 +85,8 @@ Example Java code of using the CSV Validator through the Java API:
8585
.usingProgress(progress)
8686
.usingSkipFileChecks(skipFileChecks)
8787
.usingMaxCharsPerCell(maxCharsPerCell)
88-
.runValidation();
89-
90-
List<FailMessage> messages = ((CsvValidatorJavaBridge.ValidationResult)(result)).errors();
88+
.runValidation()
89+
.getErrors();
9190

9291
if(messages.isEmpty()) {
9392
System.out.println("All worked OK");

csv-validator-java-api/src/main/java/uk/gov/nationalarchives/csv/validator/api/java/Request.java

Lines changed: 0 additions & 21 deletions
This file was deleted.

csv-validator-java-api/src/main/java/uk/gov/nationalarchives/csv/validator/api/java/Result.java

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -8,9 +8,8 @@
88
*/
99
package uk.gov.nationalarchives.csv.validator.api.java;
1010

11-
import java.util.ArrayList;
11+
import java.util.List;
1212

1313
public interface Result {
14-
ArrayList<FailMessage> errors = new ArrayList<>();
15-
Request validatorRequest = null;
14+
List<FailMessage> getErrors();
1615
}

csv-validator-java-api/src/main/scala/uk/gov/nationalarchives/csv/validator/api/java/CsvValidatorJavaBridge.scala

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -137,9 +137,13 @@ object CsvValidatorJavaBridge {
137137
case SFailMessage(SchemaDefinitionError, msg, lineNr, columnIdx) => new ErrorMessage(msg, lineNr.getOrElse(-1), columnIdx.getOrElse(-1)).asInstanceOf[FailMessage]
138138
}
139139

140-
case class ValidationResult(errors: JList[FailMessage], validatorRequest: ValidationRequest) extends Result
141-
case class ValidationRequest(csvFile: String, csvEncoding: Charset, validateCsvEncoding: Boolean, csvSchemaFile: String, csvSchemaEncoding: Charset, validateCsvSchemaEncoding: Boolean, failFast: Boolean, pathSubstitutionsList: JList[Substitution], enforceCaseSensitivePathChecks: Boolean, trace: Boolean, progress: ProgressCallback, skipFileChecks: Boolean, maxCharsPerCellLimit: Int) extends Request
142-
143-
case class ReaderValidationResult(errors: JList[FailMessage], validatorRequest: ReaderValidationRequest) extends Result
144-
case class ReaderValidationRequest(csvReader: JReader, csvSchemaReader: JReader, failFast: Boolean, pathSubstitutionsList: JList[Substitution], enforceCaseSensitivePathChecks: Boolean, trace: Boolean, progress: ProgressCallback, skipFileChecks: Boolean, maxCharsPerCellLimit: Int) extends Request
140+
case class ValidationResult(errors: JList[FailMessage], validatorRequest: ValidationRequest) extends Result {
141+
override def getErrors: JList[FailMessage] = errors
142+
}
143+
case class ValidationRequest(csvFile: String, csvEncoding: Charset, validateCsvEncoding: Boolean, csvSchemaFile: String, csvSchemaEncoding: Charset, validateCsvSchemaEncoding: Boolean, failFast: Boolean, pathSubstitutionsList: JList[Substitution], enforceCaseSensitivePathChecks: Boolean, trace: Boolean, progress: ProgressCallback, skipFileChecks: Boolean, maxCharsPerCellLimit: Int)
144+
145+
case class ReaderValidationResult(errors: JList[FailMessage], validatorRequest: ReaderValidationRequest) extends Result {
146+
override def getErrors: JList[FailMessage] = errors
147+
}
148+
case class ReaderValidationRequest(csvReader: JReader, csvSchemaReader: JReader, failFast: Boolean, pathSubstitutionsList: JList[Substitution], enforceCaseSensitivePathChecks: Boolean, trace: Boolean, progress: ProgressCallback, skipFileChecks: Boolean, maxCharsPerCellLimit: Int)
145149
}

csv-validator-java-api/src/test/java/uk/gov/nationalarchives/csv/validator/api/java/CsvValidatorTest.java

Lines changed: 46 additions & 46 deletions
Original file line numberDiff line numberDiff line change
@@ -24,33 +24,33 @@ public class CsvValidatorTest {
2424
@Test
2525
public void defaultValuesAreUsedWhenUsingTextFileMethod() {
2626
Result result = new CsvValidator.ValidatorBuilder("csvFile", "csvSchema").runValidation();
27-
CsvValidatorJavaBridge.ValidationResult validatorRequest = (CsvValidatorJavaBridge.ValidationResult) result;
28-
Assert.assertEquals("csvFile", validatorRequest.validatorRequest().csvFile());
29-
Assert.assertEquals(StandardCharsets.UTF_8, validatorRequest.validatorRequest().csvEncoding());
30-
Assert.assertEquals("csvSchema", validatorRequest.validatorRequest().csvSchemaFile());
31-
Assert.assertEquals(StandardCharsets.UTF_8, validatorRequest.validatorRequest().csvSchemaEncoding());
32-
Assert.assertFalse(validatorRequest.validatorRequest().failFast());
33-
Assert.assertEquals(new ArrayList<Substitution>(), validatorRequest.validatorRequest().pathSubstitutionsList());
34-
Assert.assertFalse(validatorRequest.validatorRequest().enforceCaseSensitivePathChecks());
35-
Assert.assertFalse(validatorRequest.validatorRequest().trace());
36-
Assert.assertNull(validatorRequest.validatorRequest().progress());
37-
Assert.assertFalse(validatorRequest.validatorRequest().skipFileChecks());
38-
Assert.assertEquals(4096, validatorRequest.validatorRequest().maxCharsPerCellLimit());
27+
CsvValidatorJavaBridge.ValidationRequest validationRequest = ((CsvValidatorJavaBridge.ValidationResult) result).validatorRequest();
28+
Assert.assertEquals("csvFile", validationRequest.csvFile());
29+
Assert.assertEquals(StandardCharsets.UTF_8, validationRequest.csvEncoding());
30+
Assert.assertEquals("csvSchema", validationRequest.csvSchemaFile());
31+
Assert.assertEquals(StandardCharsets.UTF_8, validationRequest.csvSchemaEncoding());
32+
Assert.assertFalse(validationRequest.failFast());
33+
Assert.assertEquals(new ArrayList<Substitution>(), validationRequest.pathSubstitutionsList());
34+
Assert.assertFalse(validationRequest.enforceCaseSensitivePathChecks());
35+
Assert.assertFalse(validationRequest.trace());
36+
Assert.assertNull(validationRequest.progress());
37+
Assert.assertFalse(validationRequest.skipFileChecks());
38+
Assert.assertEquals(4096, validationRequest.maxCharsPerCellLimit());
3939
}
4040

4141
@Test
4242
public void defaultValuesAreUsedWhenUsingReaderMethod() {
4343
Result result = new CsvValidator.ValidatorBuilder(csvFileReader, csvSchemaReader).runValidation();
44-
CsvValidatorJavaBridge.ReaderValidationResult validatorRequest = (CsvValidatorJavaBridge.ReaderValidationResult) result;
45-
Assert.assertEquals(csvFileReader, validatorRequest.validatorRequest().csvReader());
46-
Assert.assertEquals(csvSchemaReader, validatorRequest.validatorRequest().csvSchemaReader());
47-
Assert.assertFalse(validatorRequest.validatorRequest().failFast());
48-
Assert.assertEquals(new ArrayList<Substitution>(), validatorRequest.validatorRequest().pathSubstitutionsList());
49-
Assert.assertFalse(validatorRequest.validatorRequest().enforceCaseSensitivePathChecks());
50-
Assert.assertFalse(validatorRequest.validatorRequest().trace());
51-
Assert.assertNull(validatorRequest.validatorRequest().progress());
52-
Assert.assertFalse(validatorRequest.validatorRequest().skipFileChecks());
53-
Assert.assertEquals(4096, validatorRequest.validatorRequest().maxCharsPerCellLimit());
44+
CsvValidatorJavaBridge.ReaderValidationRequest validationRequest = ((CsvValidatorJavaBridge.ReaderValidationResult) result).validatorRequest();
45+
Assert.assertEquals(csvFileReader, validationRequest.csvReader());
46+
Assert.assertEquals(csvSchemaReader, validationRequest.csvSchemaReader());
47+
Assert.assertFalse(validationRequest.failFast());
48+
Assert.assertEquals(new ArrayList<Substitution>(), validationRequest.pathSubstitutionsList());
49+
Assert.assertFalse(validationRequest.enforceCaseSensitivePathChecks());
50+
Assert.assertFalse(validationRequest.trace());
51+
Assert.assertNull(validationRequest.progress());
52+
Assert.assertFalse(validationRequest.skipFileChecks());
53+
Assert.assertEquals(4096, validationRequest.maxCharsPerCellLimit());
5454
}
5555

5656
@Test
@@ -79,19 +79,19 @@ public void correctValuesArePassedIntoValidateMethodUsingTextFileMethod() throws
7979
.usingSkipFileChecks(true)
8080
.usingMaxCharsPerCell(8096)
8181
.runValidation();
82-
CsvValidatorJavaBridge.ValidationResult validatorRequest = (CsvValidatorJavaBridge.ValidationResult) result;
83-
Assert.assertEquals("csvFile", validatorRequest.validatorRequest().csvFile());
84-
Assert.assertEquals(StandardCharsets.ISO_8859_1, validatorRequest.validatorRequest().csvEncoding());
85-
Assert.assertEquals("csvSchema", validatorRequest.validatorRequest().csvSchemaFile());
86-
Assert.assertEquals(StandardCharsets.ISO_8859_1, validatorRequest.validatorRequest().csvSchemaEncoding());
87-
Assert.assertTrue(validatorRequest.validatorRequest().failFast());
88-
Assert.assertEquals("fromPath", validatorRequest.validatorRequest().pathSubstitutionsList().get(0).getFrom());
89-
Assert.assertEquals("toPath", validatorRequest.validatorRequest().pathSubstitutionsList().get(0).getTo());
90-
Assert.assertTrue(validatorRequest.validatorRequest().enforceCaseSensitivePathChecks());
91-
Assert.assertTrue(validatorRequest.validatorRequest().trace());
92-
Assert.assertEquals(progressCallback, validatorRequest.validatorRequest().progress());
93-
Assert.assertTrue(validatorRequest.validatorRequest().skipFileChecks());
94-
Assert.assertEquals(8096, validatorRequest.validatorRequest().maxCharsPerCellLimit());
82+
CsvValidatorJavaBridge.ValidationRequest validationRequest = ((CsvValidatorJavaBridge.ValidationResult) result).validatorRequest();
83+
Assert.assertEquals("csvFile", validationRequest.csvFile());
84+
Assert.assertEquals(StandardCharsets.ISO_8859_1, validationRequest.csvEncoding());
85+
Assert.assertEquals("csvSchema", validationRequest.csvSchemaFile());
86+
Assert.assertEquals(StandardCharsets.ISO_8859_1, validationRequest.csvSchemaEncoding());
87+
Assert.assertTrue(validationRequest.failFast());
88+
Assert.assertEquals("fromPath", validationRequest.pathSubstitutionsList().get(0).getFrom());
89+
Assert.assertEquals("toPath", validationRequest.pathSubstitutionsList().get(0).getTo());
90+
Assert.assertTrue(validationRequest.enforceCaseSensitivePathChecks());
91+
Assert.assertTrue(validationRequest.trace());
92+
Assert.assertEquals(progressCallback, validationRequest.progress());
93+
Assert.assertTrue(validationRequest.skipFileChecks());
94+
Assert.assertEquals(8096, validationRequest.maxCharsPerCellLimit());
9595
}
9696

9797
@Test
@@ -109,17 +109,17 @@ public void correctValuesArePassedIntoValidateMethodUsingReaderMethod() {
109109
.usingMaxCharsPerCell(16096)
110110
.runValidation();
111111

112-
CsvValidatorJavaBridge.ReaderValidationResult validatorRequest = (CsvValidatorJavaBridge.ReaderValidationResult) result;
113-
Assert.assertEquals(csvFileReader, validatorRequest.validatorRequest().csvReader());
114-
Assert.assertEquals(csvSchemaReader, validatorRequest.validatorRequest().csvSchemaReader());
115-
Assert.assertTrue(validatorRequest.validatorRequest().failFast());
116-
Assert.assertEquals("fromPath", validatorRequest.validatorRequest().pathSubstitutionsList().get(0).getFrom());
117-
Assert.assertEquals("toPath", validatorRequest.validatorRequest().pathSubstitutionsList().get(0).getTo());
118-
Assert.assertTrue(validatorRequest.validatorRequest().enforceCaseSensitivePathChecks());
119-
Assert.assertTrue(validatorRequest.validatorRequest().trace());
120-
Assert.assertEquals(progressCallback, validatorRequest.validatorRequest().progress());
121-
Assert.assertTrue(validatorRequest.validatorRequest().skipFileChecks());
122-
Assert.assertEquals(16096, validatorRequest.validatorRequest().maxCharsPerCellLimit());
112+
CsvValidatorJavaBridge.ReaderValidationRequest validationRequest = ((CsvValidatorJavaBridge.ReaderValidationResult) result).validatorRequest();
113+
Assert.assertEquals(csvFileReader, validationRequest.csvReader());
114+
Assert.assertEquals(csvSchemaReader, validationRequest.csvSchemaReader());
115+
Assert.assertTrue(validationRequest.failFast());
116+
Assert.assertEquals("fromPath", validationRequest.pathSubstitutionsList().get(0).getFrom());
117+
Assert.assertEquals("toPath", validationRequest.pathSubstitutionsList().get(0).getTo());
118+
Assert.assertTrue(validationRequest.enforceCaseSensitivePathChecks());
119+
Assert.assertTrue(validationRequest.trace());
120+
Assert.assertEquals(progressCallback, validationRequest.progress());
121+
Assert.assertTrue(validationRequest.skipFileChecks());
122+
Assert.assertEquals(16096, validationRequest.maxCharsPerCellLimit());
123123
}
124124
}
125125

0 commit comments

Comments
 (0)