Skip to content
This repository was archived by the owner on Feb 27, 2023. It is now read-only.

Commit 038e602

Browse files
author
Scott Stafford
committed
Make UriTransformer an interface
1 parent 416a983 commit 038e602

File tree

5 files changed

+84
-80
lines changed

5 files changed

+84
-80
lines changed

infrastructure/src/main/java/com/marklogic/spring/batch/item/writer/MarkLogicItemWriter.java

Lines changed: 17 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
import com.marklogic.client.ext.batch.RestBatchWriter;
99
import com.marklogic.client.impl.DocumentWriteOperationImpl;
1010
import com.marklogic.client.io.Format;
11+
import com.marklogic.spring.batch.item.writer.support.DefaultUriTransformer;
1112
import com.marklogic.spring.batch.item.writer.support.UriTransformer;
1213
import org.slf4j.Logger;
1314
import org.slf4j.LoggerFactory;
@@ -57,22 +58,20 @@ public MarkLogicItemWriter(DatabaseClient client) {
5758
if (!version.startsWith("9")) {
5859
isMarklogicVersion9 = false;
5960
}
61+
uriTransformer = new DefaultUriTransformer();
6062
}
6163

62-
public MarkLogicItemWriter(DatabaseClient client, UriTransformer uriTransformer) {
63-
this(client);
64-
this.uriTransformer = uriTransformer;
64+
public MarkLogicItemWriter(DatabaseClient databaseClient, Format format) {
65+
this(databaseClient);
66+
this.contentFormat = format;
6567
}
6668

69+
6770
public MarkLogicItemWriter(DatabaseClient client, ServerTransform serverTransform) {
6871
this(client);
6972
this.serverTransform = serverTransform;
7073
}
7174

72-
public MarkLogicItemWriter(DatabaseClient client, UriTransformer uriTransformer, ServerTransform serverTransform) {
73-
this(client, uriTransformer);
74-
this.serverTransform = serverTransform;
75-
}
7675

7776
public MarkLogicItemWriter(DatabaseClient client, ServerTransform serverTransform, Format format) {
7877
this(client, serverTransform);
@@ -83,27 +82,21 @@ public MarkLogicItemWriter(DatabaseClient client, ServerTransform serverTransfor
8382
public void write(List<? extends DocumentWriteOperation> items) throws Exception {
8483
if (isMarklogicVersion9) {
8584
for (DocumentWriteOperation item : items) {
86-
if (uriTransformer != null) {
87-
String newUri = uriTransformer.transform(item.getUri());
88-
batcher.add(newUri, item.getMetadata(), item.getContent());
89-
} else {
90-
batcher.add(item.getUri(), item.getMetadata(), item.getContent());
91-
}
85+
batcher.add(uriTransformer.transform(item.getUri()), item.getMetadata(), item.getContent());
9286
}
9387
} else {
94-
if (uriTransformer != null) {
95-
List<DocumentWriteOperation> newItems = new ArrayList<>();
96-
for (DocumentWriteOperation op : items) {
97-
String newUri = uriTransformer.transform(op.getUri());
98-
newItems.add(new DocumentWriteOperationImpl(DocumentWriteOperation.OperationType.DOCUMENT_WRITE,
99-
newUri, op.getMetadata(), op.getContent()));
100-
}
101-
batchWriter.write(newItems);
102-
} else {
103-
batchWriter.write(items);
88+
List<DocumentWriteOperation> newItems = new ArrayList<>();
89+
for (DocumentWriteOperation op : items) {
90+
String newUri = uriTransformer.transform(op.getUri());
91+
newItems.add(
92+
new DocumentWriteOperationImpl(
93+
DocumentWriteOperation.OperationType.DOCUMENT_WRITE,
94+
newUri,
95+
op.getMetadata(),
96+
op.getContent()));
10497
}
98+
batchWriter.write(newItems);
10599
}
106-
107100
}
108101

109102
@Override
Lines changed: 58 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,58 @@
1+
package com.marklogic.spring.batch.item.writer.support;
2+
3+
public class DefaultUriTransformer implements UriTransformer {
4+
5+
private String outputUriPrefix;
6+
private String outputUriReplace;
7+
private String outputUriSuffix;
8+
9+
public DefaultUriTransformer() {
10+
11+
}
12+
13+
public DefaultUriTransformer (String outputUriPrefix, String outputUriSuffix, String outputUriReplace) {
14+
this.outputUriPrefix = outputUriPrefix;
15+
this.outputUriSuffix = outputUriSuffix;
16+
this.outputUriReplace = outputUriReplace;
17+
}
18+
19+
@Override
20+
public String transform(String uri) {
21+
uri = (outputUriReplace != null) && !outputUriReplace.isEmpty() ? applyOutputUriReplace(uri, outputUriReplace) : uri;
22+
uri = (outputUriPrefix != null) && !outputUriPrefix.isEmpty() ? outputUriPrefix + uri : uri;
23+
uri = (outputUriSuffix != null) && !outputUriSuffix.isEmpty() ? uri + outputUriSuffix : uri;
24+
return uri;
25+
}
26+
27+
private String applyOutputUriReplace(String uri, String outputUriReplace) {
28+
String[] regexReplace = outputUriReplace.split(",");
29+
for (int i = 0; i < regexReplace.length; i=i+2) {
30+
String regex = regexReplace[i];
31+
String replace = regexReplace[i+1];
32+
uri = uri.replaceAll(regex, replace);
33+
}
34+
return uri;
35+
}
36+
37+
/*
38+
Prepends a string to the URI after substitution
39+
*/
40+
public void setOutputUriPrefix(String outputUriPrefix) {
41+
this.outputUriPrefix = outputUriPrefix;
42+
}
43+
44+
/*
45+
The outputUriReplace option accepts a comma delimited list of regular expression and replacement string pairs
46+
@param outputUriReplace Example regex,'replaceString',regex,'replaceString'
47+
*/
48+
public void setOutputUriReplace(String outputUriReplace) {
49+
this.outputUriReplace = outputUriReplace;
50+
}
51+
52+
/*
53+
Appends a string to the URI after substitution
54+
*/
55+
public void setOutputUriSuffix(String outputUriSuffix) {
56+
this.outputUriSuffix = outputUriSuffix;
57+
}
58+
}
Lines changed: 2 additions & 50 deletions
Original file line numberDiff line numberDiff line change
@@ -1,54 +1,6 @@
11
package com.marklogic.spring.batch.item.writer.support;
22

3+
public interface UriTransformer {
34

4-
public class UriTransformer {
5-
6-
private String outputUriPrefix;
7-
private String outputUriReplace;
8-
private String outputUriSuffix;
9-
10-
public UriTransformer(String outputUriPrefix, String outputUriSuffix, String outputUriReplace) {
11-
this.outputUriPrefix = outputUriPrefix;
12-
this.outputUriSuffix = outputUriSuffix;
13-
this.outputUriReplace = outputUriReplace;
14-
}
15-
16-
public String transform(String uri) {
17-
uri = (outputUriReplace != null) && !outputUriReplace.isEmpty() ? applyOutputUriReplace(uri, outputUriReplace) : uri;
18-
uri = (outputUriPrefix != null) && !outputUriPrefix.isEmpty() ? outputUriPrefix + uri : uri;
19-
uri = (outputUriSuffix != null) && !outputUriSuffix.isEmpty() ? uri + outputUriSuffix : uri;
20-
return uri;
21-
}
22-
23-
private String applyOutputUriReplace(String uri, String outputUriReplace) {
24-
String[] regexReplace = outputUriReplace.split(",");
25-
for (int i = 0; i < regexReplace.length; i=i+2) {
26-
String regex = regexReplace[i];
27-
String replace = regexReplace[i+1];
28-
uri = uri.replaceAll(regex, replace);
29-
}
30-
return uri;
31-
}
32-
33-
/*
34-
Prepends a string to the URI after substitution
35-
*/
36-
public void setOutputUriPrefix(String outputUriPrefix) {
37-
this.outputUriPrefix = outputUriPrefix;
38-
}
39-
40-
/*
41-
The outputUriReplace option accepts a comma delimited list of regular expression and replacement string pairs
42-
@param outputUriReplace Example regex,'replaceString',regex,'replaceString'
43-
*/
44-
public void setOutputUriReplace(String outputUriReplace) {
45-
this.outputUriReplace = outputUriReplace;
46-
}
47-
48-
/*
49-
Appends a string to the URI after substitution
50-
*/
51-
public void setOutputUriSuffix(String outputUriSuffix) {
52-
this.outputUriSuffix = outputUriSuffix;
53-
}
5+
public String transform(String uri);
546
}

infrastructure/src/test/java/com/marklogic/spring/batch/item/writer/MarkLogicItemWriterTest.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,7 @@ public MarkLogicItemWriterTest() {
4747
public void setup() throws IOException {
4848
client = testDatabaseClient = DatabaseClientFactory.newClient(databaseClientConfig.getHost(),
4949
databaseClientConfig.getPort(), new DatabaseClientFactory.DigestAuthContext(databaseClientConfig.getUsername(),
50-
databaseClientConfig.getPassword()));
50+
databaseClientConfig.getPassword()));
5151

5252
clientTestHelper = new ClientTestHelper();
5353
SimpleDatabaseClientProvider dbConfig = new SimpleDatabaseClientProvider(databaseClientConfig);

infrastructure/src/test/java/com/marklogic/spring/batch/item/writer/UriTransformerTest.java

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package com.marklogic.spring.batch.item.writer;
22

3+
import com.marklogic.spring.batch.item.writer.support.DefaultUriTransformer;
34
import com.marklogic.spring.batch.item.writer.support.UriTransformer;
45
import org.junit.Assert;
56
import org.junit.Test;
@@ -8,35 +9,35 @@ public class UriTransformerTest extends Assert {
89

910
@Test
1011
public void uriPrefixWithNullValuesTest() {
11-
UriTransformer transformer = new UriTransformer("pre", null, null);
12+
UriTransformer transformer = new DefaultUriTransformer("pre", null, null);
1213
String uri = "test";
1314
assertEquals("pretest", transformer.transform(uri));
1415
}
1516

1617
@Test
1718
public void uriPrefixWithEmptyStringValuesTest() {
18-
UriTransformer transformer = new UriTransformer("pre", "", "");
19+
UriTransformer transformer = new DefaultUriTransformer("pre", "", "");
1920
String uri = "test";
2021
assertEquals("pretest", transformer.transform(uri));
2122
}
2223

2324
@Test
2425
public void uriSuffixTest() {
25-
UriTransformer transformer = new UriTransformer("", "post", "");
26+
UriTransformer transformer = new DefaultUriTransformer("", "post", "");
2627
String uri = "test";
2728
assertEquals("testpost", transformer.transform(uri));
2829
}
2930

3031
@Test
3132
public void uriReplaceTest() {
32-
UriTransformer transformer = new UriTransformer("", "", "test,ABC");
33+
UriTransformer transformer = new DefaultUriTransformer("", "", "test,ABC");
3334
String uri = "thisisatest";
3435
assertEquals("thisisaABC", transformer.transform(uri));
3536
}
3637

3738
@Test
3839
public void uriPrefixAndReplaceTest() {
39-
UriTransformer transformer = new UriTransformer("pre", "", "test,ABC");
40+
UriTransformer transformer = new DefaultUriTransformer("pre", "", "test,ABC");
4041
String uri = "thisisatest";
4142
assertEquals("prethisisaABC", transformer.transform(uri));
4243
}

0 commit comments

Comments
 (0)