From 80a3f59e2d3df07805bc67e329300b8de90a5b3a Mon Sep 17 00:00:00 2001
From: buli <137736985@qq.com>
Date: 星期二, 11 七月 2023 14:13:08 +0800
Subject: [PATCH] Merge branch 'LEXCommunityLiJun' into LEXUpgrade2023-Deloitte

---
 force-app/main/default/classes/MetaDataUtility.cls |  199 +++++++++++++++++++++++--------------------------
 1 files changed, 95 insertions(+), 104 deletions(-)

diff --git a/force-app/main/default/classes/MetaDataUtility.cls b/force-app/main/default/classes/MetaDataUtility.cls
index 34a5b4e..295c7c7 100644
--- a/force-app/main/default/classes/MetaDataUtility.cls
+++ b/force-app/main/default/classes/MetaDataUtility.cls
@@ -1,32 +1,29 @@
 public without sharing class MetaDataUtility {
-
-    public static List<Metadata.LayoutSection> GetRecordTypePageLayout(string record_type_id,string objectType){
-        
-        Map<string,object> mso = null;
+    public static List<Metadata.LayoutSection> GetRecordTypePageLayout(string record_type_id, string objectType) {
+        Map<string, object> mso = null;
         System.debug('rerord 6' + record_type_id + ':' + objectType);
-        string layout_name = GetRecordTypePageLayoutName(record_type_id,objectType,UserInfo.getProfileId());
+        string layout_name = GetRecordTypePageLayoutName(record_type_id, objectType, UserInfo.getProfileId());
         System.debug('layout 8' + layout_name);
 
-        List<Metadata.LayoutSection>  temp =  GetLayoutSections(objectType,layout_name);
-        List<Metadata.LayoutSection>  layoutSectionList = new List<Metadata.LayoutSection>();
-        for(Metadata.LayoutSection section : temp){
+        List<Metadata.LayoutSection> temp = GetLayoutSections(objectType, layout_name);
+        List<Metadata.LayoutSection> layoutSectionList = new List<Metadata.LayoutSection>();
+        for (Metadata.LayoutSection section : temp) {
             boolean a = false;
-            for( Metadata.LayoutColumn c: section.layoutColumns){
+            for (Metadata.LayoutColumn c : section.layoutColumns) {
                 //system.debug(c);
-                if(c.layoutItems != null && c.layoutItems.size() > 0 ){
+                if (c.layoutItems != null && c.layoutItems.size() > 0) {
                     a = true;
                 }
-                
             }
-            if(a){
-				layoutSectionList.add(section);             
+            if (a) {
+                layoutSectionList.add(section);
             }
         }
         return layoutSectionList;
     }
-    
+
     /*[{
-            "attributes": {
+            "attributes": {  
                 "type": "Layout",
                 "url": "/services/data/v53.0/tooling/sobjects/Layout/00h10000009iAb5AAE"
             },
@@ -35,25 +32,24 @@
             "TableEnumOrId": "01I10000000er3hEAA",
             "LayoutType": "Standard"
         }]
-     */ 
-    
-    public static string GetTableOrEnumId(string objectType){
-        
-        Map<string,object> mso = null;
+     */
+
+    public static string GetTableOrEnumId(string objectType) {
+        Map<string, object> mso = null;
         string resp = null;
         string table_or_enum_id = objectType;
-        if(objectType.endsWith('__c')){
-            resp = ToolingQuery('SELECT id,DeveloperName from CustomObject where DeveloperName =\''+objectType.replace('__c', '')+'\'');
-            if(resp == null){
+        if (objectType.endsWith('__c')) {
+            resp = ToolingQuery('SELECT id,DeveloperName from CustomObject where DeveloperName =\'' + objectType.replace('__c', '') + '\'');
+            if (resp == null) {
                 system.debug('resp is not ok');
                 return null;
-            }else{
-                mso = (Map<string,object>)Json.deserializeUntyped(resp);
-                if(integer.valueOf(mso.get('size')) > 0){
-                    table_or_enum_id =  string.valueOf(((Map<string,object>)(((List<object>)mso.get('records'))[0])).get('Id')); 
-                }else{
+            } else {
+                mso = (Map<string, object>) Json.deserializeUntyped(resp);
+                if (integer.valueOf(mso.get('size')) > 0) {
+                    table_or_enum_id = string.valueOf(((Map<string, object>) (((List<object>) mso.get('records'))[0])).get('Id'));
+                } else {
                     system.debug('no records');
-                	return null;
+                    return null;
                 }
             }
         }
@@ -61,125 +57,120 @@
 
         return table_or_enum_id;
     }
-    
-    public static List<object> GetAllPageLayout(string objectType){
+
+    public static List<object> GetAllPageLayout(string objectType) {
         string resp = null;
-        Map<string,object> mso = null;
-        
-        
-        string table_or_enum_id =  GetTableOrEnumId(objectType);
-        
-        if(string.isBlank(table_or_enum_id)){
+        Map<string, object> mso = null;
+
+        string table_or_enum_id = GetTableOrEnumId(objectType);
+
+        if (string.isBlank(table_or_enum_id)) {
             return new List<object>();
         }
-        
-        resp = ToolingQuery('SELECT id,name,TableEnumOrId,LayoutType  FROM Layout where TableEnumOrId = \''+table_or_enum_id+'\'');
-        if(resp == null){
-            system.debug('Layout where TableEnumOrId='+table_or_enum_id+' is null');
+
+        resp = ToolingQuery('SELECT id,name,TableEnumOrId,LayoutType  FROM Layout where TableEnumOrId = \'' + table_or_enum_id + '\'');
+        if (resp == null) {
+            system.debug('Layout where TableEnumOrId=' + table_or_enum_id + ' is null');
             return null;
-        }else{
-            mso = (Map<string,object>)Json.deserializeUntyped(resp);
-            if(integer.valueOf(mso.get('size')) > 0){
-                return (List<object>)mso.get('records');
-            }else{
+        } else {
+            mso = (Map<string, object>) Json.deserializeUntyped(resp);
+            if (integer.valueOf(mso.get('size')) > 0) {
+                return (List<object>) mso.get('records');
+            } else {
                 system.debug('no records');
                 return new List<object>();
             }
         }
     }
-    
-    
-    public static string GetRecordTypePageLayoutName(string record_type_id,string objectType, string profile_id){
-		System.debug('objectType 92' + objectType);
+
+    public static string GetRecordTypePageLayoutName(string record_type_id, string objectType, string profile_id) {
+        System.debug('objectType 92' + objectType);
         System.debug('profile 93 ' + profile_id);
-        
-        if(!string.isBlank(objectType)){
-            List<sobject> lso = [SELECT Id, Name, DeveloperName, SobjectType, IsActive, Description, BusinessProcessId FROM RecordType where SobjectType = :objectType];
-            if(lso.size()==0){
-                return string.valueOf(((Map<string,object>)(GetAllPageLayout(objectType)[0])).get('Name'));
+
+        if (!string.isBlank(objectType)) {
+            List<sobject> lso = [
+                SELECT Id, Name, DeveloperName, SobjectType, IsActive, Description, BusinessProcessId
+                FROM RecordType
+                WHERE SobjectType = :objectType
+            ];
+            if (lso.size() == 0) {
+                return string.valueOf(((Map<string, object>) (GetAllPageLayout(objectType)[0])).get('Name'));
             }
         }
-        
+
         // 01210000000QfWdAAK
         string query = 'SELECT Layout.Name, Layout.TableEnumOrId, ProfileId, Profile.Name, RecordTypeId FROM ProfileLayout where id!=null ';
-        if(!string.isBlank(record_type_id)){
-            query += ' and RecordTypeId = \''+record_type_id+'\'';
+        if (!string.isBlank(record_type_id)) {
+            query += ' and RecordTypeId = \'' + record_type_id + '\'';
         }
-        
-        if(!string.isBlank(objectType)){
-            query += ' and TableEnumOrId = \''+ GetTableOrEnumId(objectType) +'\'';
+
+        if (!string.isBlank(objectType)) {
+            query += ' and TableEnumOrId = \'' + GetTableOrEnumId(objectType) + '\'';
         }
-        
-        if(!string.isBlank(profile_id)){
-            query += ' and ProfileId = \''+profile_id+'\'';
+
+        if (!string.isBlank(profile_id)) {
+            query += ' and ProfileId = \'' + profile_id + '\'';
         }
         query += ' order by LastModifiedDate desc ';
-        system.debug('query='+query);
+        system.debug('query=' + query);
         string s = ToolingQuery(query);
-        if(string.isBlank(s)){
+        if (string.isBlank(s)) {
             system.debug('s is blank');
             return null;
-        }else{
-            Map<string,object> mso = (Map<string,object>)JSON.deserializeUntyped(s);
+        } else {
+            Map<string, object> mso = (Map<string, object>) JSON.deserializeUntyped(s);
             System.debug('mso 122' + mso);
-        
-            if(integer.valueOf(mso.get('size')) > 0){
-                List<object> records = ((List<object>)mso.get('records'));
-            
-                mso = (Map<string,object>)(records[0]);
-                return string.valueOf(((Map<string,object>)(mso.get('Layout'))).get('Name'));
-            }else{
+
+            if (integer.valueOf(mso.get('size')) > 0) {
+                List<object> records = ((List<object>) mso.get('records'));
+
+                mso = (Map<string, object>) (records[0]);
+                return string.valueOf(((Map<string, object>) (mso.get('Layout'))).get('Name'));
+            } else {
                 return null;
             }
         }
-        
-        
-        
     }
-    
-    public static string ToolingQuery(string query){
-        
-        system.debug('query='+query);
-        String baseURL = 'callout:SF_Rest_API/services/data/v41.0/tooling/query?q='+ query.replace(' ', '+');
+
+    public static string ToolingQuery(string query) {
+        system.debug('query=' + query);
+        String baseURL = 'callout:SF_Rest_API/services/data/v41.0/tooling/query?q=' + query.replace(' ', '+');
         HttpResponse resp = null;
-        HttpRequest req = new HttpRequest();         
+        HttpRequest req = new HttpRequest();
         req.setMethod('GET');
-        
-        //req.setHeader('Authorization', 'Bearer ' + UserInfo.getsessionid()); 
-        //req.setEndpoint(baseURL); 
-        req.setEndpoint(baseURL); 
-        
-        Http client = new Http();    
+
+        //req.setHeader('Authorization', 'Bearer ' + UserInfo.getsessionid());
+        //req.setEndpoint(baseURL);
+        req.setEndpoint(baseURL);
+
+        Http client = new Http();
         resp = client.send(req);
-        
+
         system.debug(resp.getStatus());
         system.debug(resp.getStatusCode());
-        if(resp.getStatus() == 'OK'){
+        if (resp.getStatus() == 'OK') {
             string s = resp.getBody();
             system.debug(resp.getBody());
-        	return s;
-        }else{
-            system.debug('status is not ok,error:'+resp.getBody());
+            return s;
+        } else {
+            system.debug('status is not ok,error:' + resp.getBody());
             return null;
         }
-        
     }
-    
-    public static List<Metadata.LayoutSection> GetLayoutSections(string object_name, string layout_name){
-        List<String> componentNameList = new List<String>{object_name+'-'+layout_name};
+
+    public static List<Metadata.LayoutSection> GetLayoutSections(string object_name, string layout_name) {
+        List<String> componentNameList = new List<String>{ object_name + '-' + layout_name };
         //閫氳繃Metadata.Operations.retrieve鑾峰彇metadata
         //Metadata.Layout -> Metadata.LayoutSection -> Metadata.LayoutColumn objects -> Metadata.LayoutItem objects
         System.debug('componentNameList 171: ' + componentNameList);
         List<Metadata.Metadata> componentList = Metadata.Operations.retrieve(Metadata.MetadataType.Layout, componentNameList);
         System.debug('componentList 173 ' + componentList);
-        if(componentList?.size() > 0){
+        if (componentList?.size() > 0) {
             Metadata.Layout layout = (Metadata.Layout) componentList.get(0);
             List<Metadata.LayoutSection> layoutSectionList = layout.layoutSections;
             return layoutSectionList;
-        }
-        else{
+        } else {
             return null;
         }
-        
     }
-}
\ No newline at end of file
+}

--
Gitblit v1.9.1