package se.unlogic.standardutils.string;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.lang.reflect.Field;
import java.net.MalformedURLException;
import java.net.URL;
import java.util.Arrays;
import java.util.Collection;
import java.util.List;
import java.util.UUID;
import se.unlogic.standardutils.reflection.ReflectionUtils;
public class StringUtils {
public static boolean isValidUUID(String uuidstring){
try {
UUID.fromString(uuidstring);
return true;
} catch (IllegalArgumentException e) {
return false;
}
}
public static boolean isValidURL(String urlstring){
try {
new URL(urlstring);
return true;
} catch (MalformedURLException e) {
return false;
}
}
public static String toQuotedCommaSeparatedString(List<? extends Object> list){
String arrayString = Arrays.deepToString(list.toArray());
arrayString = arrayString.substring(1,arrayString.length()-1);
arrayString = "\"" + arrayString.replaceAll(", ","\", \"") + "\"";
return arrayString;
}
public static String toQuotedCommaSeparatedString(Object[] array){
String arrayString = Arrays.deepToString(array);
arrayString = arrayString.substring(1,arrayString.length()-1);
arrayString = "\"" + arrayString.replaceAll(", ","\", \"") + "\"";
return arrayString;
}
public static String toCommaSeparatedString(Collection<? extends Object> list){
String arrayString = Arrays.deepToString(list.toArray());
return arrayString.substring(1,arrayString.length()-1);
}
public static String toCommaSeparatedString(Object[] array){
String arrayString = Arrays.deepToString(array);
return arrayString.substring(1,arrayString.length()-1);
}
public static String toCommaSeparatedString(List<? extends Object> list, Field field) throws IllegalArgumentException, IllegalAccessException{
ReflectionUtils.fixFieldAccess(field);
StringBuilder arrayString = new StringBuilder();
for(int i = 0; i < list.size(); i++){
Object value = field.get(list.get(i));
arrayString.append(value + ",");
}
return arrayString.substring(0, arrayString.length()-1);
}
public static String readFileAsString(String filePath) throws java.io.IOException{
StringBuffer fileData = new StringBuffer(1000);
BufferedReader reader = new BufferedReader(new FileReader(filePath));
char[] buf = new char[1024];
int numRead=0;
while((numRead=reader.read(buf)) != -1){
fileData.append(buf, 0, numRead);
}
reader.close();
return fileData.toString();
}
public static String readFileAsString(File file) throws java.io.IOException{
StringBuffer fileData = new StringBuffer(1000);
BufferedReader reader = new BufferedReader(new FileReader(file));
char[] buf = new char[1024];
int numRead=0;
while((numRead=reader.read(buf)) != -1){
fileData.append(buf, 0, numRead);
}
reader.close();
return fileData.toString();
}
public static String readStreamAsString(InputStream inputStream) throws java.io.IOException{
StringBuffer fileData = new StringBuffer(1000);
BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream));
char[] buf = new char[1024];
int numRead=0;
while((numRead=reader.read(buf)) != -1){
fileData.append(buf, 0, numRead);
}
reader.close();
return fileData.toString();
}
public static boolean isEmpty(String string){
if(string == null){
return true;
}else if(string.trim().length() == 0){
return true;
}else{
return false;
}
}
public static String toAsciiFilename(String string){
return string.replaceAll("[^0-9a-zA-Z-.]", "_");
}
public static String toValidHttpFilename(String string){
return string.replaceAll("[^0-9a-�A-�-+. ()-+!@�&%$�=�]", "_");
}
public static String substring(String string, int maxChars, String suffix) {
if (string.length() > maxChars) {
return string.substring(0, maxChars - 1) + suffix;
}
return string;
}
public static String toSentenceCase(String string) {
return string.substring(0, 1).toUpperCase() + string.toLowerCase().substring(1);
}
public static String toFirstLetterUppercase(String string) {
return string.substring(0, 1).toUpperCase() + string.substring(1);
}
public static String repeatString(String string, int repetitionCount) {
if(repetitionCount >= 1){
StringBuilder stringBuilder = new StringBuilder();
for(int i=1; i <= repetitionCount; i++){
stringBuilder.append(string);
}
return stringBuilder.toString();
}else{
return "";
}
}
}