Skip to content

Instantly share code, notes, and snippets.

@Patlatus
Patlatus / whichPS.soql
Created September 21, 2020 07:45
Find out which permission set provides read access to a field
SELECT ParentId FROM FieldPermissions WHERE
Field = 'CustomObject__c.CustomField__c'
AND SObjectType = 'CustomObject__c'
AND PermissionsRead = true
AND ParentId IN (SELECT PermissionSetId from PermissionSetAssignment WHERE AssigneeId = '005USerID0000AAA')
@Patlatus
Patlatus / MD.apxc
Created October 30, 2018 14:55
Build package.xml for Metadata Records
public class MD {
public static String buildPackageXMLForMD(SObjectType mdt, String whereClause){
String mdtName = [ select DeveloperName FROM EntityDefinition where QualifiedAPIName = :mdt.getDescribe().getName() ].DeveloperName;
List<SObject> records = Database.query('SELECT DeveloperName FROM ' + mdt + whereClause );
List<String> items = new List<String>();
for (SObject r: records) {
items.add( mdtName + '.' + r.get( 'DeveloperName' ) );
}
return ' <types>\r\n <members>' + String.join( items, '</members>\r\n <members>' ) + '</members>\r\n <name>CustomMetadata</name>\r\n </types>';
@Patlatus
Patlatus / buildPackageXMLForMD
Created October 19, 2018 13:48
buildPackageXMLForMD
public static String buildPackageXMLForMD(SObjectType mdt){
String mdtName = mdt.getDescribe().getName();
List<SObject> records = Database.query('SELECT DeveloperName FROM ' + mdt );
List<String> items = new List<String>();
for (SObject r: records) {
items.add( mdtName + '.' + r.get( 'DeveloperName' ) );
}
return ' <types>\r\n <members>' + String.join( items, '</members>\r\n <members>' ) + '</members>\r\n <name>CustomMetadata</name>\r\n </types>';
}
@Patlatus
Patlatus / MD.updateAndDeployMetadata.anon
Created October 18, 2018 13:37
Anon.apex to convert custom object records into custom metadata records
MD.updateAndDeployMetadata(
[ SELECT Field1__c, Field2__c, Field3__c, Field4__c FROM Object__c   ],
CustomMetadata__mdt.sObjectType,
new Map<SObjectField, SObjectField>{
Object__c.Field1__c=> CustomMetadata__mdt.Field1__c,
Object__c.Field2__c=> CustomMetadata__mdt.Field2__c,
Object__c.Field3__c=> CustomMetadata__mdt.Field3__c,
Object__c.Field4__c => CustomMetadata__mdt.Field4__c
},
'X+Field1__c+_+Field2__c',
@Patlatus
Patlatus / MD.apxc
Created October 18, 2018 13:36
MD.apex
public class MD {
public static List<String> getItems(List<String> parts, Map<String, Schema.SObjectField> fieldsMap, SObject r) {
List<String> items = new List<String>();
for (String part: parts) {
items.add( fieldsMap.containsKey( part ) ? String.valueOf( r.get( part ) ) : part );
}
return items;
}
public static Id updateAndDeployMetadata(List<SObject> sourceRecords, SObjectType dest, Map<SObjectField, SObjectField> mappings, String fullNameDef, String labelDef) {
Metadata.DeployContainer mdContainer = new Metadata.DeployContainer();
@Patlatus
Patlatus / EmptyValueFilter
Created October 2, 2018 13:10
EmptyValueFilter
public class EmptyValueFilter implements IFilter {
SObjectField field;
public EmptyValueFilter(SObjectField f) {
field = f;
}
public Boolean check(SObject rec, SObject old) {
return rec.get(field) == null
}
}
@Patlatus
Patlatus / URLService
Created September 11, 2018 08:26
URLService
<!-- <pre>
public class URLService {
@auraEnabled
public static String getBaseURL() {
PageReference pr = new PageReference('/id/' + UserInfo.getOrganizationId() + '/' + UserInfo.getUserId() + '?oauth_token=' + UserInfo.getSessionId() );
System.debug(LoggingLevel.ERROR, '@@@ v: ' + pr.getContent().toString() );
String data = pr.getContent().toString();
Map result = (Map)Json.deserializeUntyped(data);
Map urls = (Map)result.get('urls');
@Patlatus
Patlatus / b.py
Created April 16, 2018 19:21
Google Code Jame - QR 2018 - problem B (python)
import sys, copy;
def solve(n,v):
parni = []
neparni = []
for i in range(n):
if i % 2 == 0:
parni.append(v[i])
else:
neparni.append(v[i])
@Patlatus
Patlatus / A-input.txt
Created April 16, 2018 19:19
Google Code Jam - QR 2018 - Problem A - sample input file
10
1 CS
2 CS
1 SS
6 SCCSSC
2 CC
3 CSCSS
10000000 CCCCCCCCCCCCCCCCCCCCSSSSSSSSSS
536870911 CCCCCCCCCCCCCCCCCCCCCCCCCCCCCS
268435455 CCCCCCCCCCCCCCCCCCCCCCCCCCCCCS
@Patlatus
Patlatus / a.py
Created April 16, 2018 19:17
Google Code Jam 2018 QR Problem A
import sys, copy;
def modify(a, i, z, d):
x = a[i]
y = x['v']
m = z['m']
damage = z['d']
print "y=", y
while (y > 0):
x['v'] -= 1
a[i-1]['v'] += 1