Scala SDK Samples - Fields Operations
Get Fields (Metadata)
Get Field (Metadata)
package com.zoho.crm.sample.fields
import java.util
import com.zoho.crm.api.ParameterMap
import com.zoho.crm.api.fields.APIException
import com.zoho.crm.api.fields.AssociationDetails
import com.zoho.crm.api.fields.AutoNumber
import com.zoho.crm.api.fields.Crypt
import com.zoho.crm.api.fields.Currency
import com.zoho.crm.api.fields.Field
import com.zoho.crm.api.fields.FieldsOperations
import com.zoho.crm.api.fields.FieldsOperations.GetFieldsParam
import com.zoho.crm.api.fields.Formula
import com.zoho.crm.api.fields.LookupField
import com.zoho.crm.api.fields.Module
import com.zoho.crm.api.fields.MultiSelectLookup
import com.zoho.crm.api.fields.PickListValue
import com.zoho.crm.api.fields.ResponseHandler
import com.zoho.crm.api.fields.ResponseWrapper
import com.zoho.crm.api.fields.ToolTip
import com.zoho.crm.api.fields.Unique
import com.zoho.crm.api.fields.ViewType
import com.zoho.crm.api.layouts.Layout
import com.zoho.crm.api.util.APIResponse
import com.zoho.crm.api.util.Model
object Fields {
/**
* Get Field
* This method is used to get metadata about a single field of a module with fieldID and print the response.
*
* @param moduleAPIName The API Name of the field's module
* @param fieldId The ID of the field to be obtained
* @throws Exception
*/
@throws[Exception]
def getField(moduleAPIName: String, fieldId: Long): Unit = { //example,
//Long fieldId = 525505067912l
val fieldOperations = new FieldsOperations(Option(moduleAPIName))
//Call getField method which takes fieldId as parameter
val responseOption = fieldOperations.getField(fieldId)
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]) {
val responseWrapper = responseHandler.asInstanceOf[ResponseWrapper]
val fields = responseWrapper.getFields
for (field <- fields) {
println("Field SystemMandatory: " + field.getSystemMandatory.toString)
println("Field Webhook: " + field.getWebhook.toString)
println("Field JsonType: " + field.getJsonType)
val cryptOption = field.getCrypt
if (cryptOption.isDefined) {
val crypt=cryptOption.get
println("Field Crypt Mode: " + crypt.getMode)
println("Field Crypt Column: " + crypt.getColumn)
println("Field Crypt Table: " + crypt.getTable)
println("Field Crypt Status: " + crypt.getStatus.toString)
}
println("Field FieldLabel: " + field.getFieldLabel)
val tooltipOption = field.getTooltip
if (tooltipOption.isDefined) {
val tooltip= tooltipOption.get
println("Field ToolTip Name: " + tooltip.getName)
println("Field ToolTip Value: " + tooltip.getValue)
}
println("Field CreatedSource: " + field.getCreatedSource)
println("Field FieldReadOnly: " + field.getFieldReadOnly.toString)
println("Field DisplayLabel: " + field.getDisplayLabel)
println("Field ReadOnly: " + field.getReadOnly.toString)
val associationDetailsOption = field.getAssociationDetails
if (associationDetailsOption.isDefined) {
val associationDetails = associationDetailsOption.get
val lookupFieldOption = associationDetails.getLookupField
if (lookupFieldOption.isDefined) {
val lookupField = lookupFieldOption.get
println("Field AssociationDetails LookupField ID: " + lookupField.getId)
println("Field AssociationDetails LookupField Name: " + lookupField.getName)
}
val relatedFieldOption= associationDetails.getRelatedField
if (relatedFieldOption.isDefined) {
val relatedField= relatedFieldOption.get
println("Field AssociationDetails RelatedField ID: " + relatedField.getId)
println("Field AssociationDetails RelatedField Name: " + relatedField.getName)
}
}
if (field.getQuickSequenceNumber != null) println("Field QuickSequenceNumber: " + field.getQuickSequenceNumber.toString)
println("Field BusinesscardSupported: " + field.getBusinesscardSupported.toString)
if (field.getMultiModuleLookup != null) {
field.getMultiModuleLookup.foreach(entry=>{
println(entry._1 + ": " + entry._2)
})
}
val currencyOption = field.getCurrency
if (currencyOption.isDefined) {
val currency = currencyOption.get
println("Field Currency RoundingOption: " + currency.getRoundingOption)
if (currency.getPrecision.isDefined) println("Field Currency Precision: " + currency.getPrecision.toString)
}
println("Field ID: " + field.getId.toString)
if (field.getCustomField.isDefined) println("Field CustomField: " + field.getCustomField.toString)
val lookupOption = field.getLookup
if (lookupOption.isDefined) {
val lookup= lookupOption.get
val layoutOption = lookup.getLayout
if (layoutOption.isDefined) {
val layout = layoutOption.get
println("Field ModuleLookup Layout ID: " + layout.getId.toString)
println("Field ModuleLookup Layout Name: " + layout.getName)
}
println("Field ModuleLookup DisplayLabel: " + lookup.getDisplayLabel)
println("Field ModuleLookup APIName: " + lookup.getAPIName)
println("Field ModuleLookup Module: " + lookup.getModule)
if (lookup.getId.isDefined) println("Field ModuleLookup ID: " + lookup.getId.toString)
}
if (field.getVisible.isDefined) println("Field Visible: " + field.getVisible.toString)
if (field.getLength.isDefined) println("Field Length: " + field.getLength.toString)
val viewTypeOption = field.getViewType
if (viewTypeOption.isDefined) {
val viewType = viewTypeOption.get
println("Field ViewType View: " + viewType.getView.toString)
println("Field ViewType Edit: " + viewType.getEdit.toString)
println("Field ViewType Create: " + viewType.getCreate.toString)
println("Field ViewType QuickCreate: " + viewType.getQuickCreate.toString)
}
val subformOption = field.getSubform
if (subformOption.isDefined) {
val subform = subformOption.get
val layoutOption = subform.getLayout
if (layoutOption.isDefined) {
val layout = layoutOption.get
println("Field Subform Layout ID: " + layout.getId.toString)
println("Field Subform Layout Name: " + layout.getName)
}
println("Field Subform DisplayLabel: " + subform.getDisplayLabel)
println("Field Subform APIName: " + subform.getAPIName)
println("Field Subform Module: " + subform.getModule)
if (subform.getId.isDefined) println("Field Subform ID: " + subform.getId.toString)
}
println("Field APIName: " + field.getAPIName.toString)
val uniqueOption = field.getUnique
if (uniqueOption.isDefined){
val unique = uniqueOption.get
println("Field Unique Casesensitive : " + unique.getCasesensitive)
}
if (field.getHistoryTracking.isDefined) println("Field HistoryTracking: " + field.getHistoryTracking.toString)
println("Field DataType: " + field.getDataType.toString)
val formulaOption = field.getFormula
if (formulaOption.isDefined) {
val formula = formulaOption.get
println("Field Formula ReturnType : " + formula.getReturnType)
if (formula.getExpression.isDefined) println("Field Formula Expression : " + formula.getExpression.toString)
}
if (field.getDecimalPlace.isDefined) println("Field DecimalPlace: " + field.getDecimalPlace.toString)
println("Field MassUpdate: " + field.getMassUpdate.toString)
if (field.getBlueprintSupported.isDefined) println("Field BlueprintSupported: " + field.getBlueprintSupported.toString)
val multiSelectLookupOption = field.getMultiselectlookup
if (multiSelectLookupOption.isDefined) {
var multiSelectLookup = multiSelectLookupOption.get
println("Field MultiSelectLookup DisplayLabel: " + multiSelectLookup.getDisplayLabel)
println("Field MultiSelectLookup LinkingModule: " + multiSelectLookup.getLinkingModule)
println("Field MultiSelectLookup LookupApiname: " + multiSelectLookup.getLookupApiname)
println("Field MultiSelectLookup APIName: " + multiSelectLookup.getAPIName)
println("Field MultiSelectLookup ConnectedlookupApiname: " + multiSelectLookup.getConnectedlookupApiname)
println("Field MultiSelectLookup ID: " + multiSelectLookup.getId)
}
val pickListValues = field.getPickListValues
if (pickListValues != null) {
for (pickListValue <- pickListValues) {
println("Field PickListValue DisplayValue: " + pickListValue.getDisplayValue)
if (pickListValue.getSequenceNumber.isDefined) println(" Field PickListValue SequenceNumber: " + pickListValue.getSequenceNumber.toString)
if (pickListValue.getExpectedDataType.isDefined) println("Field PickListValue ExpectedDataType: " + pickListValue.getExpectedDataType)
println("Field PickListValue ActualValue: " + pickListValue.getActualValue)
if (pickListValue.getMaps != null) {
for (map <- pickListValue.getMaps) {
println(map)
}
}
println("Field PickListValue SysRefName: " + pickListValue.getSysRefName)
println("Field PickListValue Type: " + pickListValue.getType)
}
}
val autoNumberOption = field.getAutoNumber
if (autoNumberOption.isDefined) {
val autoNumber = autoNumberOption.get
println("Field AutoNumber Prefix: " + autoNumber.getPrefix)
println("Field AutoNumber Suffix: " + autoNumber.getSuffix)
if (autoNumber.getStartNumber.isDefined) println("Field AutoNumber StartNumber: " + autoNumber.getStartNumber.toString)
}
if (field.getDefaultValue.isDefined) println("Field DefaultValue: " + field.getDefaultValue.toString)
if (field.getSectionId.isDefined) println("Field SectionId: " + field.getSectionId.toString)
if (field.getValidationRule != null) {
field.getValidationRule.foreach(entry=>{
println(entry._1 + ": " + entry._2)
})
}
if (field.getConvertMapping != null) {
field.getConvertMapping.foreach(entry=>{
println(entry._1 + ": " + entry._2)
})
}
}
}
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 <- fields) {
println(field.getName + ":" + field.get(responseObject))
}
}
}
}
}