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

org.liquibase.groovy.delegate.DelegateUtil.groovy Maven / Gradle / Ivy

/*
 * Copyright 2011-2017 Tim Berglund and Steven C. Saliman
 *
 *  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.liquibase.groovy.delegate

/**
 * Little utility with helper methods that all the delegates can use.
 *
 * @author Steven C. Saliman
 */
class DelegateUtil {
	/**
	 * Helper method that expands a text expression, replacing variables inside
	 * strings with their values from the database change log parameters.
	 * @param expression the text to expand, or null if the expression is null.
	 * @param databaseChangeLog the database change log
	 * @return the text, after substitutions have been made.
	 */
	static def expandExpressions(expression, databaseChangeLog) {
		// Don't expand a null into the text "null", just return null
		if ( expression == null ) {
			return null
		}

		// Don't try to expand if we have no paramaters.
		if ( databaseChangeLog.changeLogParameters == null ) {
			return expression
		}
		return databaseChangeLog.changeLogParameters.expandExpressions(expression.toString(), databaseChangeLog)
	}

	/**
	 * Helper method to determine the truth of a value.  We need this because
	 * Groovy's {@code asBoolean} method for Strings treats any non-empty string
	 * as true, including the string whose contents are "false".  This means
	 * that a property whose value is "false" would be set to true in a simple
	 * if statement.
	 * 

* We get around this problem by using the {@code toBoolean} method if the * given value is a String. This way, only the strings "1", "true", and * "y" are treated as true. All others are treated as false. *

* Examples of "true" values are {@code true}, {@code 1}, and {@code "true"}. * Examples of "false" are {@code false}, {@code 0}, and {@code "false"}. * @param value the value to parse * @param defaultValue the default value to use if there is no value given. * @return whether or not the given value is "true", or the defaultValue * if no value is given. */ static boolean parseTruth(value, defaultValue) { if ( value == null ) { return defaultValue } if ( value instanceof String ) { return value.toBoolean() } return value.asBoolean() } }





© 2015 - 2024 Weber Informatics LLC | Privacy Policy