zoukankan      html  css  js  c++  java
  • salesforce 零基础学习(五十八)通过sObject的field返回其对应的基础类型

    项目中有时候会要求通过sObject的Field的type类型返回其对应的基本类型,然后对其进行相关的处理,创建sObject的field可以选择的type类型是固定多的。

    上述类型可以转换成几种基本类型:Boolean、Date、Datetime、Double、Integer、String、Time。

    1.封装Primitive枚举类:封装基本类型

     1 public enum Primitive {
     2     TYPE_BOOLEAN, 
     3     TYPE_DATE, 
     4     TYPE_DATETIME, 
     5     TYPE_DOUBLE, 
     6     TYPE_INTEGER, 
     7     TYPE_STRING, 
     8     TYPE_TIMEOFDAY,
     9     TYPE_UNKNOW
    10 }

    2.创建PrimitiveHelper帮助类:通过字段的DataType返回相关的基本类型

     1 public without sharing class PrimitiveHelper {
     2 
     3     public static Primitive getPrimitiveTypeByField(String sObjectName,String fieldName) {
     4         Schema.DisplayType fieldType = getFieldDisplayType(sObjectName,fieldName);
     5         if(fieldType == Schema.Displaytype.BOOLEAN){
     6             return Primitive.TYPE_BOOLEAN;
     7         }
     8         else if(fieldType == Schema.Displaytype.BASE64 || fieldType == Schema.Displaytype.COMBOBOX || fieldType == Schema.Displaytype.EMAIL ||
     9                 fieldType == Schema.Displaytype.ENCRYPTEDSTRING || fieldType == Schema.Displaytype.ID || fieldType == Schema.Displaytype.MULTIPICKLIST ||
    10                 fieldType == Schema.Displaytype.PHONE || fieldType == Schema.Displaytype.PICKLIST || fieldType == Schema.Displaytype.REFERENCE ||
    11                 fieldType == Schema.Displaytype.STRING || fieldType == Schema.Displaytype.TEXTAREA || fieldType == Schema.Displaytype.URL){
    12             return Primitive.TYPE_STRING;
    13         }
    14         else if(fieldType == Schema.Displaytype.CURRENCY || fieldType == Schema.Displaytype.DOUBLE || fieldType == Schema.Displaytype.PERCENT){
    15             return Primitive.TYPE_DOUBLE;                       
    16         }
    17         else if(fieldType == Schema.Displaytype.INTEGER){
    18             return Primitive.TYPE_INTEGER;                      
    19         }
    20         else if(fieldType == Schema.Displaytype.DATE){
    21             return Primitive.TYPE_DATE;
    22         }
    23         else if(fieldType == Schema.Displaytype.DATETIME){
    24             return Primitive.TYPE_DATETIME;
    25         }
    26         else {
    27             throw new MyException('无对应的基础类型');
    28         }
    29     }
    30     
    31     
    32     private static Schema.DisplayType getFieldDisplayType(String sObjectName,String fieldName) {
    33         List<Schema.DescribeSObjectResult> sObjectTypes = Schema.describeSObjects(new String[]{sObjectName});
    34         if(sObjectTypes == null || sObjectTypes.size() == 0) {
    35             throw new MyException('无此Object Name');
    36         }
    37         Schema.DescribeSObjectResult sObjectDescribeResult = sObjectTypes.get(0);
    38         Map<String,Schema.SObjectField> objectFieldMap = sObjectDescribeResult.fields.getMap();
    39         Schema.SObjectField objectField = objectFieldMap.get(fieldName);
    40         if(objectField == null) {
    41             throw new MyException('无此Field Name');
    42         }
    43         Schema.DescribeFieldResult fieldResult = objectField.getDescribe();
    44         
    45         return fieldResult.getType();
    46     }
    47     
    48     private class MyException extends Exception{}
    49 }

    效果:

    1.存在的相关字段的基本类型

    2.不存在的字段的结果显示

    总结:此篇用于通过sObject的字段来判断此字段属于哪种基本类型,然后可以通过的基本类型对其进行相关操作。有错误的地方欢迎留言。

  • 相关阅读:
    光纤网卡与HBA卡区别
    Windows远程桌面相关
    port bridge enable命令导致的环路
    堡垒机jumpserver测试记录--使用
    堡垒机jumpserver测试记录--安装
    Centos6.5升级openssh、OpenSSL和wget
    linux抓包工具tcpdump使用总结
    iOS -视频缩略图的制作
    Mac 上视图的坐标系统原点位于左下角
    Mac
  • 原文地址:https://www.cnblogs.com/zero-zyq/p/6212281.html
Copyright © 2011-2022 走看看