/*
* oxAuth is available under the MIT License (2008). See http://opensource.org/licenses/MIT for full text.
*
* Copyright (c) 2014, Gluu
*/
package org.xdi.oxauth.model.util;
import org.codehaus.jettison.json.JSONArray;
import org.codehaus.jettison.json.JSONException;
import org.xdi.oxauth.model.common.HasParamName;
import java.io.UnsupportedEncodingException;
import java.net.URLEncoder;
import java.text.SimpleDateFormat;
import java.util.*;
import static org.apache.commons.lang.StringUtils.isNotBlank;
/**
* @author Javier Rojas Blum
* @version November 30, 2016
*/
public class StringUtils {
public static final String EMPTY_STRING = "";
public static final String SPACE = " ";
public static String nullToEmpty(String str) {
if (str == null) {
return EMPTY_STRING;
} else {
return str;
}
}
public static boolean equals(String str1, String str2) {
if (str1 == null && str2 == null) {
return true;
} else if (str1 == null && str2 != null) {//note: str2!=null is always NOT null, see previous 'if' statement*/
return false;
} else if (str1 != null && str2 == null) { //note: str1!=null is ALWAYS true
return false;
} else {
return str1 != null && str1.equals(str2);
}
}
/**
* Method to join array elements of type string
*
* @param inputArray Array which contains strings
* @param glueString String between each array element
* @return String containing all array elements separated by glue string.
*/
public static String implode(String[] inputArray, String glueString) {
String output = EMPTY_STRING;
if (inputArray != null && inputArray.length > 0) {
StringBuilder sb = new StringBuilder();
sb.append(inputArray[0]);
for (int i = 1; i < inputArray.length; i++) {
sb.append(glueString);
sb.append(inputArray[i]);
}
output = sb.toString();
}
return output;
}
/**
* Method to join a list of elements of type string
*
* @param inputList List which contains strings
* @param glueString String between each array element
* @return String containing all array elements separated by glue string.
*/
public static String implode(List inputList, String glueString) {
String output = EMPTY_STRING;
if (inputList != null && !inputList.isEmpty()) {
StringBuilder sb = new StringBuilder();
sb.append(inputList.get(0));
for (int i = 1; i < inputList.size(); i++) {
sb.append(glueString);
sb.append(inputList.get(i));
}
output = sb.toString();
}
return output;
}
public static String implodeEnum(List<? extends HasParamName> inputList, String glueString) {
String output = EMPTY_STRING;
if (inputList != null && !inputList.isEmpty()) {
StringBuilder sb = new StringBuilder();
sb.append(inputList.get(0));
for (int i = 1; i < inputList.size(); i++) {
sb.append(glueString);
sb.append(inputList.get(i).getParamName());
}
output = sb.toString();
}
return output;
}
public static List<String> spaceSeparatedToList(String spaceSeparatedString) {
List<String> list = new ArrayList<String>();
if (isNotBlank(spaceSeparatedString)) {
list = Arrays.asList(spaceSeparatedString.split(StringUtils.SPACE));
}
return list;
}
public static JSONArray toJSONArray(List inputList) {
JSONArray jsonArray = new JSONArray();
if (inputList != null && !inputList.isEmpty()) {
jsonArray = new JSONArray(inputList);
}
return jsonArray;
}
public static List<String> toList(JSONArray jsonArray) throws JSONException {
List<String> list = new ArrayList<String>();
if (jsonArray != null) {
for (int i = 0; i < jsonArray.length(); i++) {
list.add(jsonArray.getString(i));
}
}
return list;
}
public static Date parseSilently(String p_string) {
try {
SimpleDateFormat parser = new SimpleDateFormat("EEE MMM d HH:mm:ss zzz yyyy");
return parser.parse(p_string);
} catch (Exception e) {
return null;
}
}
public static void addQueryStringParam(StringBuilder p_queryStringBuilder, String key, Object value) throws UnsupportedEncodingException {
if (p_queryStringBuilder != null && isNotBlank(key) && value != null) {
if (p_queryStringBuilder.toString().length() > 0) {
p_queryStringBuilder.append("&");
}
p_queryStringBuilder.append(key).append("=")
.append(URLEncoder.encode(value.toString(), Util.UTF8_STRING_ENCODING));
}
}
public static void addQueryStringParam(StringBuilder p_queryStringBuilder, String key, Collection value) throws UnsupportedEncodingException {
if (p_queryStringBuilder != null && isNotBlank(key) && value != null && !value.isEmpty()) {
if (p_queryStringBuilder.toString().length() > 0) {
p_queryStringBuilder.append("&");
}
p_queryStringBuilder.append(key).append("=")
.append(URLEncoder.encode(value.toString(), Util.UTF8_STRING_ENCODING));
}
}
}