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