Bulk Load sample program

The following sample program will be used to illustrate the Bulk Load classes and methods.

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.addAssignments(sizeAssgt);
        
        assgtBuilder.clear();
        assgtBuilder.setName("Price");
        assgtBuilder.setDoubleValue(price);
        assgtBuilder.setDataType(Assignment.DataType.DOUBLE);
        Assignment priceAssgt = assgtBuilder.build();
        recBuilder.addAssignments(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
                false,       // useSSL
                true,        // doFinalMerge
                true,        // doUpdateDictionary
                90000        // timeout in ms
                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();
    }
}