com.cmsz.cloudplatform.utils.StringUtils.java Source code

Java tutorial

Introduction

Here is the source code for com.cmsz.cloudplatform.utils.StringUtils.java

Source

// Licensed to the Apache Software Foundation (ASF) under one
// or more contributor license agreements.  See the NOTICE file
// distributed with this work for additional information
// regarding copyright ownership.  The ASF licenses this file
// to you under the Apache License, Version 2.0 (the
// "License"); you may not use this file except in compliance
// 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.cmsz.cloudplatform.utils;

import java.math.BigDecimal;
import java.math.RoundingMode;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import java.util.regex.Pattern;

import net.sf.json.JSONObject;

import org.owasp.esapi.StringUtilities;

import com.hp.util.StringUtil;

public class StringUtils {
    private static final char[] hexChar = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D',
            'E', 'F' };

    public static String join(Iterable<? extends Object> iterable, String delim) {
        StringBuilder sb = new StringBuilder();
        if (iterable != null) {
            Iterator<? extends Object> iter = iterable.iterator();
            if (iter.hasNext()) {
                Object next = iter.next();
                sb.append(next.toString());
            }
            while (iter.hasNext()) {
                Object next = iter.next();
                sb.append(delim + next.toString());
            }
        }
        return sb.toString();
    }

    public static String join(final String delimiter, final Object... components) {
        return org.apache.commons.lang.StringUtils.join(components, delimiter);
    }

    public static boolean isNotBlank(String str) {
        if (str != null && str.trim().length() > 0) {
            return true;
        }

        return false;
    }

    /**
     * @param tags
     * @return List of tags
     */

    public static List<String> csvTagsToList(String tags) {
        List<String> tagsList = new ArrayList<String>();

        if (tags != null) {
            String[] tokens = tags.split(",");
            for (int i = 0; i < tokens.length; i++) {
                tagsList.add(tokens[i].trim());
            }
        }

        return tagsList;
    }

    /**
     * Converts a List of tags to a comma separated list
     * 
     * @param tags
     * @return String containing a comma separated list of tags
     */

    public static String listToCsvTags(List<String> tagsList) {
        String tags = "";
        if (tagsList.size() > 0) {
            for (int i = 0; i < tagsList.size(); i++) {
                tags += tagsList.get(i);
                if (i != tagsList.size() - 1) {
                    tags += ",";
                }
            }
        }

        return tags;
    }

    public static String getExceptionStackInfo(Throwable e) {
        StringBuffer sb = new StringBuffer();

        sb.append(e.toString()).append("\n");
        StackTraceElement[] elemnents = e.getStackTrace();
        for (StackTraceElement element : elemnents) {
            sb.append(element.getClassName()).append(".");
            sb.append(element.getMethodName()).append("(");
            sb.append(element.getFileName()).append(":");
            sb.append(element.getLineNumber()).append(")");
            sb.append("\n");
        }

        return sb.toString();
    }

    public static String unicodeEscape(String s) {
        StringBuilder sb = new StringBuilder();
        for (int i = 0; i < s.length(); i++) {
            char c = s.charAt(i);
            if ((c >> 7) > 0) {
                sb.append("\\u");
                sb.append(hexChar[(c >> 12) & 0xF]); // append the hex character
                // for the left-most
                // 4-bits
                sb.append(hexChar[(c >> 8) & 0xF]); // hex for the second group
                // of 4-bits from the left
                sb.append(hexChar[(c >> 4) & 0xF]); // hex for the third group
                sb.append(hexChar[c & 0xF]); // hex for the last group, e.g.,
                // the right most 4-bits
            } else {
                sb.append(c);
            }
        }
        return sb.toString();
    }

    public static String getMaskedPasswordForDisplay(String password) {
        if (password == null || password.isEmpty()) {
            return "*";
        }

        StringBuffer sb = new StringBuffer();
        sb.append(password.charAt(0));
        for (int i = 1; i < password.length(); i++) {
            sb.append("*");
        }

        return sb.toString();
    }

    // removes a password request param and it's value
    private static final Pattern REGEX_PASSWORD_QUERYSTRING = Pattern
            .compile("&?(password|accesskey|secretkey)=.*?(?=[&'\"])");

    // removes a password/accesskey/ property from a response json object
    private static final Pattern REGEX_PASSWORD_JSON = Pattern
            .compile("\"(password|accesskey|secretkey)\":\".*?\",?");

    // Responsible for stripping sensitive content from request and response
    // strings
    public static String cleanString(String stringToClean) {
        String cleanResult = "";
        if (stringToClean != null) {
            cleanResult = REGEX_PASSWORD_QUERYSTRING.matcher(stringToClean).replaceAll("");
            cleanResult = REGEX_PASSWORD_JSON.matcher(cleanResult).replaceAll("");
        }
        return cleanResult;
    }

    public static String stripControlCharacters(String s) {
        return StringUtilities.stripControls(s);
    }

    public static int formatForOutput(String text, int start, int columns, char separator) {
        if (start >= text.length()) {
            return -1;
        }

        int end = start + columns;
        if (end > text.length()) {
            end = text.length();
        }
        String searchable = text.substring(start, end);
        int found = searchable.lastIndexOf(separator);
        return found > 0 ? found : end - start;
    }

    // jsobj.getString(HOST_ID) != null ? jsobj.getString(HOST_ID) : null
    public static String getJsonString(JSONObject jsonObj, String key) {
        try {
            return jsonObj.getString(key) != null ? jsonObj.getString(key) : null;
        } catch (Exception e) {
            return null;
        }
    }

    public static String convertBytes(String bytes) {
        if (StringUtil.isNullString(bytes)) {
            return null;
        }

        // NumberFormat format = new DecimalFormat("##0.00");
        BigDecimal _1024 = new BigDecimal(1024);
        BigDecimal value = new BigDecimal(bytes);

        if (value.compareTo(_1024) == -1) {
            return value.divide(new BigDecimal(1), 2, RoundingMode.HALF_UP) + " KB";
        } else if (value.compareTo(_1024.multiply(_1024)) == -1) {
            return value.divide(_1024, 2, RoundingMode.HALF_UP) + " MB";
        } else if (value.compareTo(_1024.multiply(_1024).multiply(_1024)) == -1) {
            return value.divide(_1024).divide(_1024, 2, RoundingMode.HALF_UP) + " GB";
        } else {
            return value.divide(_1024).divide(_1024).divide(_1024, 2, RoundingMode.HALF_UP) + " TB";
        }
    }

    public static String convertHz(String hz) {
        if (StringUtil.isNullString(hz)) {
            return null;
        }

        // NumberFormat format = new DecimalFormat("##0.00");
        BigDecimal _1000 = new BigDecimal(1000);
        BigDecimal value = new BigDecimal(hz);

        if (value.compareTo(_1000) == -1) {
            return value + " MHz";
        } else {
            return value.divide(_1000, 2, RoundingMode.HALF_UP) + " GHz";
        }
    }
}