package org.radargun.config; import java.util.Locale; /** * Regrettably, conversion is not always reversible: "ASDFooBar" -> "asd-foo-bar" -> "AsdFooBar" * * @author Radim Vansa <rvansa@redhat.com> */ public final class XmlHelper { private XmlHelper() {} public static String dashToCamelCase(String name, boolean firstLetterUpper) { int currIndex = 0, dashIndex; StringBuilder camelName = new StringBuilder(name.length()); if (firstLetterUpper && !name.isEmpty()) { camelName.append(String.valueOf(name.charAt(0)).toUpperCase(Locale.ENGLISH)); currIndex = 1; } while (currIndex < name.length() && (dashIndex = name.indexOf('-', currIndex)) >= 0) { camelName.append(name.substring(currIndex, dashIndex)); if (dashIndex + 1 < name.length()) { camelName.append(String.valueOf(name.charAt(dashIndex + 1)).toUpperCase(Locale.ENGLISH)); } currIndex = dashIndex + 2; } if (currIndex < name.length()) { camelName.append(name.substring(currIndex)); } return camelName.toString(); } public static String camelCaseToDash(String string) { StringBuilder sb = new StringBuilder(2 * string.length()); boolean prevLowerCase = false, prevIsAlpha = false; for (int i = 0; i < string.length(); ++i) { boolean nextLowerCase = i < string.length() - 1 ? Character.isLowerCase(string.charAt(i + 1)) : false; char c = string.charAt(i); if (Character.isUpperCase(c)) { if ((prevLowerCase || nextLowerCase) && prevIsAlpha) sb.append('-'); sb.append(String.valueOf(c).toLowerCase(Locale.ENGLISH)); } else if (c == '.') { sb.append('-'); } else { sb.append(c); } prevLowerCase = Character.isLowerCase(c); prevIsAlpha = Character.isAlphabetic(c); } return sb.toString(); } }