Skip to content

Commit fc57ed9

Browse files
committed
♻️ use builder pattern for page options
1 parent a2f61e6 commit fc57ed9

File tree

4 files changed

+59
-40
lines changed

4 files changed

+59
-40
lines changed

docs/code_samples/default_v2.txt

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ public class SimpleMindeeClient {
1919

2020
// Set inference parameters
2121
// Note: modelId is mandatory.
22-
InferenceParameters options = InferenceParameters.builder(modelId)
22+
InferenceParameters inferenceParams = InferenceParameters.builder(modelId)
2323
// If set to `true`, will enable Retrieval-Augmented Generation.
2424
.rag(false)
2525
.build();
@@ -29,10 +29,10 @@ public class SimpleMindeeClient {
2929
new File(filePath)
3030
);
3131

32-
// Upload the file
32+
// Send for processing
3333
InferenceResponse response = mindeeClient.enqueueAndGetInference(
3434
inputSource,
35-
options
35+
inferenceParams
3636
);
3737

3838
// Print a summary of the response

src/main/java/com/mindee/CommandLineInterface.java

Lines changed: 4 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -15,9 +15,7 @@
1515
import java.io.File;
1616
import java.io.IOException;
1717
import java.lang.reflect.Method;
18-
import java.util.ArrayList;
1918
import java.util.Arrays;
20-
import java.util.List;
2119
import java.util.Objects;
2220
import java.util.concurrent.Callable;
2321
import java.util.stream.Collectors;
@@ -267,13 +265,10 @@ void generatedMethod(
267265
}
268266

269267
protected PageOptions getDefaultPageOptions() {
270-
List<Integer> pageNumbers = new ArrayList<>();
271-
pageNumbers.add(0);
272-
pageNumbers.add(1);
273-
pageNumbers.add(2);
274-
pageNumbers.add(3);
275-
pageNumbers.add(4);
276-
return new PageOptions(pageNumbers, PageOptionsOperation.KEEP_ONLY);
268+
return new PageOptions.Builder()
269+
.pageIndexes(new Integer[]{0, 1, 2, 3, 4})
270+
.operation(PageOptionsOperation.KEEP_ONLY)
271+
.build();
277272
}
278273

279274
private String wordsOutput(Ocr ocr) {

src/main/java/com/mindee/input/PageOptions.java

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package com.mindee.input;
22

3+
import java.util.Arrays;
34
import java.util.List;
45
import lombok.Value;
56

@@ -26,10 +27,18 @@ public class PageOptions {
2627
*/
2728
Integer onMinPages;
2829

30+
/**
31+
* @deprecated Use the Builder pattern instead.
32+
*/
33+
@Deprecated
2934
public PageOptions(List<Integer> pages) {
3035
this(pages, PageOptionsOperation.KEEP_ONLY, 0);
3136
}
3237

38+
/**
39+
* @deprecated Use the Builder pattern instead.
40+
*/
41+
@Deprecated
3342
public PageOptions(
3443
List<Integer> pages,
3544
PageOptionsOperation operation
@@ -53,7 +62,12 @@ public PageOptions(
5362
public static final class Builder {
5463
private List<Integer> pageIndexes;
5564
private PageOptionsOperation operation;
56-
private Integer onMinPages;
65+
private Integer onMinPages = 0;
66+
67+
public Builder pageIndexes(Integer[] pageIndexes) {
68+
this.pageIndexes = Arrays.asList(pageIndexes);
69+
return this;
70+
}
5771

5872
public Builder pageIndexes(List<Integer> pageIndexes) {
5973
this.pageIndexes = pageIndexes;

src/test/java/com/mindee/pdf/PdfOperationTest.java

Lines changed: 37 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -21,13 +21,15 @@ public class PdfOperationTest {
2121
public void givenADocumentAndPageToKeep_whenSplit_thenReturnsOnlyKeptPage()
2222
throws IOException {
2323

24-
List<Integer> pageNumberToKeep = new ArrayList<>();
25-
pageNumberToKeep.add(2);
24+
PageOptions pageOptions = new PageOptions.Builder()
25+
.pageIndexes(new Integer[]{2})
26+
.operation(PageOptionsOperation.KEEP_ONLY)
27+
.build();
2628

27-
SplitQuery splitQuery = new SplitQuery(
28-
Files.readAllBytes(new File("src/test/resources/file_types/pdf/multipage.pdf").toPath()),
29-
new PageOptions(pageNumberToKeep, PageOptionsOperation.KEEP_ONLY, 0));
29+
byte[] fileBytes = Files.readAllBytes(
30+
new File("src/test/resources/file_types/pdf/multipage.pdf").toPath());
3031

32+
SplitQuery splitQuery = new SplitQuery(fileBytes, pageOptions);
3133
SplitPdf splitPdf = pdfOperation.split(splitQuery);
3234

3335
Assertions.assertNotNull(splitPdf);
@@ -39,13 +41,18 @@ public void givenADocumentAndPageToKeep_whenSplit_thenReturnsOnlyKeptPage()
3941
public void givenADocumentAndListOfPagesToKeep_whenSplit_thenReturnsOnlyKeptPages()
4042
throws IOException {
4143

42-
List<Integer> pageNumberToKeep = new ArrayList<>();
43-
pageNumberToKeep.add(1);
44-
pageNumberToKeep.add(2);
44+
List<Integer> pageNumbersToKeep = new ArrayList<>();
45+
pageNumbersToKeep.add(1);
46+
pageNumbersToKeep.add(2);
47+
48+
PageOptions pageOptions = new PageOptions.Builder()
49+
.pageIndexes(pageNumbersToKeep)
50+
.operation(PageOptionsOperation.KEEP_ONLY)
51+
.build();
4552

4653
SplitQuery splitQuery = new SplitQuery(
4754
Files.readAllBytes(new File("src/test/resources/file_types/pdf/multipage.pdf").toPath()),
48-
new PageOptions(pageNumberToKeep, PageOptionsOperation.KEEP_ONLY, 0)
55+
pageOptions
4956
);
5057
SplitPdf splitPdf = pdfOperation.split(splitQuery);
5158

@@ -58,14 +65,14 @@ public void givenADocumentAndListOfPagesToKeep_whenSplit_thenReturnsOnlyKeptPage
5865
public void givenADocumentAndListOfPagesToRemove_whenSplit_thenReturnsOnlyNotRemovedPages()
5966
throws IOException {
6067

61-
List<Integer> pageNumberToKeep = new ArrayList<>();
62-
pageNumberToKeep.add(1);
63-
pageNumberToKeep.add(2);
64-
pageNumberToKeep.add(3);
68+
PageOptions pageOptions = new PageOptions.Builder()
69+
.pageIndexes(new Integer[]{1,2,3})
70+
.operation(PageOptionsOperation.REMOVE)
71+
.build();
6572

6673
SplitQuery splitQuery = new SplitQuery(
6774
Files.readAllBytes(new File("src/test/resources/file_types/pdf/multipage.pdf").toPath()),
68-
new PageOptions(pageNumberToKeep, PageOptionsOperation.REMOVE, 0)
75+
pageOptions
6976
);
7077
SplitPdf splitPdf = pdfOperation.split(splitQuery);
7178

@@ -78,14 +85,14 @@ public void givenADocumentAndListOfPagesToRemove_whenSplit_thenReturnsOnlyNotRem
7885
public void givenADocumentOtherThantAPdf_whenSplit_mustFail()
7986
throws IOException {
8087

81-
List<Integer> pageNumberToKeep = new ArrayList<>();
82-
pageNumberToKeep.add(1);
83-
pageNumberToKeep.add(2);
84-
pageNumberToKeep.add(3);
88+
PageOptions pageOptions = new PageOptions.Builder()
89+
.pageIndexes(new Integer[]{1,2,3})
90+
.operation(PageOptionsOperation.REMOVE)
91+
.build();
8592

8693
SplitQuery splitQuery = new SplitQuery(
8794
Files.readAllBytes(new File("src/test/resources/file_types/receipt.jpg").toPath()),
88-
new PageOptions(pageNumberToKeep, PageOptionsOperation.REMOVE, 0)
95+
pageOptions
8996
);
9097

9198
Assertions.assertThrows(
@@ -97,12 +104,15 @@ public void givenADocumentOtherThantAPdf_whenSplit_mustFail()
97104
public void givenADocumentAndListPagesToRemoveAndMinPagesCondition_whenSplit_mustNotRemovePages()
98105
throws IOException {
99106

100-
List<Integer> pageNumberToKeep = new ArrayList<>();
101-
pageNumberToKeep.add(1);
107+
PageOptions pageOptions = new PageOptions.Builder()
108+
.pageIndexes(new Integer[]{1})
109+
.operation(PageOptionsOperation.REMOVE)
110+
.onMinPages(5)
111+
.build();
102112

103113
SplitQuery splitQuery = new SplitQuery(
104114
Files.readAllBytes(new File("src/test/resources/file_types/pdf/multipage_cut-2.pdf").toPath()),
105-
new PageOptions(pageNumberToKeep, PageOptionsOperation.REMOVE, 5)
115+
pageOptions
106116
);
107117
SplitPdf splitPdf = pdfOperation.split(splitQuery);
108118

@@ -115,14 +125,14 @@ public void givenADocumentAndListPagesToRemoveAndMinPagesCondition_whenSplit_mus
115125
public void givenADocumentAndNegativeListPagesToKeep_whenSplit_thenReturnsOnlyKeptPages()
116126
throws IOException {
117127

118-
List<Integer> pageNumberToKeep = new ArrayList<>();
119-
pageNumberToKeep.add(1);
120-
pageNumberToKeep.add(-2);
121-
pageNumberToKeep.add(-1);
128+
PageOptions pageOptions = new PageOptions.Builder()
129+
.pageIndexes(new Integer[]{1,-2,-1})
130+
.operation(PageOptionsOperation.KEEP_ONLY)
131+
.build();
122132

123133
SplitQuery splitQuery = new SplitQuery(
124134
Files.readAllBytes(new File("src/test/resources/file_types/pdf/multipage.pdf").toPath()),
125-
new PageOptions(pageNumberToKeep, PageOptionsOperation.KEEP_ONLY, 0)
135+
pageOptions
126136
);
127137
SplitPdf splitPdf = pdfOperation.split(splitQuery);
128138

0 commit comments

Comments
 (0)