7.7.3.1 Sample Code for Data Importer
Example code
public  class  DeliveryDataImport {      private  static  Logger logger = Logger.getLogger(DeliveryDataImport. class );          //Salesforce login-information     static  String endpoint = "SALESFORCE ENDPOINT" ; //example: https://na7.salesforce.com/services/Soap/u/28.0     static  String username = "USERNAME" ;     static  String password = "PASSWORD" ;     static  String token = "TOKEN" ;     static  String orgId = "ORGID" ;         //service URL      public  void  runUploadRequest() throws  ClientProtocolException, IOException{         //storing the request information to a Object witch is later converted to XML         JobConfig config = createJobConfig();                  try  {         JobStatus jobStatus = sendHttpRequest(config);                  jobStatus = waitForJobToFinish(jobStatus);          JobResults jobResults = getResults(jobStatus);         //only faulty lines produce a result         if (jobResults.getResults() != null  && !jobResults.getResults().isEmpty()){             for (JobResult jobResult : jobResults.getResults()){                 if  ( "GenericDataPushImportLineResult" .equals(jobResult.getDataType())) {                     GenericDataPushImportLineResult lineResult = (GenericDataPushImportLineResult) jobResult.getData();                     if (!lineResult.isSuccess()){                         logger.error( "Error at line "  + lineResult.getLineNr() + ": "  + lineResult.getMessage());                     }                 } else  if  ( "ForceBulkJobInfoResult" .equals(jobResult.getDataType())) {                     ForceBulkJobInfoResult forceBulkJobInfoResult = (ForceBulkJobInfoResult) jobResult.getData();                     logger.debug( "Bulk job id: "  + forceBulkJobInfoResult.getId());                 } else  {                     logger.warn( "unknown datatype" );                 }             }         }                  } catch  (ClientProtocolException e) {             e.printStackTrace();         } catch  (IOException e) {             e.printStackTrace();         }     }          private  JobStatus sendHttpRequest(JobConfig config) throws  ClientProtocolException, IOException {         MultipartEntityBuilder multipartEntityBuilder = MultipartEntityBuilder.create();         multipartEntityBuilder.setContentType(ContentType.create( "multipart/mixed" ));                  //Converting request information to XML an add it as first part to the http request         multipartEntityBuilder.addTextBody( "JobConfig" , Utilities.objectToXML(config), ContentType.APPLICATION_XML);                  //adding the data to the http request         multipartEntityBuilder.addBinaryBody( "data.csv" , getDataFile());                  HttpPost httpPost = new  HttpPost(serviceURL + "startJob" );         httpPost.setEntity(multipartEntityBuilder.build());                  CloseableHttpClient httpClient = HttpClientBuilder.create().build();         //run the request         HttpResponse httpResponse = httpClient.execute(httpPost);         logger.debug(httpResponse);         logger.debug(httpResponse.getStatusLine());         String response = EntityUtils.toString(httpResponse.getEntity());         logger.debug(response);          //parsing the JobStatus         JobStatus jobStatus = (JobStatus) Utilities.xmlToObject(response, JobStatus. class .getCanonicalName());         logger.debug(jobStatus.getJobId());         logger.debug(jobStatus.getStatus());          return  jobStatus;     }      private  File getDataFile(){         //generating a demo data file         File tempFile = null ;         try  {             tempFile = File.createTempFile( "jobdata" , ".csv" );             tempFile.deleteOnExit();             CSVWriter csvWriter = new  CSVWriter( new  FileWriter(tempFile));             String[] line = new  String[]{ "Day" , "Type" , "UniqueKey" , "ViewedImpressions" };             csvWriter.writeNext(line);             line = new  String[]{ "2016-06-01" , "Monthly" , "2016-06-01" , "200" };             csvWriter.writeNext(line);             line = new  String[]{ "2016-06-01" , "Monthly" , "" , "200" }; //this should generate an error             csvWriter.writeNext(line);             csvWriter.close();         } catch  (IOException e) {             e.printStackTrace();         }         return  tempFile;     }          private  JobStatus waitForJobToFinish(JobStatus jobStatus) throws  ClientProtocolException, IOException {         JobIdentifier identifier = new  JobIdentifier();         identifier.setJobId(jobStatus.getJobId());         identifier.setOrgId(jobStatus.getOrgId());                  CloseableHttpClient httpClient = HttpClientBuilder.create().build();         //wait for job to finish         while  (jobStatus.getStatus() == 0  || jobStatus.getStatus() == 1 ) {             try  {                 Thread.sleep(1000l);             } catch  (InterruptedException e) {                 e.printStackTrace();             }             HttpPost httpPostGetStatus = new  HttpPost(serviceURL + "getJobStatus" );             ByteArrayEntity byteArrayEntity = new  ByteArrayEntity(Utilities.objectToXML(identifier).getBytes());             byteArrayEntity.setContentType(ContentType.APPLICATION_XML.getMimeType());             httpPostGetStatus.setEntity(byteArrayEntity);             HttpResponse httpResponse = httpClient.execute(httpPostGetStatus);                          String response = EntityUtils.toString(httpResponse.getEntity());             logger.debug(response);             jobStatus = (JobStatus) Utilities.xmlToObject(response, JobStatus. class .getCanonicalName());             logger.debug(jobStatus.getMessage());         }         return  jobStatus;     }            private  JobResults getResults(JobStatus jobStatus) throws  ClientProtocolException, IOException{         JobIdentifier identifier = new  JobIdentifier();         identifier.setJobId(jobStatus.getJobId());         identifier.setOrgId(jobStatus.getOrgId());                  CloseableHttpClient httpClient = HttpClientBuilder.create().build();         HttpPost httpPostGetStatus = new  HttpPost(serviceURL + "getJobResults" );         ByteArrayEntity byteArrayEntity = new  ByteArrayEntity(Utilities.objectToXML(identifier).getBytes());         byteArrayEntity.setContentType(ContentType.APPLICATION_XML.getMimeType());         httpPostGetStatus.setEntity(byteArrayEntity);         HttpResponse httpResponse = httpClient.execute(httpPostGetStatus);                   String response = EntityUtils.toString(httpResponse.getEntity());         logger.debug(response);         return  (JobResults) Utilities.xmlToObject(response, JobResults. class .getCanonicalName());     }      private  JobConfig createJobConfig(){         JobConfig config = new  JobConfig();         config.setEndpoint(endpoint);         config.setPassword(password);         config.setUsername(username);         config.setToken(token);         config.setOrgId(orgId);         config.setDataType( "csv" );         config.setOperation( "GenericDataPushImport" );         config.setObjectName( "ADvendio__DeliveryDataImport__c" );         return  config;     }  } |
Related articles
Filter by label
There are no items with the selected labels at this time.