Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

refactor: extract a new class from Strings #68

Open
wants to merge 1 commit into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@

package org.jfaster.mango.binding;

import org.jfaster.mango.util.ManipulateStringNames;
import org.jfaster.mango.util.Objects;
import org.jfaster.mango.util.Strings;
import org.jfaster.mango.util.jdbc.JdbcType;
Expand Down Expand Up @@ -61,7 +62,7 @@ public JdbcType getJdbcType() {
}

public String getFullName() {
return Strings.getFullName(parameterName, propertyName);
return ManipulateStringNames.getFullName(parameterName, propertyName);
}

public boolean hasProperty() {
Expand Down
3 changes: 2 additions & 1 deletion src/main/java/org/jfaster/mango/crud/CrudMeta.java
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@
package org.jfaster.mango.crud;

import org.jfaster.mango.annotation.*;
import org.jfaster.mango.util.ManipulateStringNames;
import org.jfaster.mango.util.Strings;
import org.jfaster.mango.util.bean.BeanUtil;
import org.jfaster.mango.util.bean.PropertyMeta;
Expand Down Expand Up @@ -68,7 +69,7 @@ public CrudMeta(Class<?> clazz) {
Column colAnno = propertyMeta.getPropertyAnno(Column.class);
String col = colAnno != null ?
colAnno.value() :
Strings.underscoreName(prop);
ManipulateStringNames.underscoreName(prop);
props.add(prop);
cols.add(col);
propToColMap.put(prop, col);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@

package org.jfaster.mango.crud.named.parser;

import org.jfaster.mango.util.ManipulateStringNames;
import org.jfaster.mango.util.Strings;

import javax.annotation.Nullable;
Expand Down Expand Up @@ -51,7 +52,7 @@ public static MethodNameInfo parse(String str) {
int index = 0;
while (m.find()) {
opUnits.add(OpUnit.create(str.substring(index, m.start())));
logics.add(Strings.firstLetterToLowerCase(m.group()));
logics.add(ManipulateStringNames.firstLetterToLowerCase(m.group()));
index = m.end();
}
opUnits.add(OpUnit.create(str.substring(index)));
Expand All @@ -63,7 +64,7 @@ static OrderUnit parseOrderUnit(String str) {
Pattern p = Pattern.compile(ORDER_BY_REGEX);
Matcher m = p.matcher(str);
if (m.find()) {
String tailStr = Strings.firstLetterToLowerCase(str.substring(m.end() - 1));
String tailStr = ManipulateStringNames.firstLetterToLowerCase(str.substring(m.end() - 1));
int size = ORDER_BY.length() + tailStr.length();
String property;
OrderType orderType;
Expand Down
5 changes: 3 additions & 2 deletions src/main/java/org/jfaster/mango/crud/named/parser/OpUnit.java
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@
package org.jfaster.mango.crud.named.parser;

import org.jfaster.mango.crud.named.parser.op.*;
import org.jfaster.mango.util.ManipulateStringNames;
import org.jfaster.mango.util.Strings;

import java.util.ArrayList;
Expand Down Expand Up @@ -53,12 +54,12 @@ private OpUnit(String str) {
for (Op op : OPS) {
if (str.endsWith(op.keyword())) {
this.op = op;
this.property = Strings.firstLetterToLowerCase(str.substring(0, str.length() - op.keyword().length()));
this.property = ManipulateStringNames.firstLetterToLowerCase(str.substring(0, str.length() - op.keyword().length()));
return;
}
}
this.op = new EqualsOp();
this.property = Strings.firstLetterToLowerCase(str);
this.property = ManipulateStringNames.firstLetterToLowerCase(str);
}

public static OpUnit create(String str) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@
import org.jfaster.mango.invoker.TransferableInvoker;
import org.jfaster.mango.type.TypeHandler;
import org.jfaster.mango.type.TypeHandlerRegistry;
import org.jfaster.mango.util.ManipulateStringNames;
import org.jfaster.mango.util.PropertyTokenizer;
import org.jfaster.mango.util.Strings;
import org.jfaster.mango.util.jdbc.ResultSetWrapper;
Expand Down Expand Up @@ -78,7 +79,7 @@ void initialize(Class<T> mappedClass, Map<String, String> propertyToColumnMap, b
invokerMap.put(column.toLowerCase(), invoker);
} else { // 使用约定映射
invokerMap.put(invoker.getName().toLowerCase(), invoker);
String underscoredName = Strings.underscoreName(invoker.getName());
String underscoredName = ManipulateStringNames.underscoreName(invoker.getName());
if (!invoker.getName().toLowerCase().equals(underscoredName)) {
invokerMap.put(underscoredName, invoker);
}
Expand Down
36 changes: 36 additions & 0 deletions src/main/java/org/jfaster/mango/util/ManipulateStringNames.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
package org.jfaster.mango.util;

public class ManipulateStringNames {
private ManipulateStringNames() {
}

public static String getFullName(String name, String path) {
return ":" + (Strings.isNotEmpty(path) ? name + "." + path : name);
}

public static String underscoreName(String name) {
if (Strings.isEmpty(name)) {
return "";
}
StringBuilder result = new StringBuilder();
result.append(name.substring(0, 1).toLowerCase());
for (int i = 1; i < name.length(); i++) {
String s = name.substring(i, i + 1);
String slc = s.toLowerCase();
if (!s.equals(slc)) {
result.append("_").append(slc);
} else {
result.append(s);
}
}
return result.toString();
}

public static String firstLetterToLowerCase(String str) {
return str.substring(0, 1).toLowerCase() + str.substring(1);
}

public static String firstLetterToUpperCase(String str) {
return str.substring(0, 1).toUpperCase() + str.substring(1);
}
}
30 changes: 0 additions & 30 deletions src/main/java/org/jfaster/mango/util/Strings.java
Original file line number Diff line number Diff line change
Expand Up @@ -36,34 +36,4 @@ public static String emptyToNull(@Nullable String string) {
return isEmpty(string) ? null : string;
}

public static String getFullName(String name, String path) {
return ":" + (Strings.isNotEmpty(path) ? name + "." + path : name);
}

public static String underscoreName(String name) {
if (Strings.isEmpty(name)) {
return "";
}
StringBuilder result = new StringBuilder();
result.append(name.substring(0, 1).toLowerCase());
for (int i = 1; i < name.length(); i++) {
String s = name.substring(i, i + 1);
String slc = s.toLowerCase();
if (!s.equals(slc)) {
result.append("_").append(slc);
} else {
result.append(s);
}
}
return result.toString();
}

public static String firstLetterToLowerCase(String str) {
return str.substring(0, 1).toLowerCase() + str.substring(1);
}

public static String firstLetterToUpperCase(String str) {
return str.substring(0, 1).toUpperCase() + str.substring(1);
}

}
3 changes: 2 additions & 1 deletion src/main/java/org/jfaster/mango/util/bean/BeanUtil.java
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@
package org.jfaster.mango.util.bean;

import org.jfaster.mango.exception.UncheckedException;
import org.jfaster.mango.util.ManipulateStringNames;
import org.jfaster.mango.util.Strings;
import org.jfaster.mango.util.local.CacheLoader;
import org.jfaster.mango.util.local.DoubleCheckCache;
Expand Down Expand Up @@ -61,7 +62,7 @@ public List<PropertyMeta> load(Class<?> clazz) {
Type type = readMethod.getGenericReturnType(); // 和writeMethod的type相同
Field field = tryGetField(readMethod.getDeclaringClass(), name);
if (isBoolean(pd.getPropertyType()) && field == null) {
String bname = "is" + Strings.firstLetterToUpperCase(name);
String bname = "is" + ManipulateStringNames.firstLetterToUpperCase(name);
field = tryGetField(clazz, bname);
if (field != null) {
name = bname; // 使用isXxYy替换xxYy
Expand Down
5 changes: 3 additions & 2 deletions src/test/java/org/jfaster/mango/util/bean/BeanUtilTest.java
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@
import com.google.common.collect.Sets;
import org.jfaster.mango.annotation.Column;
import org.jfaster.mango.annotation.ID;
import org.jfaster.mango.util.ManipulateStringNames;
import org.jfaster.mango.util.Strings;
import org.junit.Test;

Expand Down Expand Up @@ -64,8 +65,8 @@ public void fetchPropertyMetas2() throws Exception {
}

private PropertyMeta getPropertyMeta(Class<?> clazz, String property, Class<?> type) throws NoSuchMethodException {
String readMethodName = "get" + Strings.firstLetterToUpperCase(property);
String writeMethodName = "set" + Strings.firstLetterToUpperCase(property);
String readMethodName = "get" + ManipulateStringNames.firstLetterToUpperCase(property);
String writeMethodName = "set" + ManipulateStringNames.firstLetterToUpperCase(property);
Method readMethod = clazz.getMethod(readMethodName);
Method writeMethod = clazz.getMethod(writeMethodName, type);
Field f = tryGetField(clazz, property);
Expand Down