/******************************************************************************* * Copyright 2019 Graz University of Technology * MOA ZS has been developed in a cooperation between EGIZ * and Graz University of Technology. * Licensed under the EUPL, Version 1.2 or - as soon they will be approved by * the European Commission - subsequent versions of the EUPL (the "Licence"); * You may not use this work except in compliance with the Licence. * You may obtain a copy of the Licence at: * https://joinup.ec.europa.eu/news/understanding-eupl-v12 * * Unless required by applicable law or agreed to in writing, software * distributed under the Licence is distributed on an "AS IS" basis, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the Licence for the specific language governing permissions and * limitations under the Licence. * * This product combines work with different licenses. See the "NOTICE" text * file for details on the various modules and licenses. * The "NOTICE" text file is part of the distribution. Any derivative works * that you distribute must include a readable copy of the "NOTICE" text file. *******************************************************************************/ package at.gv.egiz.moazs.util; import java.util.Optional; import static java.util.Optional.ofNullable; /** * Helper function for coalescing nullables value without cluttering code with if-else cascades * @author les2 * @source https://stackoverflow.com/questions/2768054/how-to-get-the-first-non-null-value-in-java */ public final class NullCoalesce { private NullCoalesce(){} /** * @return the first not-null value * @param a * @param b * @param * @return a if a != null, otherwise b. */ public static Optional coalesce(T a, T b) { return a != null ? ofNullable(a) : ofNullable(b); } public static Optional coalesce(T a, T b, T c) { return a != null ? ofNullable(a) : coalesce(b,c); } public static Optional coalesce(T a, T b, T c, T d) { return a != null ? ofNullable(a) : coalesce(b,c,d); } }