FINERACT-2060: Accrual reverse replay logic and Handling
This commit is contained in:
committed by
Adam Saghy
parent
8d25b0c765
commit
d57e72ec2f
+35
-22
@@ -193,11 +193,23 @@ public final class DateUtils {
|
||||
}
|
||||
|
||||
public static int compare(OffsetDateTime first, OffsetDateTime second, ChronoUnit truncate) {
|
||||
return compare(first, second, truncate, true);
|
||||
}
|
||||
|
||||
public static int compareWithNullsLast(OffsetDateTime first, OffsetDateTime second) {
|
||||
return compare(first, second, null, false);
|
||||
}
|
||||
|
||||
public static int compareWithNullsLast(@NotNull Optional<OffsetDateTime> first, @NotNull Optional<OffsetDateTime> second) {
|
||||
return compareWithNullsLast(first.orElse(null), second.orElse(null));
|
||||
}
|
||||
|
||||
public static int compare(OffsetDateTime first, OffsetDateTime second, ChronoUnit truncate, boolean nullFirst) {
|
||||
if (first == null) {
|
||||
return second == null ? 0 : -1;
|
||||
return second == null ? 0 : (nullFirst ? -1 : 1);
|
||||
}
|
||||
if (second == null) {
|
||||
return 1;
|
||||
return nullFirst ? 1 : -1;
|
||||
}
|
||||
first = first.withOffsetSameInstant(ZoneOffset.UTC);
|
||||
second = second.withOffsetSameInstant(ZoneOffset.UTC);
|
||||
@@ -291,7 +303,23 @@ public final class DateUtils {
|
||||
}
|
||||
|
||||
public static int compare(LocalDate first, LocalDate second) {
|
||||
return first == null ? (second == null ? 0 : -1) : (second == null ? 1 : first.compareTo(second));
|
||||
return compare(first, second, true);
|
||||
}
|
||||
|
||||
/**
|
||||
* Comparing dates. Null will be considered as last elements
|
||||
*
|
||||
* @param first
|
||||
* @param second
|
||||
* @return
|
||||
*/
|
||||
public static int compareWithNullsLast(LocalDate first, LocalDate second) {
|
||||
return compare(first, second, false);
|
||||
}
|
||||
|
||||
public static int compare(LocalDate first, LocalDate second, boolean nullFirst) {
|
||||
return first == null ? (second == null ? 0 : (nullFirst ? -1 : 1))
|
||||
: (second == null ? (nullFirst ? 1 : -1) : first.compareTo(second));
|
||||
}
|
||||
|
||||
public static boolean isEqual(LocalDate first, LocalDate second) {
|
||||
@@ -325,6 +353,10 @@ public final class DateUtils {
|
||||
return getExactDifference(first, second, DAYS);
|
||||
}
|
||||
|
||||
public static LocalDate minusDays(LocalDate first, int days) {
|
||||
return first == null ? null : first.minusDays(days);
|
||||
}
|
||||
|
||||
// Parse, format
|
||||
|
||||
public static LocalDate parseLocalDate(String stringDate) {
|
||||
@@ -426,23 +458,4 @@ public final class DateUtils {
|
||||
}
|
||||
return formatter;
|
||||
}
|
||||
|
||||
/**
|
||||
* Comparing dates. Null will be considered as last elements
|
||||
*
|
||||
* @param first
|
||||
* @param second
|
||||
* @return
|
||||
*/
|
||||
public static int compareWithNullsLast(LocalDate first, LocalDate second) {
|
||||
return first == null ? (second == null ? 0 : 1) : (second == null ? -1 : first.compareTo(second));
|
||||
}
|
||||
|
||||
public static int compareWithNullsLast(@NotNull Optional<OffsetDateTime> first, @NotNull Optional<OffsetDateTime> second) {
|
||||
return DateUtils.compareWithNullsLast(first.orElse(null), second.orElse(null));
|
||||
}
|
||||
|
||||
public static int compareWithNullsLast(OffsetDateTime first, OffsetDateTime second) {
|
||||
return first == null ? (second == null ? 0 : 1) : (second == null ? -1 : first.compareTo(second));
|
||||
}
|
||||
}
|
||||
|
||||
+20
-1
@@ -232,7 +232,7 @@ public final class MathUtil {
|
||||
* if true then null parameter is omitted, otherwise returns null
|
||||
*/
|
||||
public static BigDecimal min(BigDecimal first, BigDecimal second, boolean notNull) {
|
||||
return notNull ? first == null ? second : second == null ? first : min(first, second, false)
|
||||
return notNull ? (first == null ? second : (second == null ? first : min(first, second, false)))
|
||||
: isLessThan(first, second) ? first : second;
|
||||
}
|
||||
|
||||
@@ -291,6 +291,11 @@ public final class MathUtil {
|
||||
return subtract(first, second, MoneyHelper.getMathContext());
|
||||
}
|
||||
|
||||
/** @return first minus the others considering null values, maybe negative */
|
||||
public static BigDecimal subtract(BigDecimal first, BigDecimal second, BigDecimal third) {
|
||||
return subtract(subtract(first, second), third);
|
||||
}
|
||||
|
||||
/** @return first minus second considering null values, maybe negative */
|
||||
public static BigDecimal subtract(BigDecimal first, BigDecimal second, MathContext mc) {
|
||||
return first == null ? null : second == null ? first : first.subtract(second, mc);
|
||||
@@ -336,6 +341,10 @@ public final class MathUtil {
|
||||
return amount == null ? null : amount.toPlainString();
|
||||
}
|
||||
|
||||
public static Money toMoney(BigDecimal amount, @NotNull MonetaryCurrency currency) {
|
||||
return amount == null ? null : Money.of(currency, amount);
|
||||
}
|
||||
|
||||
// ----------------- Money -----------------
|
||||
|
||||
public static BigDecimal toBigDecimal(Money value) {
|
||||
@@ -454,6 +463,16 @@ public final class MathUtil {
|
||||
return min(min(first, second, notNull), third, notNull);
|
||||
}
|
||||
|
||||
/** @return Money null safe negate */
|
||||
public static Money negate(Money amount) {
|
||||
return negate(amount, MoneyHelper.getMathContext());
|
||||
}
|
||||
|
||||
/** @return Money null safe negate */
|
||||
public static Money negate(Money amount, MathContext mc) {
|
||||
return isEmpty(amount) ? amount : amount.negated(mc);
|
||||
}
|
||||
|
||||
/**
|
||||
* Calculate percentage of a value
|
||||
*
|
||||
|
||||
Reference in New Issue
Block a user