Package co.nubetech.hiho.mapreduce.sf

Source Code of co.nubetech.hiho.mapreduce.sf.ExportSalesforceReducer

package co.nubetech.hiho.mapreduce.sf;

import java.io.IOException;
import java.util.Iterator;

import org.apache.hadoop.io.Text;
import org.apache.hadoop.mapreduce.Reducer;
import org.apache.log4j.Logger;

import co.nubetech.hiho.common.HIHOConf;
import co.nubetech.hiho.common.sf.SFHandler;

import com.sforce.async.BatchResult;
import com.sforce.async.BulkConnection;

public class ExportSalesforceReducer extends Reducer<Text, Text, Text, Text> {

  final static Logger logger = Logger
      .getLogger(co.nubetech.hiho.mapreduce.sf.ExportSalesforceReducer.class);
  private static SFHandler sfHandler;
  private BulkConnection conn;
  private Text batchResultText;

  /**
   * @return the sfHandler
   */
  public static SFHandler getSfHandler() {
    return sfHandler;
  }

  /**
   * @param sfHandler the sfHandler to set
   */
  public static void setSfHandler(SFHandler sfHandler) {
    ExportSalesforceReducer.sfHandler = sfHandler;
  }
 
  public void setConnection(BulkConnection con) throws IOException {
    conn = con;
  }

  public BulkConnection getConnection() {
    return conn;
  }

  @Override
  protected void setup(Reducer.Context context) throws IOException,
      InterruptedException {
    try {
      String username = context.getConfiguration().get(
          HIHOConf.SALESFORCE_USERNAME);
      String password = context.getConfiguration().get(
          HIHOConf.SALESFORCE_PASSWORD);
      String sfObject = context.getConfiguration().get(
          HIHOConf.SALESFORCE_SOBJECTYPE);
      logger.debug("Salesforce connection values are " + username + "/"
          + password + " and sObject is " + sfObject);
      conn = sfHandler.getBulkConnection(username, password);
      batchResultText = new Text();
      sfHandler = new SFHandler();
    } catch (Exception e) {
      e.printStackTrace();
      throw new IOException(e);
    }
  }
 
 
  @Override
  public void reduce(Text jobId, Iterable<Text> batches, Context context)
      throws IOException, InterruptedException {
       try{  
      conn=getConnection();
      Iterator<Text> batchIterator = batches.iterator();
      String jobIdString = jobId.toString();
      jobId.set(jobIdString);
      while (batchIterator.hasNext()) {
        BatchResult result = conn.getBatchResult(jobIdString, batchIterator.next().toString());
        batchResultText.set(result.toString());
        logger.debug("Job Id " + jobIdString + " and Batch " + result);
        context.write(jobId, batchResultText);
      }     
       }
       catch(Exception e) {
         e.printStackTrace();
         throw new IOException(e);
       }   
  }


  @Override
  protected void cleanup(Reducer.Context context) throws IOException,
      InterruptedException {
    try {
      if (conn != null) {
        //sfHandler.closeJob(conn, job.getId());
        conn = null;
      }
    } catch (Exception s) {
      s.printStackTrace();
    }
  }

}
TOP

Related Classes of co.nubetech.hiho.mapreduce.sf.ExportSalesforceReducer

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.