1 package com.atlassian.plugins.codegen.util;
2
3 import org.apache.commons.lang.StringUtils;
4
5
6
7
8 public class ClassnameUtil
9 {
10 public static String camelCaseToSpaced(String s)
11 {
12 return s.replaceAll(
13 String.format("%s|%s|%s",
14 "(?<=[A-Z])(?=[A-Z][a-z])",
15 "(?<=[^A-Z])(?=[A-Z])",
16 "(?<=[A-Za-z])(?=[^A-Za-z])"
17 ),
18 " "
19 );
20 }
21
22 public static String camelCaseToDashed(String s)
23 {
24 return s.replaceAll(
25 String.format("%s|%s|%s",
26 "(?<=[A-Z])(?=[A-Z][a-z])",
27 "(?<=[^A-Z])(?=[A-Z])",
28 "(?<=[A-Za-z])(?=[^A-Za-z])"
29 ),
30 "-"
31 );
32 }
33
34 public static String removeSpaces(String s)
35 {
36 return s.replaceAll("[\\s]", "");
37 }
38
39 public static String camelCaseOrSpaceToDashed(String s)
40 {
41 String trimmed = s.replaceAll("[\\s]", "");
42
43 String dashed = trimmed.replaceAll(
44 String.format("%s|%s|%s",
45 "(?<=[A-Z])(?=[A-Z][a-z])",
46 "(?<=[^A-Z])(?=[A-Z])",
47 "(?<=[A-Za-z])(?=[^A-Za-z])"
48 ),
49 "-"
50 );
51
52 return dashed;
53 }
54
55 public static String fullyQualifiedName(String packageName, String className)
56 {
57 String fqName = "";
58 String packagePrefix = "";
59 if (StringUtils.isNotBlank(packageName))
60 {
61 packagePrefix = packageName.endsWith(".") ? packageName : packageName + ".";
62 }
63
64 if (StringUtils.isNotBlank(className))
65 {
66 fqName = packagePrefix + className;
67 }
68
69 return fqName;
70 }
71
72 public static boolean isValidClassName(String s)
73 {
74 if (s.length() < 1)
75 {
76 return false;
77 }
78 if (s.equals("package-info"))
79 {
80 return false;
81 }
82 int cp = s.codePointAt(0);
83 if (!Character.isJavaIdentifierStart(cp))
84 {
85 return false;
86 }
87 for (int j = Character.charCount(cp); j < s.length(); j += Character.charCount(cp))
88 {
89 cp = s.codePointAt(j);
90 if (!Character.isJavaIdentifierPart(cp))
91 {
92 return false;
93 }
94 }
95
96 return true;
97 }
98
99 public static boolean isValidPackageName(String s)
100 {
101 int index;
102 while ((index = s.indexOf('.')) != -1)
103 {
104 if (!isValidClassName(s.substring(0, index)))
105 {
106 return false;
107 }
108 s = s.substring(index + 1);
109 }
110 return isValidClassName(s);
111 }
112 }