Package com.endeca.BulkLoad

This defines the API for writing programs to load bulk data into the Endeca data store.

See:
          Description

Interface Summary
AbortCallback Interface for handling abort conditions in BulkIngester.
ErrorCallback Interface for handling error conditions in BulkIngester.
FinishedCallback Interface for receiving notification that a BulkIngester ingestion has finished.
StatusCallback Interface for handling status updates in BulkIngester.
 

Class Summary
BulkIngester The primary entry point for the client-side Bulk Load Interface for loading data into an Endeca data store.
 

Package com.endeca.BulkLoad Description

This defines the API for writing programs to load bulk data into the Endeca data store.

Before loading data into the data store, a client program needs to know the bulk load port of the data store. This can be obtained via the dataStoreStatus operation of the Control web service, which returns a dataStoreStatusResponse object. This in turn contains a dataStoreConfig object, which contains the bulkLoadPort field.

Usage

Here is a sample program that illustrates the basic usage of the Endeca Bulk Load API.
class BulkLoadDemo {
    
    
    Record makeProductRecord(String name, int size, double price) {

        Record.Builder recBuilder = Record.newBuilder(); 

        Assignment.Builder assgtBuilder = Assignment.newBuilder();
        assgtBuilder.setName("Name");
        assgtBuilder.setStringValue(name);
        assgtBuilder.setDataType(Assignment.DataType.STRING);
        Assignment nameAssgt = assgtBuilder.build();
        recBuilder.setSpec(nameAssgt);

        assgtBuilder.clear();
        assgtBuilder.setName("Size");
        assgtBuilder.setIntValue(size);
        assgtBuilder.setDataType(Assignment.DataType.INT);
        Assignment sizeAssgt = assgtBuilder.build();
        recBuilder.addAssignment(sizeAssgt);
        
        assgtBuilder.clear();
        assgtBuilder.setName("Price");
        assgtBuilder.setDoubleValue(price);
        assgtBuilder.setDataType(Assignment.DataType.DOUBLE);
        Assignment priceAssgt = assgtBuilder.build();
        recBuilder.addAssignment(priceAssgt);

        Record product = recBuilder.build();

        return product;
    }
        
    void main(int argc, String[] argv) {
    
        ErrorCallback errorCallback = new ErrorCallback() {
            void handleError(String reason, Record reject) {
                System.out.println("Record "
                        + reject.getSpec().getName()
                        + " rejected: " + reason);
            }
        };

        FinishedCallback finishedCallback = new FinishedCallback() {
            void handleFinished() {
                System.out.println("Finished!");
            }
        };

        AbortCallback abortCallback = new AbortCallback() {
            void handleAbort(String reason) {
                System.out.println("Aborted: " + reason);
            }
        };

        StatusCallback statusCallback = new StatusCallback() {
            void handleStatus(long recordsAdded, 
                    long recordsQueued, 
                    long recordsRejected, 
                    String state) {
                System.out.println("Added: " + recordsAdded + "\n"
                        + "Queued: " + recordsQueued + "\n"
                        + "Rejected: " + recordsRejected + "\n"
                        + "State: " + state + "\n");
            }
        }; 

        BulkIngester ingester("endecaserver.example.com",
                1234,        // port
                true,        // doFinalMerge
                true,        // doUpdateDictionary
                60,          // timeout
                errorCallback,
                finishedCallback,
                abortCallback,
                statusCallback);

        Record widget = makeProductRecord("Widget", 12, 99.95);
        Record thing = makeProductRecord("Thing", 110, 3.14); 
        
        ingester.begin();
        ingester.sendRecord(widget);
        ingester.requestStatusUpdate();
        ingester.sendRecord(thing);    
        ingester.endIngest();
        
    }
}