com.asual.summer.core.util.StringUtils.java Source code

Java tutorial

Introduction

Here is the source code for com.asual.summer.core.util.StringUtils.java

Source

/*
 * 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 com.asual.summer.core.util;

import java.net.URLDecoder;
import java.net.URLEncoder;
import java.util.Arrays;
import java.util.List;
import java.util.Map;
import java.util.Properties;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

import javax.inject.Named;

import org.apache.commons.lang.ArrayUtils;
import org.apache.commons.lang.StringEscapeUtils;
import org.apache.commons.lang.WordUtils;

/**
 * 
 * @author Rostislav Hristov
 *
 */
@Named
public class StringUtils {

    public static String ellipsis(String str, int length) {
        String space = " ";
        String ellipsis = "...";
        length = length - ellipsis.length();
        if (str.length() > length) {
            String[] words = str.substring(0, length).split(space);
            if (words.length > 1) {
                str = join(ArrayUtils.remove(words, words.length - 1), space);
            } else {
                str = words[0];
            }
            String end = str.substring(str.length() - 1, str.length());
            if (end.matches("\\.|\\?|\\!|,")) {
                str = str.substring(0, str.length() - 1);
            }
            return str + ellipsis;
        }
        return str;
    }

    public static String lines(String str, int length) {
        List<String> values = Arrays.asList(str.split("\n\r|\r\n|\n|\r"));
        if (length < values.size()) {
            return join(values.subList(0, length).toArray(new String[] {}), "\n") + "...";
        }
        return str;
    }

    public static String wrap(String left, String center, String right) {
        return left.concat(center).concat(right);
    }

    public static String toCamelCase(String str) {
        return WordUtils.uncapitalize(str);
    }

    public static String toTitleCase(String str) {
        return WordUtils.capitalize(str);
    }

    public static String toUriPath(String str) {
        return StringUtils.join(str.replaceAll("'|\\\"|\\.|,|;", "").split(" "), "-").toLowerCase();
    }

    public static boolean isEmpty(String str) {
        return org.apache.commons.lang.StringUtils.isEmpty(str);
    }

    public static String join(Object[] array, String str) {
        return org.apache.commons.lang.StringUtils.join(array, str);
    }

    public static String join(List<String> list, String str) {
        return org.apache.commons.lang.StringUtils.join(list.toArray(), str);
    }

    public static boolean containsIgnoreCase(String name, String searchString) {
        if (name == null) {
            name = "";
        }
        if (searchString == null) {
            searchString = "";
        }
        return name.toLowerCase().contains(searchString.toLowerCase());
    }

    public static String encode(String value) {
        try {
            return URLEncoder.encode(value, (String) ResourceUtils.getProperty("app.encoding"));
        } catch (Exception e) {
            return value;
        }
    }

    public static String decode(String value) {
        try {
            return URLDecoder.decode(value, (String) ResourceUtils.getProperty("app.encoding"));
        } catch (Exception e) {
            return value;
        }
    }

    public static String escape(String value) {
        try {
            return StringEscapeUtils.escapeHtml(value);
        } catch (Exception e) {
            return value;
        }
    }

    public static String unescape(String value) {
        try {
            return StringEscapeUtils.unescapeHtml(value);
        } catch (Exception e) {
            return value;
        }
    }

    public static String decorate(String str, Map<String, String> values) {
        return decorate(str, values, false);
    }

    public static String decorate(String str, Map<String, String> values, boolean preserve) {
        Matcher m = Pattern.compile("\\$\\{[^}]*\\}").matcher(str);
        while (m.find()) {
            String key = m.group().replaceAll("^\\$\\{|\\}$", "");
            String value = values.get(key);
            if (value == null) {
                if (preserve) {
                    continue;
                } else {
                    value = "";
                }
            }
            str = str.replaceAll("\\$\\{" + key + "\\}", Matcher.quoteReplacement(value));
        }
        return str;
    }

    public static String decorate(String str, Properties values) {
        Matcher m = Pattern.compile("\\$\\{[^}]*\\}").matcher(str);
        while (m.find()) {
            String key = m.group().replaceAll("^\\$\\{|\\}$", "");
            Object value = values.get(key);
            if (value != null) {
                str = str.replaceAll("\\$\\{" + key + "\\}", Matcher.quoteReplacement(value.toString()));
            }
        }
        return str;
    }

}