Search in sources :

Example 1 with AbstractWriteHandle

use of com.marklogic.client.io.marker.AbstractWriteHandle in project components by Talend.

the class MarkLogicWriter method write.

@Override
public void write(Object indexedRecordDatum) throws IOException {
    if (indexedRecordDatum == null || !(indexedRecordDatum instanceof IndexedRecord)) {
        return;
    }
    cleanWrites();
    IndexedRecord indexedRecord = (IndexedRecord) indexedRecordDatum;
    String docId = (String) indexedRecord.get(0);
    Object docContent = indexedRecord.get(1);
    try {
        switch(properties.action.getValue()) {
            case DELETE:
                deleteRecord(docId);
                break;
            case PATCH:
                patchRecord(docId, (String) docContent);
                break;
            case UPSERT:
                AbstractWriteHandle genericHandle = prepareWriteHandle(docContent);
                if (autoGenerateId) {
                    docId = generateDocId(genericHandle);
                    indexedRecord.put(0, docId);
                }
                upsertRecord(docId, genericHandle);
                break;
        }
        handleSuccessRecord(indexedRecord);
    } catch (Exception e) {
        handleRejectRecord(indexedRecord, e);
    }
    result.totalCount++;
}
Also used : IndexedRecord(org.apache.avro.generic.IndexedRecord) AbstractWriteHandle(com.marklogic.client.io.marker.AbstractWriteHandle) MarkLogicException(org.talend.components.marklogic.exceptions.MarkLogicException) IOException(java.io.IOException)

Aggregations

AbstractWriteHandle (com.marklogic.client.io.marker.AbstractWriteHandle)1 IOException (java.io.IOException)1 IndexedRecord (org.apache.avro.generic.IndexedRecord)1 MarkLogicException (org.talend.components.marklogic.exceptions.MarkLogicException)1