use of com.marklogic.client.io.SearchHandle in project components by Talend.
the class MarkLogicCriteriaReaderTest method testStartWithoutDocContentField.
@Test
public void testStartWithoutDocContentField() throws IOException {
StringQueryDefinition mockedStringQueryDefinition = mock(StringQueryDefinition.class);
QueryManager mockedQueryManager = mock(QueryManager.class);
when(mockedQueryManager.newStringDefinition()).thenReturn(mockedStringQueryDefinition);
when(mockedQueryManager.newStringDefinition(anyString())).thenReturn(mockedStringQueryDefinition);
DatabaseClient mockedClient = mock(DatabaseClient.class);
when(mockedClient.newDocumentManager()).thenReturn(null);
when(mockedClient.newQueryManager()).thenReturn(mockedQueryManager);
SearchHandle searchHandle = Mockito.mock(SearchHandle.class);
Mockito.when(mockedQueryManager.search(Mockito.eq(mockedStringQueryDefinition), Mockito.any(SearchHandle.class))).thenReturn(searchHandle);
MarkLogicSource mockedSource = mock(MarkLogicSource.class);
when(mockedSource.connect(any(RuntimeContainer.class))).thenReturn(mockedClient);
MarkLogicInputProperties properties = new MarkLogicInputProperties("inputProperties");
properties.init();
Schema.Field docIdField = new Schema.Field("docId", AvroUtils._string(), null, (Object) null, Schema.Field.Order.IGNORE);
properties.datasetProperties.main.schema.setValue(Schema.createRecord("docIdOnlySchema", null, null, false, Collections.singletonList(docIdField)));
MarkLogicCriteriaReader criteriaReader = new MarkLogicCriteriaReader(mockedSource, null, properties);
System.out.println(criteriaReader.start());
}
use of com.marklogic.client.io.SearchHandle in project components by Talend.
the class MarkLogicDatasetRuntimeTest method testWorkflow.
@SuppressWarnings("unchecked")
@Test
public void testWorkflow() {
RuntimeContainer container = Mockito.mock(RuntimeContainer.class);
MarkLogicConnectionProperties connection = new MarkLogicConnectionProperties("datastore");
connection.referencedComponent.componentInstanceId.setValue("reference");
DatabaseClient connectionClient = Mockito.mock(DatabaseClient.class);
GenericDocumentManager docManager = Mockito.mock(GenericDocumentManager.class);
Mockito.when(connectionClient.newDocumentManager()).thenReturn(docManager);
QueryManager queryManager = Mockito.mock(QueryManager.class);
Mockito.when(connectionClient.newQueryManager()).thenReturn(queryManager);
StringQueryDefinition stringQueryDefinition = Mockito.mock(StringQueryDefinition.class);
Mockito.when(queryManager.newStringDefinition()).thenReturn(stringQueryDefinition);
SearchHandle searchHandle = Mockito.mock(SearchHandle.class);
Mockito.when(queryManager.search(Mockito.eq(stringQueryDefinition), Mockito.any(SearchHandle.class))).thenReturn(searchHandle);
MatchDocumentSummary[] results = new MatchDocumentSummary[2];
MatchDocumentSummary firstRecord = Mockito.mock(MatchDocumentSummary.class);
MatchDocumentSummary secondRecord = Mockito.mock(MatchDocumentSummary.class);
results[0] = firstRecord;
results[1] = secondRecord;
Mockito.when(container.getComponentData("reference", MarkLogicConnection.CONNECTION)).thenReturn(connectionClient);
MarkLogicDatasetProperties properties = new MarkLogicDatasetProperties("dataset");
connection.init();
properties.setDatastoreProperties(connection);
properties.init();
datasetRuntime.initialize(container, properties);
Assert.assertEquals(2, datasetRuntime.getSchema().getFields().size());
Assert.assertEquals("docId", datasetRuntime.getSchema().getFields().get(0).name());
Assert.assertEquals("docContent", datasetRuntime.getSchema().getFields().get(1).name());
Mockito.when(searchHandle.getMatchResults()).thenReturn(results);
Mockito.when(searchHandle.getTotalResults()).thenReturn(2l);
Mockito.when(docManager.readAs(Mockito.anyString(), Mockito.any(Class.class))).thenReturn(new Object());
Consumer<IndexedRecord> consumer = Mockito.mock(Consumer.class);
datasetRuntime.getSample(2, consumer);
Mockito.verify(consumer, Mockito.times(2)).accept(Mockito.any(IndexedRecord.class));
}
use of com.marklogic.client.io.SearchHandle in project components by Talend.
the class MarkLogicCriteriaReader method start.
@Override
public boolean start() throws IOException {
MarkLogicConnection connection = (MarkLogicConnection) getCurrentSource();
result = new ResultWithLongNB();
connectionClient = connection.connect(container);
if (connectionClient == null) {
return false;
}
docManager = connectionClient.newDocumentManager();
boolean isDocContentFieldPresent = (settings.outputSchema.getFields().size() >= 2);
if (isDocContentFieldPresent) {
docContentField = settings.outputSchema.getFields().get(1);
}
docContentReader = new DocContentReader(docManager, settings.outputSchema, docContentField);
if (settings.useQueryOption && StringUtils.isNotEmpty(settings.queryOptionName)) {
prepareQueryOption();
}
queryManager = connectionClient.newQueryManager();
stringQueryDefinition = (settings.useQueryOption) ? queryManager.newStringDefinition(settings.queryOptionName) : queryManager.newStringDefinition();
stringQueryDefinition.setCriteria(settings.criteria);
searchHandle = queryManager.search(stringQueryDefinition, new SearchHandle());
matchedDocuments = searchHandle.getTotalResults();
pageSize = (settings.pageSize <= 0) ? matchedDocuments : settings.pageSize;
// if < 0 - it will be ignored
maxRetrieve = settings.maxRetrieve;
queryManager.setPageLength(pageSize);
documentCounter = 1;
readNextPage();
return (matchedDocuments > 0);
}
Aggregations