package com.revolsys.util;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Iterator;
import java.util.List;
public final class CaseConverter {
public static final String LOWER_CAMEL_CASE_RE = "";
public static String captialize(final String text) {
final char firstChar = text.charAt(0);
return Character.toUpperCase(firstChar) + text.substring(1).toLowerCase();
}
public static List<String> splitWords(final String text) {
if (text == null) {
return Collections.emptyList();
} else {
final int length = text.length();
if (length == 0) {
return Collections.emptyList();
} else {
final List<String> list = new ArrayList<>();
int currentType = Character.getType(text.charAt(0));
int tokenStart = 0;
for (int pos = tokenStart + 1; pos < length; pos++) {
final char character = text.charAt(pos);
final boolean separator = Character.isWhitespace(character) || character == '_';
final int type = Character.getType(character);
if (type == currentType) {
if (separator) {
tokenStart = pos + 1;
} else {
continue;
}
} else if (separator) {
if (tokenStart < pos) {
list.add(text.substring(tokenStart, pos));
}
tokenStart = pos + 1;
} else if (type == Character.LOWERCASE_LETTER
&& currentType == Character.UPPERCASE_LETTER) {
final int newTokenStart = pos - 1;
if (newTokenStart != tokenStart) {
if (tokenStart < newTokenStart) {
list.add(text.substring(tokenStart, newTokenStart));
}
tokenStart = newTokenStart;
}
} else {
if (tokenStart != pos) {
list.add(text.substring(tokenStart, pos));
}
tokenStart = pos;
}
currentType = type;
}
if (tokenStart < length) {
final String lastWord = text.substring(tokenStart);
list.add(lastWord);
}
return list;
}
}
}
public static String toCapitalizedWords(final String text) {
final List<String> words = splitWords(text);
final StringBuilder result = new StringBuilder();
for (final Iterator<String> iter = words.iterator(); iter.hasNext();) {
final String word = iter.next();
result.append(captialize(word));
if (iter.hasNext()) {
result.append(" ");
}
}
return result.toString();
}
public static String toLowerCamelCase(final String text) {
final List<String> words = splitWords(text);
if (words.size() == 0) {
return "";
} else if (words.size() == 1) {
return words.get(0).toLowerCase();
} else {
final StringBuilder result = new StringBuilder();
final Iterator<String> iter = words.iterator();
result.append(iter.next().toLowerCase());
while (iter.hasNext()) {
final String word = iter.next();
result.append(captialize(word));
}
return result.toString();
}
}
public static String toLowerFirstChar(final String text) {
if (text.length() > 0) {
final char c = text.charAt(0);
return Character.toLowerCase(c) + text.substring(1);
} else {
return text;
}
}
public static String toLowerUnderscore(final String text) {
final List<String> words = splitWords(text);
final StringBuilder result = new StringBuilder();
for (final Iterator<String> iter = words.iterator(); iter.hasNext();) {
final String word = iter.next();
result.append(word.toLowerCase());
if (iter.hasNext()) {
result.append("_");
}
}
return result.toString();
}
public static String toSentence(final String text) {
final List<String> words = splitWords(text);
if (words.size() == 0) {
return "";
} else if (words.size() == 1) {
return captialize(words.get(0));
} else {
final StringBuilder result = new StringBuilder();
final Iterator<String> iter = words.iterator();
result.append(captialize(iter.next()));
while (iter.hasNext()) {
final String word = iter.next();
result.append(word.toLowerCase());
if (iter.hasNext()) {
result.append(" ");
}
}
return result.toString();
}
}
public static String toUpperCamelCase(final String text) {
final List<String> words = splitWords(text);
final StringBuilder result = new StringBuilder();
for (final String word : words) {
result.append(captialize(word));
}
return result.toString();
}
public static String toUpperFirstChar(final String text) {
if (text.length() > 0) {
final char c = text.charAt(0);
return Character.toUpperCase(c) + text.substring(1);
} else {
return text;
}
}
public static String toUpperUnderscore(final String text) {
final List<String> words = splitWords(text);
final StringBuilder result = new StringBuilder();
for (final Iterator<String> iter = words.iterator(); iter.hasNext();) {
final String word = iter.next();
result.append(word.toUpperCase());
if (iter.hasNext()) {
result.append("_");
}
}
return result.toString();
}
private CaseConverter() {
}
}