/** * Returns the class name for the given logical name and trailing name. For example "person" and "Controller" would evaluate to "PersonController" * * @param logicalName The logical name * @param trailingName The trailing name * @return The class name */ public static String getClassName(String logicalName, String trailingName) { if (isBlank(logicalName)) { throw new IllegalArgumentException("Argument [logicalName] cannot be null or blank"); } String className = logicalName.substring(0,1).toUpperCase(Locale.ENGLISH) + logicalName.substring(1); if (trailingName != null) { className = className + trailingName; } return className; }
public static String getLogicalPropertyName(String className, String trailingName) { if (!isBlank(className) && !isBlank(trailingName)) { if (className.length() == trailingName.length() + 1 && className.endsWith(trailingName)) { return className.substring(0, 1).toLowerCase(); } } return getLogicalName(getPropertyName(className), trailingName); }
/** * Test whether the given name is a valid Java identifier * * @param name The name * @return True if it is */ public static boolean isValidJavaIdentifier(String name) { if(isBlank(name)) return false; final char[] chars = name.toCharArray(); if(!Character.isJavaIdentifierStart(chars[0])) { return false; } for (char c : chars) { if(!Character.isJavaIdentifierPart(c)) { return false; } } return true; } /**
/** * Retrieves the logical name of the class without the trailing name * @param name The name of the class * @param trailingName The trailing name * @return The logical name */ public static String getLogicalName(String name, String trailingName) { if (isBlank(trailingName)) { return name; } String shortName = getShortName(name); if (shortName.indexOf(trailingName) == - 1) { return name; } return shortName.substring(0, shortName.length() - trailingName.length()); }
/** * Test whether the give package name is a valid Java package * * @param packageName The name of the package * @return True if it is valid */ public static boolean isValidJavaPackage(String packageName) { if(isBlank(packageName)) return false; final String[] parts = packageName.split("\\."); for (String part : parts) { if(!isValidJavaIdentifier(part)) { return false; } } return true; } /**
/** * Converts foo-bar into FooBar. Empty and null strings are returned as-is. * * @param name The lower case hyphen separated name * @return The class name equivalent. */ private static String getClassNameForLowerCaseHyphenSeparatedName(String name) { // Handle null and empty strings. if (isBlank(name)) return name; if (name.indexOf('-') == -1) { return name.substring(0,1).toUpperCase() + name.substring(1); } StringBuilder buf = new StringBuilder(); String[] tokens = name.split("-"); for (String token : tokens) { if (token == null || token.length() == 0) continue; buf.append(token.substring(0, 1).toUpperCase()) .append(token.substring(1)); } return buf.toString(); }