join-example

join example in DataRush
/*
 * (c) Copyright 2005-2008 Pervasive Software Inc. All rights reserved.
 */
package example.join;

import com.pervasive.datarush.config.CliConfig;
import com.pervasive.datarush.config.CliHelper;
import com.pervasive.datarush.config.annotations.Param;
import com.pervasive.datarush.executor.DataflowGraphBase;
import com.pervasive.datarush.operators.io.textfile.DelimitedTextProperties;
import com.pervasive.datarush.operators.io.textfile.ReadDelimitedText;
import com.pervasive.datarush.operators.io.textfile.WriteDelimitedText;
import com.pervasive.datarush.operators.join.JoinMode;
import com.pervasive.datarush.operators.join.JoinSortedRows;

/**
 * Join sample application
 * 

* This sample illustrates basic DataRush development, including *

    *
  1. Reusing operator provided in the standard operator library. *
  2. Composing a dataflow graph by adding operators and connecting flows *
  3. Using the CLI and configuration convenience classes *
*

* See also {@link JoinSampleHardcoded} for a "simpler", non-configurable * example that does not use a properties file and does not take advantage of * the CLI and configuration convenience classes provided with the SDK. * * @author Pervasive Software */ public class JoinSample extends DataflowGraphBase { private static final String[] JSON_PROPERTY_KEYS = { "leftInputProperties", "rightInputProperties", "joinKeys", "outputProperties" }; public static void main(String[] args) { // Parse command-line flags, and read and parse properties file CliConfig cli = CliHelper.processArgs(args, JSON_PROPERTY_KEYS); // Reflectively construct a configured JoinSample, and run it CliHelper.run(cli, JoinSample.class); } public JoinSample ( @Param("leftInputProperties") DelimitedTextProperties leftInputProperties, @Param("rightInputProperties") DelimitedTextProperties rightInputProperties, @Param("joinMode") JoinMode joinMode, @Param("joinKeys") String[] keyNames, @Param("outputProperties") DelimitedTextProperties outputProperties) { // Add reader for left hand side of join ReadDelimitedText readLeft = add( new ReadDelimitedText(leftInputProperties), "readLeft"); // Add reader for right hand side of join ReadDelimitedText readRight = add( new ReadDelimitedText(rightInputProperties), "readRight"); // Add join JoinSortedRows join = add( new JoinSortedRows(readLeft.getOutput(), readRight.getOutput(), keyNames, keyNames, joinMode), "join"); // Add writer for output of join add(new WriteDelimitedText(join.getOutput(), outputProperties), "write"); } }