From a3c93766df4039e0e9a1e1ccd80da9ac8b983048 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Cl=C3=A9ment=20Fournier?= Date: Sat, 7 Apr 2018 17:38:59 +0200 Subject: [PATCH] Move toCamelCase to StringUtil --- .../net/sourceforge/pmd/util/StringUtil.java | 28 +++++++++++++++++++ .../codestyle/ClassNamingConventionsRule.java | 20 ++----------- 2 files changed, 30 insertions(+), 18 deletions(-) diff --git a/pmd-core/src/main/java/net/sourceforge/pmd/util/StringUtil.java b/pmd-core/src/main/java/net/sourceforge/pmd/util/StringUtil.java index 9a254412d7..6acfcf8e47 100644 --- a/pmd-core/src/main/java/net/sourceforge/pmd/util/StringUtil.java +++ b/pmd-core/src/main/java/net/sourceforge/pmd/util/StringUtil.java @@ -603,4 +603,32 @@ public final class StringUtil { public static String[] getEmptyStrings() { return EMPTY_STRINGS; } + + + /** + * Converts the given string to Camel case, + * that is, removing all spaces, and capitalising + * the first letter of each word except the first. + * + *

If the first word starts with an uppercase + * letter, it's kept as is. This method can thus + * be used for Pascal case too. + * + * @param name The string to convert + * + * @return The string converted to Camel case + */ + public static String toCamelCase(String name) { + StringBuilder sb = new StringBuilder(); + boolean isFirst = true; + for (String word : name.trim().split("\\s++")) { + if (isFirst) { + sb.append(word); + isFirst = false; + } else { + sb.append(StringUtils.capitalize(word)); + } + } + return sb.toString(); + } } diff --git a/pmd-java/src/main/java/net/sourceforge/pmd/lang/java/rule/codestyle/ClassNamingConventionsRule.java b/pmd-java/src/main/java/net/sourceforge/pmd/lang/java/rule/codestyle/ClassNamingConventionsRule.java index cf906ecfa2..c0a841ff76 100644 --- a/pmd-java/src/main/java/net/sourceforge/pmd/lang/java/rule/codestyle/ClassNamingConventionsRule.java +++ b/pmd-java/src/main/java/net/sourceforge/pmd/lang/java/rule/codestyle/ClassNamingConventionsRule.java @@ -6,8 +6,6 @@ package net.sourceforge.pmd.lang.java.rule.codestyle; import java.util.regex.Pattern; -import org.apache.commons.lang3.StringUtils; - import net.sourceforge.pmd.lang.java.ast.ASTAnnotationTypeDeclaration; import net.sourceforge.pmd.lang.java.ast.ASTAnyTypeBodyDeclaration; import net.sourceforge.pmd.lang.java.ast.ASTAnyTypeDeclaration; @@ -19,6 +17,7 @@ import net.sourceforge.pmd.lang.java.rule.AbstractJavaRule; import net.sourceforge.pmd.properties.PropertyDescriptor; import net.sourceforge.pmd.properties.RegexProperty; import net.sourceforge.pmd.properties.RegexProperty.RegexPBuilder; +import net.sourceforge.pmd.util.StringUtil; /** @@ -119,23 +118,8 @@ public class ClassNamingConventionsRule extends AbstractJavaRule { } - private static String toCamelCase(String name) { - StringBuilder sb = new StringBuilder(); - boolean isFirst = true; - for (String word : name.trim().split("\\s++")) { - if (isFirst) { - sb.append(word); - isFirst = false; - } else { - sb.append(StringUtils.capitalize(word)); - } - } - return sb.toString(); - } - - private static RegexPBuilder defaultProp(String name) { - return RegexProperty.named(toCamelCase(name) + "Pattern") + return RegexProperty.named(StringUtil.toCamelCase(name) + "Pattern") .desc("Regex which applies to " + name.trim() + " names") .defaultValue("[A-Z][a-zA-Z]+");