Scala SDK Samples - Related Records Operations
package com.zoho.crm.sample.relatedrecords
import java.io.File
import java.io.FileOutputStream
import java.io.InputStream
import java.io.OutputStream
import java.time.OffsetDateTime
import java.time.ZoneOffset
import java.util
import com.zoho.crm.api.HeaderMap
import com.zoho.crm.api.ParameterMap
import com.zoho.crm.api.attachments.Attachment
import com.zoho.crm.api.layouts.Layout
import com.zoho.crm.api.record.{Comment, Consent, FileDetails, InventoryLineItems, LineTax, Participants, PricingDetails, Record, RecurringActivity, RemindAt}
import com.zoho.crm.api.relatedrecords.FileBodyWrapper
import com.zoho.crm.api.relatedrecords.APIException
import com.zoho.crm.api.relatedrecords.ActionHandler
import com.zoho.crm.api.relatedrecords.ActionResponse
import com.zoho.crm.api.relatedrecords.ActionWrapper
import com.zoho.crm.api.relatedrecords.BodyWrapper
import com.zoho.crm.api.relatedrecords.RelatedRecordsOperations
import com.zoho.crm.api.relatedrecords.RelatedRecordsOperations.DelinkRecordsParam
import com.zoho.crm.api.relatedrecords.RelatedRecordsOperations.GetRelatedRecordHeader
import com.zoho.crm.api.relatedrecords.RelatedRecordsOperations.GetRelatedRecordsHeader
import com.zoho.crm.api.relatedrecords.RelatedRecordsOperations.GetRelatedRecordsParam
import com.zoho.crm.api.relatedrecords.ResponseHandler
import com.zoho.crm.api.relatedrecords.ResponseWrapper
import com.zoho.crm.api.relatedrecords.SuccessResponse
import com.zoho.crm.api.tags.Tag
import com.zoho.crm.api.users.User
import com.zoho.crm.api.util.APIResponse
import com.zoho.crm.api.util.Choice
import com.zoho.crm.api.util.Model
import com.zoho.crm.api.util.StreamWrapper
import scala.collection.mutable.ArrayBuffer
object Relatedrecord {
/**
* Get Related Records
* This method is used to get the related list records and print the response.
*
* @param moduleAPIName - The API Name of the module to get related records.
* @param recordId - The ID of the record to be obtained.
* @param relatedListAPIName - The API name of the related list. To get the API name of the related list.
* @throws Exception
*/
@throws[Exception]
def getRelatedRecords(relatedListAPIName: String, recordId: Long, moduleAPIName: String): Unit = { //example
//Get instance of RelatedRecordsOperations Class that takes moduleAPIName, recordId and relatedListAPIName as parameter
val relatedRecordsOperations = new RelatedRecordsOperations(relatedListAPIName, recordId, moduleAPIName)
//Get instance of ParameterMap Class
val paramInstance = new ParameterMap
// paramInstance.add(new GetRelatedRecordsParam().page, 1)
// paramInstance.add(new GetRelatedRecordsParam().perPage, 2)
//Get instance of HeaderMap Class
val headerInstance = new HeaderMap
// val startdatetime = OffsetDateTime.of(2019, 6, 1, 10, 0, 1, 0, ZoneOffset.of("+05:30"))
// headerInstance.add(new GetRelatedRecordsHeader().IfModifiedSince, startdatetime)
//Call getRelatedRecords method that takes paramInstance, headerInstance as parameter
val responseOption = relatedRecordsOperations.getRelatedRecords(Option(paramInstance),Option( headerInstance))
if (responseOption.isDefined) { //check response
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
}
//Check if expected response is received
if (response.isExpected) { //Get object from response
val responseHandler = response.getObject
if (responseHandler.isInstanceOf[ResponseWrapper]) { //Get the received ResponseWrapper instance
val responseWrapper = responseHandler.asInstanceOf[ResponseWrapper]
//Get the list of obtained Record instances
val records = responseWrapper.getData
for (record 0) {
for (tag {
val keyName = entry._1
var value = entry._2
if (value.isInstanceOf[Option[_]]) value = value.asInstanceOf[Option[_]].getOrElse(null)
if (value.isInstanceOf[ArrayBuffer[Any]]) {
val dataList = value.asInstanceOf[ArrayBuffer[Any]]
if (dataList.size > 0) if (dataList(0).isInstanceOf[FileDetails]) {
@SuppressWarnings(Array("unchecked")) val fileDetails = value.asInstanceOf[ArrayBuffer[FileDetails]]
for (fileDetail {
println(entry._1 + ": " + entry._2)
})
}
}
else if (dataList(0).isInstanceOf[LineTax]) {
@SuppressWarnings(Array("unchecked")) val lineTaxes = dataList.asInstanceOf[ ArrayBuffer[LineTax]]
for (lineTax {
println(entry._1 + ": " + entry._2)
})
//Get the Message
println("Message: " + exception.getMessage.getValue)
}
}
}
else { //If response is not as expected
//Get model object from response
val responseObject = response.getModel
//Get the response object's class
val clas = responseObject.getClass
//Get all declared fields of the response class
val fields = clas.getDeclaredFields
for (field
package com.zoho.crm.sample.relatedrecords
import java.io.File
import java.io.FileOutputStream
import java.io.InputStream
import java.io.OutputStream
import java.time.OffsetDateTime
import java.time.ZoneOffset
import java.util
import com.zoho.crm.api.HeaderMap
import com.zoho.crm.api.ParameterMap
import com.zoho.crm.api.attachments.Attachment
import com.zoho.crm.api.layouts.Layout
import com.zoho.crm.api.record.{Comment, Consent, FileDetails, InventoryLineItems, LineTax, Participants, PricingDetails, Record, RecurringActivity, RemindAt}
import com.zoho.crm.api.relatedrecords.FileBodyWrapper
import com.zoho.crm.api.relatedrecords.APIException
import com.zoho.crm.api.relatedrecords.ActionHandler
import com.zoho.crm.api.relatedrecords.ActionResponse
import com.zoho.crm.api.relatedrecords.ActionWrapper
import com.zoho.crm.api.relatedrecords.BodyWrapper
import com.zoho.crm.api.relatedrecords.RelatedRecordsOperations
import com.zoho.crm.api.relatedrecords.RelatedRecordsOperations.DelinkRecordsParam
import com.zoho.crm.api.relatedrecords.RelatedRecordsOperations.GetRelatedRecordHeader
import com.zoho.crm.api.relatedrecords.RelatedRecordsOperations.GetRelatedRecordsHeader
import com.zoho.crm.api.relatedrecords.RelatedRecordsOperations.GetRelatedRecordsParam
import com.zoho.crm.api.relatedrecords.ResponseHandler
import com.zoho.crm.api.relatedrecords.ResponseWrapper
import com.zoho.crm.api.relatedrecords.SuccessResponse
import com.zoho.crm.api.tags.Tag
import com.zoho.crm.api.users.User
import com.zoho.crm.api.util.APIResponse
import com.zoho.crm.api.util.Choice
import com.zoho.crm.api.util.Model
import com.zoho.crm.api.util.StreamWrapper
import scala.collection.mutable.ArrayBuffer
object Relatedrecord {
@throws[Exception]
def updateRelatedRecords(moduleAPIName: String, recordId: Long, relatedListAPIName: String): Unit = { //API Name of the module
val relatedRecordsOperations = new RelatedRecordsOperations(relatedListAPIName, recordId, moduleAPIName)
//Get instance of BodyWrapper Class that will contain the request body
val request = new BodyWrapper
//List of Record instances
val records = new ArrayBuffer[Record]
//Get instance of Record Class
val record1 = new Record
/*
* Call addKeyValue method that takes two arguments
* 1 -> A string that is the Field's API Name
* 2 -> Value
*/ record1.addKeyValue("id", 3524033000006156003l)
record1.addKeyValue("Note_Content", "asd")
//Add Record instance to the list
records.addOne(record1)
val record2 = new Record
record2.addKeyValue("id", 34770610919001l)
record2.addKeyValue("Note_Content", "asd")
records.addOne(record2)
//Set the list to Records in BodyWrapper instance
request.setData(records)
//Call updateRelatedRecords method that takes BodyWrapper instance as parameter.
val responseOption = relatedRecordsOperations.updateRelatedRecords(request)
if (responseOption.isDefined) {
var response = responseOption.get
println("Status Code: " + response.getStatusCode)
if (response.isExpected) {
val actionHandler = response.getObject
if (actionHandler.isInstanceOf[ActionWrapper]) { //Get the received ActionWrapper instance
val actionWrapper = actionHandler.asInstanceOf[ActionWrapper]
//Get the list of obtained ActionResponse instances
val actionResponses = actionWrapper.getData
for (actionResponse {
println(entry._1 + ": " + entry._2)
})
println("Message: " + successResponse.getMessage.getValue)
}
else if (actionResponse.isInstanceOf[APIException]) {
val exception = actionResponse.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 if (actionHandler.isInstanceOf[APIException]) {
val exception = actionHandler.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
package com.zoho.crm.sample.relatedrecords
import java.io.File
import java.io.FileOutputStream
import java.io.InputStream
import java.io.OutputStream
import java.time.OffsetDateTime
import java.time.ZoneOffset
import java.util
import com.zoho.crm.api.HeaderMap
import com.zoho.crm.api.ParameterMap
import com.zoho.crm.api.attachments.Attachment
import com.zoho.crm.api.layouts.Layout
import com.zoho.crm.api.record.{Comment, Consent, FileDetails, InventoryLineItems, LineTax, Participants, PricingDetails, Record, RecurringActivity, RemindAt}
import com.zoho.crm.api.relatedrecords.FileBodyWrapper
import com.zoho.crm.api.relatedrecords.APIException
import com.zoho.crm.api.relatedrecords.ActionHandler
import com.zoho.crm.api.relatedrecords.ActionResponse
import com.zoho.crm.api.relatedrecords.ActionWrapper
import com.zoho.crm.api.relatedrecords.BodyWrapper
import com.zoho.crm.api.relatedrecords.RelatedRecordsOperations
import com.zoho.crm.api.relatedrecords.RelatedRecordsOperations.DelinkRecordsParam
import com.zoho.crm.api.relatedrecords.RelatedRecordsOperations.GetRelatedRecordHeader
import com.zoho.crm.api.relatedrecords.RelatedRecordsOperations.GetRelatedRecordsHeader
import com.zoho.crm.api.relatedrecords.RelatedRecordsOperations.GetRelatedRecordsParam
import com.zoho.crm.api.relatedrecords.ResponseHandler
import com.zoho.crm.api.relatedrecords.ResponseWrapper
import com.zoho.crm.api.relatedrecords.SuccessResponse
import com.zoho.crm.api.tags.Tag
import com.zoho.crm.api.users.User
import com.zoho.crm.api.util.APIResponse
import com.zoho.crm.api.util.Choice
import com.zoho.crm.api.util.Model
import com.zoho.crm.api.util.StreamWrapper
import scala.collection.mutable.ArrayBuffer
object Relatedrecord {
/**
* Delink Records
* This method is used to delete the association between modules and print the response.
*
* @param moduleAPIName - The API Name of the module to delink related records.
* @param recordId - The ID of the record
* @param relatedListAPIName - The API name of the related list. To get the API name of the related list.
* @param relatedListIds - The List of related record IDs.
* @throws Exception
*/
@throws[Exception]
def delinkRecords(moduleAPIName: String, recordId: Long, relatedListAPIName: String, relatedListIds: ArrayBuffer[Long]): Unit = { //List relatedListIds = new ArrayList(Arrays.asList(3477061000005919001l, 3477061000005917011l))
val relatedRecordsOperations = new RelatedRecordsOperations(relatedListAPIName, recordId, moduleAPIName)
val paramInstance = new ParameterMap
for (relatedListId {
println(entry._1 + ": " + entry._2)
})
println("Message: " + successResponse.getMessage.getValue)
}
else if (actionResponse.isInstanceOf[APIException]) {
val exception = actionResponse.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 if (actionHandler.isInstanceOf[APIException]) {
val exception = actionHandler.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
package com.zoho.crm.sample.relatedrecords
import java.io.File
import java.io.FileOutputStream
import java.io.InputStream
import java.io.OutputStream
import java.time.OffsetDateTime
import java.time.ZoneOffset
import java.util
import com.zoho.crm.api.HeaderMap
import com.zoho.crm.api.ParameterMap
import com.zoho.crm.api.attachments.Attachment
import com.zoho.crm.api.layouts.Layout
import com.zoho.crm.api.record.{Comment, Consent, FileDetails, InventoryLineItems, LineTax, Participants, PricingDetails, Record, RecurringActivity, RemindAt}
import com.zoho.crm.api.relatedrecords.FileBodyWrapper
import com.zoho.crm.api.relatedrecords.APIException
import com.zoho.crm.api.relatedrecords.ActionHandler
import com.zoho.crm.api.relatedrecords.ActionResponse
import com.zoho.crm.api.relatedrecords.ActionWrapper
import com.zoho.crm.api.relatedrecords.BodyWrapper
import com.zoho.crm.api.relatedrecords.RelatedRecordsOperations
import com.zoho.crm.api.relatedrecords.RelatedRecordsOperations.DelinkRecordsParam
import com.zoho.crm.api.relatedrecords.RelatedRecordsOperations.GetRelatedRecordHeader
import com.zoho.crm.api.relatedrecords.RelatedRecordsOperations.GetRelatedRecordsHeader
import com.zoho.crm.api.relatedrecords.RelatedRecordsOperations.GetRelatedRecordsParam
import com.zoho.crm.api.relatedrecords.ResponseHandler
import com.zoho.crm.api.relatedrecords.ResponseWrapper
import com.zoho.crm.api.relatedrecords.SuccessResponse
import com.zoho.crm.api.tags.Tag
import com.zoho.crm.api.users.User
import com.zoho.crm.api.util.APIResponse
import com.zoho.crm.api.util.Choice
import com.zoho.crm.api.util.Model
import com.zoho.crm.api.util.StreamWrapper
import scala.collection.mutable.ArrayBuffer
object Relatedrecord {
/**
* Get Related Record
* This method is used to get the single related list record and print the response.
*
* @param moduleAPIName - The API Name of the module to get related record.
* @param recordId - The ID of the record to be get Related List.
* @param relatedListAPIName - The API name of the related list. To get the API name of the related list.
* @param relatedListId - The ID of the related record.
* @param destinationFolder - The absolute path of the destination folder to store the file.
* @throws Exception
*/
@throws[Exception]
def getRelatedRecord(moduleAPIName: String, recordId: Long, relatedListAPIName: String, relatedListId: Long, destinationFolder: String): Unit = { //Long relatedListId = 3477061000004994115l
val relatedRecordsOperations = new RelatedRecordsOperations(relatedListAPIName, recordId, moduleAPIName)
val headerInstance = new HeaderMap
val startdatetime = OffsetDateTime.of(2019, 6, 1, 10, 0, 1, 0, ZoneOffset.of("+05:30"))
headerInstance.add(new GetRelatedRecordHeader().IfModifiedSince, startdatetime)
//Call getRelatedRecord method that takes headerInstance and relatedRecordId as parameter
val responseOption = relatedRecordsOperations.getRelatedRecord(relatedListId,Option(headerInstance ))
if (responseOption.isDefined) { //check response
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
}
//Check if expected response is received
if (response.isExpected) { //Get object from response
val responseHandler = response.getObject
if (responseHandler.isInstanceOf[ResponseWrapper]) { //Get the received ResponseWrapper instance
val responseWrapper = responseHandler.asInstanceOf[ResponseWrapper]
//Get the list of obtained Record instances
val records = responseWrapper.getData
for (record 0) {
for (tag {
val keyName = entry._1
var value = entry._2
if (value.isInstanceOf[Option[_]]) value = value.asInstanceOf[Option[_]].getOrElse(null)
if (value.isInstanceOf[ArrayBuffer[Any]]) {
val dataList = value.asInstanceOf[ArrayBuffer[Any]]
if (dataList.size > 0) if (dataList(0).isInstanceOf[FileDetails]) {
@SuppressWarnings(Array("unchecked")) val fileDetails = value.asInstanceOf[ArrayBuffer[FileDetails]]
for (fileDetail {
println(entry._1 + ": " + entry._2)
})
}
}
else if (dataList(0).isInstanceOf[LineTax]) {
@SuppressWarnings(Array("unchecked")) val lineTaxes = dataList.asInstanceOf[ ArrayBuffer[LineTax]]
for (lineTax {
println(entry._1 + ": " + entry._2)
})
//Get the Message
println("Message: " + exception.getMessage.getValue)
}
}
}
else { //If response is not as expected
//Get model object from response
val responseObject = response.getModel
//Get the response object's class
val clas = responseObject.getClass
//Get all declared fields of the response class
val fields = clas.getDeclaredFields
for (field
package com.zoho.crm.sample.relatedrecords
import java.io.File
import java.io.FileOutputStream
import java.io.InputStream
import java.io.OutputStream
import java.time.OffsetDateTime
import java.time.ZoneOffset
import java.util
import com.zoho.crm.api.HeaderMap
import com.zoho.crm.api.ParameterMap
import com.zoho.crm.api.attachments.Attachment
import com.zoho.crm.api.layouts.Layout
import com.zoho.crm.api.record.{Comment, Consent, FileDetails, InventoryLineItems, LineTax, Participants, PricingDetails, Record, RecurringActivity, RemindAt}
import com.zoho.crm.api.relatedrecords.FileBodyWrapper
import com.zoho.crm.api.relatedrecords.APIException
import com.zoho.crm.api.relatedrecords.ActionHandler
import com.zoho.crm.api.relatedrecords.ActionResponse
import com.zoho.crm.api.relatedrecords.ActionWrapper
import com.zoho.crm.api.relatedrecords.BodyWrapper
import com.zoho.crm.api.relatedrecords.RelatedRecordsOperations
import com.zoho.crm.api.relatedrecords.RelatedRecordsOperations.DelinkRecordsParam
import com.zoho.crm.api.relatedrecords.RelatedRecordsOperations.GetRelatedRecordHeader
import com.zoho.crm.api.relatedrecords.RelatedRecordsOperations.GetRelatedRecordsHeader
import com.zoho.crm.api.relatedrecords.RelatedRecordsOperations.GetRelatedRecordsParam
import com.zoho.crm.api.relatedrecords.ResponseHandler
import com.zoho.crm.api.relatedrecords.ResponseWrapper
import com.zoho.crm.api.relatedrecords.SuccessResponse
import com.zoho.crm.api.tags.Tag
import com.zoho.crm.api.users.User
import com.zoho.crm.api.util.APIResponse
import com.zoho.crm.api.util.Choice
import com.zoho.crm.api.util.Model
import com.zoho.crm.api.util.StreamWrapper
import scala.collection.mutable.ArrayBuffer
object Relatedrecord {
/**
* Delink Record
* This method is used to delete the association between modules and print the response.
*
* @param moduleAPIName - The API Name of the module to delink related record.
* @param recordId - The ID of the record to be obtained.
* @param relatedListAPIName - The API name of the related list. To get the API name of the related list.
* @param relatedListId - The ID of the related record.
* @throws Exception
*/
@throws[Exception]
def delinkRecord(moduleAPIName: String, recordId: Long, relatedListAPIName: String, relatedListId: Long): Unit = {
val relatedRecordsOperations = new RelatedRecordsOperations(relatedListAPIName, recordId, moduleAPIName)
//Call delinkRecord method that takes relatedListId as parameter.
val responseOption = relatedRecordsOperations.delinkRecord(relatedListId)
if (responseOption.isDefined) {
var response= responseOption.get
println("Status Code: " + response.getStatusCode)
if (response.isExpected) {
val actionHandler = response.getObject
if (actionHandler.isInstanceOf[ActionWrapper]) {
val actionWrapper = actionHandler.asInstanceOf[ActionWrapper]
val actionResponses = actionWrapper.getData
for (actionResponse {
println(entry._1 + ": " + entry._2)
})
println("Message: " + successResponse.getMessage.getValue)
}
else if (actionResponse.isInstanceOf[APIException]) {
val exception = actionResponse.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 if (actionHandler.isInstanceOf[APIException]) {
val exception = actionHandler.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