Search in sources :

Example 1 with DocumentUriTemplate

use of com.marklogic.client.document.DocumentUriTemplate in project components by Talend.

the class MarkLogicWriter method generateDocId.

private String generateDocId(AbstractWriteHandle genericHandle) {
    DocumentUriTemplate template = docMgr.newDocumentUriTemplate(docIdSuffix);
    if (StringUtils.isNotEmpty(properties.docIdPrefix.getStringValue()) && !"\"\"".equals(properties.docIdPrefix.getStringValue())) {
        String realPrefix = properties.docIdPrefix.getStringValue();
        if (!(realPrefix.endsWith("/") || realPrefix.endsWith("\\"))) {
            realPrefix = realPrefix + "/";
        }
        template.setDirectory(realPrefix.replaceAll("\\\\", "/"));
    }
    DocumentDescriptor docDesc = docMgr.create(template, genericHandle);
    return docDesc.getUri();
}
Also used : DocumentUriTemplate(com.marklogic.client.document.DocumentUriTemplate) DocumentDescriptor(com.marklogic.client.document.DocumentDescriptor)

Example 2 with DocumentUriTemplate

use of com.marklogic.client.document.DocumentUriTemplate in project components by Talend.

the class MarkLogicWriterTest method testUpsertWithAutoGenerateDocId.

@Test
public void testUpsertWithAutoGenerateDocId() throws IOException {
    MarkLogicSink sink = new MarkLogicSink();
    MarkLogicOutputProperties properties = new MarkLogicOutputProperties("outputProperties");
    properties.init();
    properties.connection.referencedComponent.componentInstanceId.setValue("Not null value");
    properties.docType.setValue(MarkLogicOutputProperties.DocType.BINARY);
    properties.action.setValue(MarkLogicOutputProperties.Action.UPSERT);
    properties.autoGenerateDocId.setValue(true);
    properties.docIdPrefix.setValue("somePrefix");
    sink.ioProperties = properties;
    RuntimeContainer mockedContainer = mock(RuntimeContainer.class);
    DatabaseClient mockedClient = mock(DatabaseClient.class);
    Mockito.when(mockedContainer.getComponentData(anyString(), anyString())).thenReturn(mockedClient);
    DocumentManager markLogicDocMngrMock = mock(DocumentManager.class);
    DocumentUriTemplate uriTemplateMock = mock(DocumentUriTemplate.class);
    DocumentDescriptor descriptorMock = mock(DocumentDescriptor.class);
    when(markLogicDocMngrMock.newDocumentUriTemplate(anyString())).thenReturn(uriTemplateMock);
    when(markLogicDocMngrMock.create(any(DocumentUriTemplate.class), any(AbstractWriteHandle.class))).thenReturn(descriptorMock);
    when(descriptorMock.getUri()).thenReturn("somePrefix/docId");
    MarkLogicWriter writer = sink.createWriteOperation().createWriter(mockedContainer);
    GenericData.Record indexedRecord = new GenericData.Record(properties.datasetProperties.main.schema.getValue());
    indexedRecord.put(0, "docId");
    File docContent = new File("someFile");
    indexedRecord.put(1, docContent);
    writer.open("123");
    writer.docMgr = markLogicDocMngrMock;
    writer.write(indexedRecord);
    verify(markLogicDocMngrMock).write(eq("somePrefix/docId"), any(FileHandle.class));
    assertFalse(((Collection<IndexedRecord>) writer.getSuccessfulWrites()).isEmpty());
}
Also used : IndexedRecord(org.apache.avro.generic.IndexedRecord) FileHandle(com.marklogic.client.io.FileHandle) DocumentManager(com.marklogic.client.document.DocumentManager) DocumentUriTemplate(com.marklogic.client.document.DocumentUriTemplate) AbstractWriteHandle(com.marklogic.client.io.marker.AbstractWriteHandle) GenericData(org.apache.avro.generic.GenericData) DocumentDescriptor(com.marklogic.client.document.DocumentDescriptor) DatabaseClient(com.marklogic.client.DatabaseClient) MarkLogicOutputProperties(org.talend.components.marklogic.tmarklogicoutput.MarkLogicOutputProperties) IndexedRecord(org.apache.avro.generic.IndexedRecord) File(java.io.File) RuntimeContainer(org.talend.components.api.container.RuntimeContainer) Test(org.junit.Test)

Aggregations

DocumentDescriptor (com.marklogic.client.document.DocumentDescriptor)2 DocumentUriTemplate (com.marklogic.client.document.DocumentUriTemplate)2 DatabaseClient (com.marklogic.client.DatabaseClient)1 DocumentManager (com.marklogic.client.document.DocumentManager)1 FileHandle (com.marklogic.client.io.FileHandle)1 AbstractWriteHandle (com.marklogic.client.io.marker.AbstractWriteHandle)1 File (java.io.File)1 GenericData (org.apache.avro.generic.GenericData)1 IndexedRecord (org.apache.avro.generic.IndexedRecord)1 Test (org.junit.Test)1 RuntimeContainer (org.talend.components.api.container.RuntimeContainer)1 MarkLogicOutputProperties (org.talend.components.marklogic.tmarklogicoutput.MarkLogicOutputProperties)1