From 558242b34f721fea0770ab4978edc778616a186d Mon Sep 17 00:00:00 2001 From: WimVelzeboer Date: Mon, 3 Jan 2022 16:50:31 +0000 Subject: [PATCH] Add private domain selector method in domain template Allows for generic selectors based on SObjectFields Signed-off-by: WimVelzeboer --- .../fileTemplates/AEPE - Domain Structure.cls | 48 +++++++++++++++++++ 1 file changed, 48 insertions(+) diff --git a/dev-tools/assets/intelliJ/fileTemplates/AEPE - Domain Structure.cls b/dev-tools/assets/intelliJ/fileTemplates/AEPE - Domain Structure.cls index 803b971..5ccbd36 100644 --- a/dev-tools/assets/intelliJ/fileTemplates/AEPE - Domain Structure.cls +++ b/dev-tools/assets/intelliJ/fileTemplates/AEPE - Domain Structure.cls @@ -22,6 +22,54 @@ public inherited sharing class ${NAME} return (List<${SObject_API_Name}>) getRecords(); } + private I${NAME} selectBlank(Schema.SObjectField sObjectField) + { + List<${SObject_API_Name}> result = new List<${SObject_API_Name}>(); + for (${SObject_API_Name} record : get${NAME}()) + { + if (String.isNotBlank((String) record.get(sObjectField))) continue; + + result.add(record); + } + return new ${NAME}(result); + } + + private I${NAME} selectNonBlank(Schema.SObjectField sObjectField) + { + List<${SObject_API_Name}> result = new List<${SObject_API_Name}>(); + for (${SObject_API_Name} record : get${NAME}()) + { + if (String.isBlank((String) record.get(sObjectField))) continue; + + result.add(record); + } + return new ${NAME}(result); + } + + private I${NAME} selectWith(Schema.SObjectField sObjectField) + { + List<${SObject_API_Name}> result = new List<${SObject_API_Name}>(); + for (${SObject_API_Name} record : get${NAME}()) + { + if (record.get(sObjectField) == null) continue; + + result.add(record); + } + return new ${NAME}(result); + } + + private I${NAME} selectWithout(Schema.SObjectField sObjectField) + { + List<${SObject_API_Name}> result = new List<${SObject_API_Name}>(); + for (${SObject_API_Name} record : get${NAME}()) + { + if (record.get(sObjectField) != null) continue; + + result.add(record); + } + return new ${NAME}(result); + } + public class Constructor implements fflib_IDomainConstructor { public fflib_SObjects construct(List records)