org.eclim.util.StringUtils.java Source code

Java tutorial

Introduction

Here is the source code for org.eclim.util.StringUtils.java

Source

/**
 * Copyright (C) 2005 - 2011  Eric Van Dewoestine
 *
 * This program is free software: you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation, either version 3 of the License, or
 * (at your option) any later version.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with this program.  If not, see <http://www.gnu.org/licenses/>.
 */
package org.eclim.util;

import java.util.Map;

/**
 * Extension to commons lang StringUtils that adds some additional useful
 * utility methods.
 *
 * @author Eric Van Dewoestine
 */
public class StringUtils extends org.apache.commons.lang.StringUtils {
    private static final String PLACEHOLDER_PREFIX = "${";
    private static final String PLACEHOLDER_SUFFIX = "}";

    /**
     * Replaces placeholders of the form ${key} in the supplied string using
     * key / value pairs from the Map provided.
     *
     * @param string the String to evaluate.
     * @param values the values to use in the string.
     * @return The evaluation result.
     */
    @SuppressWarnings("rawtypes")
    public static String replacePlaceholders(String string, Map values) {
        if (string == null || values == null) {
            return string;
        }

        StringBuffer buffer = new StringBuffer(string);

        int start = buffer.indexOf(PLACEHOLDER_PREFIX);
        int end = buffer.indexOf(PLACEHOLDER_SUFFIX);
        while (start != -1 && end != -1) {
            String placeholder = buffer.substring(start + PLACEHOLDER_PREFIX.length(), end);

            Object value = values.get(placeholder);
            if (value != null) {
                buffer.replace(start, end + 1, value.toString());
            }

            start = buffer.indexOf(PLACEHOLDER_PREFIX, start + 1);
            end = buffer.indexOf(PLACEHOLDER_SUFFIX, start + 1);
        }

        return buffer.toString();
    }
}