All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.joda.money.MoneyUtils Maven / Gradle / Ivy

There is a newer version: 2.0.0
Show newest version
/*
 *  Copyright 2009-present, Stephen Colebourne
 *
 *  Licensed under the Apache License, Version 2.0 (the "License");
 *  you may not use this file except in compliance with the License.
 *  You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 *  Unless required by applicable law or agreed to in writing, software
 *  distributed under the License is distributed on an "AS IS" BASIS,
 *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 *  See the License for the specific language governing permissions and
 *  limitations under the License.
 */
package org.joda.money;

/**
 * Utilities for working with monetary values that handle null.
 * 

* This utility class contains thread-safe static methods. */ public final class MoneyUtils { /** * Validates that the object specified is not null. * * @param object the object to check, not null * @throws NullPointerException if the input value is null */ static void checkNotNull(Object object, String message) { if (object == null) { throw new NullPointerException(message); } } //----------------------------------------------------------------------- /** * Private constructor. */ private MoneyUtils() { } //----------------------------------------------------------------------- /** * Checks if the monetary value is zero, treating null as zero. *

* This method accepts any implementation of {@code BigMoneyProvider}. * * @param moneyProvider the money to check, null returns zero * @return true if the money is null or zero */ public static boolean isZero(BigMoneyProvider moneyProvider) { return (moneyProvider == null || moneyProvider.toBigMoney().isZero()); } /** * Checks if the monetary value is positive and non-zero, treating null as zero. *

* This method accepts any implementation of {@code BigMoneyProvider}. * * @param moneyProvider the money to check, null returns false * @return true if the money is non-null and positive */ public static boolean isPositive(BigMoneyProvider moneyProvider) { return (moneyProvider != null && moneyProvider.toBigMoney().isPositive()); } /** * Checks if the monetary value is positive or zero, treating null as zero. *

* This method accepts any implementation of {@code BigMoneyProvider}. * * @param moneyProvider the money to check, null returns true * @return true if the money is null, zero or positive */ public static boolean isPositiveOrZero(BigMoneyProvider moneyProvider) { return (moneyProvider == null || moneyProvider.toBigMoney().isPositiveOrZero()); } /** * Checks if the monetary value is negative and non-zero, treating null as zero. *

* This method accepts any implementation of {@code BigMoneyProvider}. * * @param moneyProvider the money to check, null returns false * @return true if the money is non-null and negative */ public static boolean isNegative(BigMoneyProvider moneyProvider) { return (moneyProvider != null && moneyProvider.toBigMoney().isNegative()); } /** * Checks if the monetary value is negative or zero, treating null as zero. *

* This method accepts any implementation of {@code BigMoneyProvider}. * * @param moneyProvider the money to check, null returns true * @return true if the money is null, zero or negative */ public static boolean isNegativeOrZero(BigMoneyProvider moneyProvider) { return (moneyProvider == null || moneyProvider.toBigMoney().isNegativeOrZero()); } //----------------------------------------------------------------------- /** * Finds the maximum {@code Money} value, handing null. *

* This returns the greater of money1 or money2 where null is ignored. * If both input values are null, then null is returned. * * @param money1 the first money instance, null returns money2 * @param money2 the first money instance, null returns money1 * @return the maximum value, null if both inputs are null * @throws CurrencyMismatchException if the currencies differ */ public static Money max(Money money1, Money money2) { if (money1 == null) { return money2; } if (money2 == null) { return money1; } return money1.compareTo(money2) > 0 ? money1 : money2; } /** * Finds the minimum {@code Money} value, handing null. *

* This returns the greater of money1 or money2 where null is ignored. * If both input values are null, then null is returned. * * @param money1 the first money instance, null returns money2 * @param money2 the first money instance, null returns money1 * @return the minimum value, null if both inputs are null * @throws CurrencyMismatchException if the currencies differ */ public static Money min(Money money1, Money money2) { if (money1 == null) { return money2; } if (money2 == null) { return money1; } return money1.compareTo(money2) < 0 ? money1 : money2; } //----------------------------------------------------------------------- /** * Adds two {@code Money} objects, handling null. *

* This returns {@code money1 + money2} where null is ignored. * If both input values are null, then null is returned. * * @param money1 the first money instance, null returns money2 * @param money2 the first money instance, null returns money1 * @return the total, where null is ignored, null if both inputs are null * @throws CurrencyMismatchException if the currencies differ */ public static Money add(Money money1, Money money2) { if (money1 == null) { return money2; } if (money2 == null) { return money1; } return money1.plus(money2); } //----------------------------------------------------------------------- /** * Subtracts the second {@code Money} from the first, handling null. *

* This returns {@code money1 - money2} where null is ignored. * If both input values are null, then null is returned. * * @param money1 the first money instance, null treated as zero * @param money2 the first money instance, null returns money1 * @return the total, where null is ignored, null if both inputs are null * @throws CurrencyMismatchException if the currencies differ */ public static Money subtract(Money money1, Money money2) { if (money2 == null) { return money1; } if (money1 == null) { return money2.negated(); } return money1.minus(money2); } //----------------------------------------------------------------------- /** * Finds the maximum {@code BigMoney} value, handing null. *

* This returns the greater of money1 or money2 where null is ignored. * If both input values are null, then null is returned. * * @param money1 the first money instance, null returns money2 * @param money2 the first money instance, null returns money1 * @return the maximum value, null if both inputs are null * @throws CurrencyMismatchException if the currencies differ */ public static BigMoney max(BigMoney money1, BigMoney money2) { if (money1 == null) { return money2; } if (money2 == null) { return money1; } return money1.compareTo(money2) > 0 ? money1 : money2; } /** * Finds the minimum {@code BigMoney} value, handing null. *

* This returns the greater of money1 or money2 where null is ignored. * If both input values are null, then null is returned. * * @param money1 the first money instance, null returns money2 * @param money2 the first money instance, null returns money1 * @return the minimum value, null if both inputs are null * @throws CurrencyMismatchException if the currencies differ */ public static BigMoney min(BigMoney money1, BigMoney money2) { if (money1 == null) { return money2; } if (money2 == null) { return money1; } return money1.compareTo(money2) < 0 ? money1 : money2; } //----------------------------------------------------------------------- /** * Adds two {@code BigMoney} objects, handling null. *

* This returns {@code money1 + money2} where null is ignored. * If both input values are null, then null is returned. * * @param money1 the first money instance, null returns money2 * @param money2 the first money instance, null returns money1 * @return the total, where null is ignored, null if both inputs are null * @throws CurrencyMismatchException if the currencies differ */ public static BigMoney add(BigMoney money1, BigMoney money2) { if (money1 == null) { return money2; } if (money2 == null) { return money1; } return money1.plus(money2); } //----------------------------------------------------------------------- /** * Subtracts the second {@code BigMoney} from the first, handling null. *

* This returns {@code money1 - money2} where null is ignored. * If both input values are null, then null is returned. * * @param money1 the first money instance, null treated as zero * @param money2 the first money instance, null returns money1 * @return the total, where null is ignored, null if both inputs are null * @throws CurrencyMismatchException if the currencies differ */ public static BigMoney subtract(BigMoney money1, BigMoney money2) { if (money2 == null) { return money1; } if (money1 == null) { return money2.negated(); } return money1.minus(money2); } }





© 2015 - 2024 Weber Informatics LLC | Privacy Policy