package hu.sztaki.ilab.longneck.util;
import java.util.ArrayList;
import java.util.List;
import org.apache.log4j.Logger;
/**
*
* @author Molnár Péter <molnarp@sztaki.mta.hu>
*/
public class LongneckStringUtils {
public static String implode(String glue, List<String> haystack) {
return implode(glue, haystack, false);
}
public static String implode(String glue, List<String> haystack, boolean skipEmptyStrings) {
StringBuilder sb = new StringBuilder();
int len = haystack.size();
int added = 0;
for (int i = 0; i < len; ++i) {
try {
String value = haystack.get(i);
if (value != null && ! "".equals(value)) {
// Check if there is a previous element
if (added > 0) {
sb.append(glue);
}
// Add current element and increment added
sb.append(value);
++added;
} else if (! skipEmptyStrings) {
sb.append(glue);
}
} catch (NullPointerException ex) {
Logger.getLogger(LongneckStringUtils.class.getName()).warn(
String.format("Implode: source field %1$s is undefined or null.",
haystack.get(i)));
}
}
return sb.toString();
}
public static String getEnumList(List<? extends Enum> classes) {
List<String> strClasses = new ArrayList<String>(classes.size());
for (int i = 0; i < classes.size(); ++i) {
strClasses.add(classes.get(i).toString());
}
return LongneckStringUtils.implode(", ", strClasses);
}
public static String camelCaseToUnderscore(String in) {
StringBuilder sb = new StringBuilder();
for (int i = 0; i < in.length(); ++i) {
if (Character.isLetter(in.charAt(i)) && Character.isUpperCase(in.charAt(i))) {
sb.append('_');
sb.append(Character.toLowerCase(in.charAt(i)));
} else {
sb.append(in.charAt(i));
}
}
return sb.toString();
}
public static String underscoreToCamelCase(String in) {
StringBuilder sb = new StringBuilder();
boolean previousIsUnderscore = false;
for (int i = 0; i < in.length(); ++i) {
if (in.charAt(i) == '_') {
previousIsUnderscore = true;
} else {
if (previousIsUnderscore && Character.isLetter(in.charAt(i))) {
sb.append(Character.toUpperCase(in.charAt(i)));
} else {
sb.append(in.charAt(i));
}
previousIsUnderscore = false;
}
}
return sb.toString();
}
}