From 24ba673d8e47986e549d4615227bdf62ceb7cacd Mon Sep 17 00:00:00 2001 From: WimVelzeboer Date: Mon, 13 Dec 2021 18:21:57 +0000 Subject: [PATCH] Add support to compare a date against a date time --- .../classes/criteria/fflib_Comparator.cls | 18 ++++++++++++++++++ .../classes/criteria/fflib_ComparatorTest.cls | 13 +++++++++++-- 2 files changed, 29 insertions(+), 2 deletions(-) diff --git a/sfdx-source/apex-extensions/main/default/classes/criteria/fflib_Comparator.cls b/sfdx-source/apex-extensions/main/default/classes/criteria/fflib_Comparator.cls index 368af0d..22f732e 100644 --- a/sfdx-source/apex-extensions/main/default/classes/criteria/fflib_Comparator.cls +++ b/sfdx-source/apex-extensions/main/default/classes/criteria/fflib_Comparator.cls @@ -65,6 +65,10 @@ public with sharing class fflib_Comparator return compare((Date) object1, (Date) object2); else if (object1 instanceof Datetime && object2 instanceof Datetime) return compare((Datetime) object1, (Datetime) object2); + else if (object1 instanceof Datetime && object2 instanceof Date) + return compare((Datetime) object1, (Date) object2); + else if (object1 instanceof Date && object2 instanceof Datetime) + return compare((Date) object1, (Datetime) object2); else if (object1 instanceof Integer && object2 instanceof Integer) return compare((Integer) object1, (Integer) object2); else if (object1 instanceof Long && object2 instanceof Long) @@ -101,6 +105,20 @@ public with sharing class fflib_Comparator else return 1; } + public static Integer compare(Datetime d1, Date d2) + { + if (d1 < d2) return -1; + else if (d1 == d2) return 0; + else return 1; + } + + public static Integer compare(Date d1, Datetime d2) + { + if (d1 < d2) return -1; + else if (d1 == d2) return 0; + else return 1; + } + public static Integer compare(Double d1, Double d2) { if (d1 < d2) return -1; diff --git a/sfdx-source/apex-extensions/tests/classes/criteria/fflib_ComparatorTest.cls b/sfdx-source/apex-extensions/tests/classes/criteria/fflib_ComparatorTest.cls index 7b86fd3..f0feee6 100644 --- a/sfdx-source/apex-extensions/tests/classes/criteria/fflib_ComparatorTest.cls +++ b/sfdx-source/apex-extensions/tests/classes/criteria/fflib_ComparatorTest.cls @@ -85,8 +85,17 @@ private with sharing class fflib_ComparatorTest private static testmethod void testDatetime() { - Object d1 = datetime.newInstance(2008, 12, 1, 12, 30, 1); - Object d2 = datetime.newInstance(2008, 12, 1, 12, 30, 2); + Object d1 = Datetime.newInstance(2010, 01, 1, 12, 30, 0); + Object d2 = Datetime.newInstance(2020, 01, 1, 12, 30, 0); + assertCompareDatetime(d1, d2, -1); + assertCompareDatetime(d1, d1, 0); + assertCompareDatetime(d2, d1, 1); + } + + private static testmethod void testDatetimeToDate() + { + Object d1 = Date.newInstance(2010, 01, 1); + Object d2 = Datetime.newInstance(2020, 01, 1, 12, 30, 0); assertCompareDatetime(d1, d2, -1); assertCompareDatetime(d1, d1, 0); assertCompareDatetime(d2, d1, 1);