Scala SDK Samples - Bulk Read Operations
Create a Bulk Read Job
Get Bulk Read Job Details
package com.zoho.crm.sample.bulkread
import java.io.File
import java.io.FileOutputStream
import java.io.InputStream
import java.io.OutputStream
import java.lang.reflect.Field
import java.util
import com.zoho.crm.api.bulkread.APIException
import com.zoho.crm.api.bulkread.ActionHandler
import com.zoho.crm.api.bulkread.ActionResponse
import com.zoho.crm.api.bulkread.ActionWrapper
import com.zoho.crm.api.bulkread.BulkReadOperations
import com.zoho.crm.api.bulkread.CallBack
import com.zoho.crm.api.bulkread.Criteria
import com.zoho.crm.api.bulkread.FileBodyWrapper
import com.zoho.crm.api.bulkread.JobDetail
import com.zoho.crm.api.bulkread.Query
import com.zoho.crm.api.bulkread.RequestWrapper
import com.zoho.crm.api.bulkread.ResponseHandler
import com.zoho.crm.api.bulkread.ResponseWrapper
import com.zoho.crm.api.bulkread.Result
import com.zoho.crm.api.bulkread.SuccessResponse
import com.zoho.crm.api.util.Choice
import com.zoho.crm.api.util.APIResponse
import com.zoho.crm.api.util.Model
import com.zoho.crm.api.util.StreamWrapper
import scala.collection.mutable.ArrayBuffer
object Bulkread {
/**
* Get BulkRead Job Details
* This method is used to get the details of a bulk read job performed previously.
*
* @param jobId The unique ID of the bulk read job.
* @throws Exception
*/
@throws[Exception]
def getBulkReadJobDetails(jobId: Long): Unit = { //Long jobId = 34770615177002l
val bulkReadOperations = new BulkReadOperations
//Call getBulkReadJobDetails method that takes jobId as parameter
val responseOption = bulkReadOperations.getBulkReadJobDetails(jobId)
if (responseOption.isDefined) {
var response = responseOption.get
println("Status Code: " + response.getStatusCode)
if (util.Arrays.asList(204, 304).contains(response.getStatusCode)) {
println(if (response.getStatusCode == 204) "No Content"
else "Not Modified")
return
}
if (response.isExpected) {
val responseHandler = response.getObject
if (responseHandler.isInstanceOf[ResponseWrapper]) { //Get the received ResponseWrapper instance
val responseWrapper = responseHandler.asInstanceOf[ResponseWrapper]
//Get the list of obtained jobDetail instances
val jobDetails = responseWrapper.getData
for (jobDetail {
println(entry._1 + ": " + entry._2)
})
println("Message: " + exception.getMessage.getValue)
}
}
else {
val responseObject = response.getModel
val clas = responseObject.getClass
val fields = clas.getDeclaredFields
for (field
Download Result
package com.zoho.crm.sample.bulkread
import java.io.File
import java.io.FileOutputStream
import java.io.InputStream
import java.io.OutputStream
import java.lang.reflect.Field
import java.util
import com.zoho.crm.api.bulkread.APIException
import com.zoho.crm.api.bulkread.ActionHandler
import com.zoho.crm.api.bulkread.ActionResponse
import com.zoho.crm.api.bulkread.ActionWrapper
import com.zoho.crm.api.bulkread.BulkReadOperations
import com.zoho.crm.api.bulkread.CallBack
import com.zoho.crm.api.bulkread.Criteria
import com.zoho.crm.api.bulkread.FileBodyWrapper
import com.zoho.crm.api.bulkread.JobDetail
import com.zoho.crm.api.bulkread.Query
import com.zoho.crm.api.bulkread.RequestWrapper
import com.zoho.crm.api.bulkread.ResponseHandler
import com.zoho.crm.api.bulkread.ResponseWrapper
import com.zoho.crm.api.bulkread.Result
import com.zoho.crm.api.bulkread.SuccessResponse
import com.zoho.crm.api.util.Choice
import com.zoho.crm.api.util.APIResponse
import com.zoho.crm.api.util.Model
import com.zoho.crm.api.util.StreamWrapper
import scala.collection.mutable.ArrayBuffer
object Bulkread {
/**
* Download Result
* This method is used to download the bulk read job as a CSV or an ICS file (only for the Events module).
*
* @param jobId The unique ID of the bulk read job.
* @param destinationFolder The absolute path where downloaded file has to be stored.
* @throws Exception
*/
@throws[Exception]
def downloadResult(jobId: Long, destinationFolder: String): Unit = { //String destinationFolder = "/Users/user_name/Documents"
val bulkReadOperations = new BulkReadOperations
//Call downloadResult method that takes jobId as parameters
val responseOption = bulkReadOperations.downloadResult(jobId)
if (responseOption.isDefined) {
var response = responseOption.get
println("Status Code: " + response.getStatusCode)
if (util.Arrays.asList(204, 304).contains(response.getStatusCode)) {
println(if (response.getStatusCode == 204) "No Content"
else "Not Modified")
return
}
if (response.isExpected) {
val responseHandler = response.getObject
if (responseHandler.isInstanceOf[FileBodyWrapper]) { //Get the received FileBodyWrapper instance
val fileBodyWrapper = responseHandler.asInstanceOf[FileBodyWrapper]
//Get StreamWrapper instance from the returned FileBodyWrapper instance
val streamWrapper = fileBodyWrapper.getFile.get
//Create a file instance with the absolute_file_path
val file = new File(destinationFolder + File.separatorChar + streamWrapper.getName.get)
//Get InputStream from the response
val is = streamWrapper.getStream.get
//Create an OutputStream for the destination file
val os = new FileOutputStream(file)
val buffer = new Array[Byte](1024)
var bytesRead = 0
//read the InputStream till the end
while ( {
(bytesRead = is.read(buffer)) != -1
}) { //write data to OutputStream
os.write(buffer, 0, bytesRead)
}
//Close the InputStream
is.close()
//Flush and close the OutputStream
os.flush()
os.close()
}
else if (responseHandler.isInstanceOf[APIException]) {
val exception = responseHandler.asInstanceOf[APIException]
println("Status: " + exception.getStatus.getValue)
println("Code: " + exception.getCode.getValue)
println("Details: ")
exception.getDetails.foreach(entry=>{
println(entry._1 + ": " + entry._2)
})
println("Message: " + exception.getMessage.getValue)
}
}
else {
val responseObject = response.getModel
val clas = responseObject.getClass
val fields = clas.getDeclaredFields
for (field