Skip to content

Commit 757916e

Browse files
committed
Adding the suggestions and unit test.
1 parent 4f15ab0 commit 757916e

File tree

4 files changed

+186
-31
lines changed

4 files changed

+186
-31
lines changed

marklogic-client-api/src/main/java/com/marklogic/client/document/DocumentWriteOperation.java

Lines changed: 24 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -139,10 +139,6 @@ public String getTemporalDocumentURI() {
139139
return null;
140140
}
141141

142-
@Override
143-
public int compareTo(DocumentWriteOperation o) {
144-
return getUri().compareTo(o.getUri());
145-
}
146142
}
147143
final class WrapperImpl {
148144
private DocumentUriMaker docUriMaker;
@@ -191,4 +187,28 @@ String makeUri(AbstractWriteHandle content) {
191187
@FunctionalInterface
192188
public interface DocumentUriMaker extends Function<AbstractWriteHandle, String> {
193189
}
190+
191+
default int compareTo(DocumentWriteOperation o) {
192+
if(o == null)
193+
throw new NullPointerException("DocumentWriteOperation cannot be null");
194+
195+
if(this.getUri() != null && o.getUri() != null)
196+
return getUri().compareTo(o.getUri());
197+
198+
if(this.getUri() == null && o.getUri() != null)
199+
return -1;
200+
201+
if(this.getUri() != null && o.getUri()==null)
202+
return 1;
203+
204+
if(this.getUri() == null && o.getUri() == null)
205+
{
206+
if(this.hashCode() > o.hashCode())
207+
return 1;
208+
else if (this.hashCode() < o.hashCode())
209+
return -1;
210+
return 0;
211+
}
212+
return 0;
213+
}
194214
}

marklogic-client-api/src/main/java/com/marklogic/client/impl/DocumentWriteOperationImpl.java

Lines changed: 1 addition & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@
2020
import com.marklogic.client.io.marker.AbstractWriteHandle;
2121
import com.marklogic.client.io.marker.DocumentMetadataWriteHandle;
2222

23-
public class DocumentWriteOperationImpl implements DocumentWriteOperation,Comparable<DocumentWriteOperation> {
23+
public class DocumentWriteOperationImpl implements DocumentWriteOperation {
2424
private OperationType operationType;
2525
private String uri;
2626
private String temporalDocumentURI;
@@ -74,31 +74,6 @@ public AbstractWriteHandle getContent() {
7474
return content;
7575
}
7676

77-
@Override
78-
public int compareTo(DocumentWriteOperation o) {
79-
if(o == null)
80-
throw new NullPointerException("DocumentWriteOperation cannot be null");
81-
82-
if(this.getUri() != null && o.getUri() != null)
83-
return getUri().compareTo(o.getUri());
84-
85-
if(this.getUri() == null && o.getUri() != null)
86-
return -1;
87-
88-
if(this.getUri() != null && o.getUri()==null)
89-
return 1;
90-
91-
if(this.getUri() == null && o.getUri() == null)
92-
{
93-
if(this.hashCode() > o.hashCode())
94-
return 1;
95-
else if (this.hashCode() < o.hashCode())
96-
return -1;
97-
return 0;
98-
}
99-
return 0;
100-
}
101-
10277
@Override
10378
public int hashCode() {
10479
if(this.getUri()!=null)

marklogic-client-api/src/main/java/com/marklogic/client/impl/DocumentWriteSetImpl.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -161,7 +161,7 @@ public boolean contains(Object o) {
161161

162162
@Override
163163
public Iterator<DocumentWriteOperation> iterator() {
164-
if(metadataCount <=1)
164+
if(this.metadataCount <=1)
165165
Collections.sort(operations);
166166
return operations.iterator();
167167
}
Lines changed: 160 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,160 @@
1+
package com.marklogic.client.test.document;
2+
3+
import com.marklogic.client.document.DocumentWriteOperation;
4+
import com.marklogic.client.document.DocumentWriteSet;
5+
import com.marklogic.client.document.TextDocumentManager;
6+
import com.marklogic.client.io.DocumentMetadataHandle;
7+
import com.marklogic.client.io.Format;
8+
import com.marklogic.client.io.StringHandle;
9+
import com.marklogic.client.query.DeleteQueryDefinition;
10+
import com.marklogic.client.query.QueryManager;
11+
import com.marklogic.client.test.Common;
12+
import org.junit.AfterClass;
13+
import org.junit.BeforeClass;
14+
import org.junit.Test;
15+
16+
import static org.junit.Assert.assertEquals;
17+
18+
import java.util.ArrayList;
19+
import java.util.Iterator;
20+
import java.util.List;
21+
22+
public class DocumentWriteOperationTest {
23+
24+
static TextDocumentManager textDocumentManager;
25+
static String collectionName = "DocumentWriteOperation";
26+
27+
StringHandle doc1 = new StringHandle(
28+
"Document - 1").withFormat(Format.TEXT);
29+
StringHandle doc2 = new StringHandle(
30+
"Document - 2").withFormat(Format.TEXT);
31+
StringHandle doc3 = new StringHandle(
32+
"Document - 3").withFormat(Format.TEXT);
33+
StringHandle doc4 = new StringHandle(
34+
"Document - 4").withFormat(Format.TEXT);
35+
StringHandle doc5 = new StringHandle(
36+
"Document - 5").withFormat(Format.TEXT);
37+
StringHandle doc6 = new StringHandle(
38+
"Document - 6").withFormat(Format.TEXT);
39+
StringHandle doc7 = new StringHandle(
40+
"Document - 7").withFormat(Format.TEXT);
41+
StringHandle doc8 = new StringHandle(
42+
"Document - 8").withFormat(Format.TEXT);
43+
44+
DocumentMetadataHandle defaultMetadata1 =
45+
new DocumentMetadataHandle().withQuality(1).withCollections(collectionName);
46+
DocumentMetadataHandle defaultMetadata2 =
47+
new DocumentMetadataHandle().withQuality(2).withCollections(collectionName);
48+
49+
@BeforeClass
50+
public static void setup() {
51+
Common.connect();
52+
textDocumentManager = Common.client.newTextDocumentManager();
53+
}
54+
55+
@Test
56+
public void DocumentWriteSetImplTest() {
57+
58+
DocumentWriteSet batch = textDocumentManager.newWriteSet();
59+
60+
batch.add("doc8.txt", doc8);
61+
batch.add("doc5.txt", doc5);
62+
batch.add("doc6.txt", doc6);
63+
batch.add("doc4.txt", doc4);
64+
batch.add("doc3.txt", doc3);
65+
batch.add("doc1.txt", doc1);
66+
batch.add("doc2.txt", doc2);
67+
batch.add("doc7.txt", doc7);
68+
batch.addDefault(defaultMetadata1);
69+
70+
List<String> list = new ArrayList<>();
71+
list.add(null);
72+
list.add("doc1.txt");
73+
list.add("doc2.txt");
74+
list.add("doc3.txt");
75+
list.add("doc4.txt");
76+
list.add("doc5.txt");
77+
list.add("doc6.txt");
78+
list.add("doc7.txt");
79+
list.add("doc8.txt");
80+
int i = 0;
81+
82+
Iterator<DocumentWriteOperation> itr = batch.iterator();
83+
while(itr.hasNext()){
84+
assertEquals("Document uri not as expected", itr.next().getUri(), list.get(i));
85+
i++;
86+
}
87+
textDocumentManager.write(batch);
88+
}
89+
90+
@Test
91+
public void DocumentWriteSetWithTwoMetadataTest() {
92+
93+
94+
DocumentWriteSet batch = textDocumentManager.newWriteSet();
95+
96+
batch.add("doc8.txt", doc8);
97+
batch.add("doc5.txt", doc5);
98+
batch.add("doc6.txt", doc6);
99+
batch.add("doc4.txt", doc4);
100+
batch.addDefault(defaultMetadata1);
101+
batch.add("doc3.txt", doc3);
102+
batch.add("doc1.txt", doc1);
103+
batch.addDefault(defaultMetadata2);
104+
batch.add("doc2.txt", doc2);
105+
batch.add("doc7.txt", doc7);
106+
107+
List<String> list = new ArrayList<>();
108+
list.add("doc8.txt");
109+
list.add("doc5.txt");
110+
list.add("doc6.txt");
111+
list.add("doc4.txt");
112+
list.add(null);
113+
list.add("doc3.txt");
114+
list.add("doc1.txt");
115+
list.add(null);
116+
list.add("doc2.txt");
117+
list.add("doc7.txt");
118+
119+
int i = 0;
120+
121+
Iterator<DocumentWriteOperation> itr = batch.iterator();
122+
while(itr.hasNext()){
123+
assertEquals("Document uri not as expected", itr.next().getUri(), list.get(i));
124+
i++;
125+
}
126+
textDocumentManager.write(batch);
127+
128+
assertEquals("Doc 1 metadata not as expected",1,
129+
textDocumentManager.readMetadata("doc1.txt", new DocumentMetadataHandle()).getQuality());
130+
131+
assertEquals("Doc 2 metadata not as expected",2,
132+
textDocumentManager.readMetadata("doc2.txt", new DocumentMetadataHandle()).getQuality());
133+
134+
assertEquals("Doc 3 metadata not as expected",1,
135+
textDocumentManager.readMetadata("doc3.txt", new DocumentMetadataHandle()).getQuality());
136+
137+
assertEquals("Doc 4 metadata not as expected",0,
138+
textDocumentManager.readMetadata("doc4.txt", new DocumentMetadataHandle()).getQuality());
139+
140+
assertEquals("Doc 5 metadata not as expected",0,
141+
textDocumentManager.readMetadata("doc5.txt", new DocumentMetadataHandle()).getQuality());
142+
143+
assertEquals("Doc 6 metadata not as expected",0,
144+
textDocumentManager.readMetadata("doc6.txt", new DocumentMetadataHandle()).getQuality());
145+
146+
assertEquals("Doc 7 metadata not as expected",2,
147+
textDocumentManager.readMetadata("doc7.txt", new DocumentMetadataHandle()).getQuality());
148+
149+
assertEquals("Doc 8 metadata not as expected",0,
150+
textDocumentManager.readMetadata("doc8.txt", new DocumentMetadataHandle()).getQuality());
151+
}
152+
153+
@AfterClass
154+
public static void cleanup() {
155+
QueryManager queryManager = Common.client.newQueryManager();
156+
DeleteQueryDefinition deletedef = queryManager.newDeleteDefinition();
157+
deletedef.setCollections(collectionName);
158+
queryManager.delete(deletedef);
159+
}
160+
}

0 commit comments

Comments
 (0)