diff --git a/rxlib-x/pom.xml b/rxlib-x/pom.xml
index 84bc1198..a29899aa 100644
--- a/rxlib-x/pom.xml
+++ b/rxlib-x/pom.xml
@@ -16,6 +16,7 @@
8
UTF-8
1.18.30
+ 5.1.49
@@ -27,7 +28,7 @@
mysql
mysql-connector-java
- 5.1.49
+ ${mysql.version}
com.zaxxer
diff --git a/rxlib/src/main/java/org/rx/bean/DataRow.java b/rxlib/src/main/java/org/rx/bean/DataRow.java
index b50c86fe..d35af20a 100644
--- a/rxlib/src/main/java/org/rx/bean/DataRow.java
+++ b/rxlib/src/main/java/org/rx/bean/DataRow.java
@@ -55,16 +55,16 @@ public T get(int ordinal) {
return get(table.getColumn(ordinal));
}
- public void set(int ordinal, Object item) {
- set(table.getColumn(ordinal), item);
+ public void set(int ordinal, Object cell) {
+ set(table.getColumn(ordinal), cell);
}
public T get(String columnName) {
return get(table.getColumn(columnName));
}
- public void set(String columnName, Object item) {
- set(table.getColumn(columnName), item);
+ public void set(String columnName, Object cell) {
+ set(table.getColumn(columnName), cell);
}
public T get(@NonNull DataColumn column) {
@@ -76,16 +76,16 @@ public T get(@NonNull DataColumn column) {
return (T) items.get(column.ordinal);
}
- public void set(@NonNull DataColumn column, T item) {
+ public void set(@NonNull DataColumn column, T cell) {
require(column, column.getTable() == table);
- if (column.dataType != null && !Reflects.isInstance(item, column.dataType)) {
+ if (column.dataType != null && !Reflects.isInstance(cell, column.dataType)) {
throw new InvalidException("Item type error");
}
if (column.ordinal < items.size()) {
- items.set(column.ordinal, item);
+ items.set(column.ordinal, cell);
} else {
- items.add(column.ordinal, item);
+ items.add(column.ordinal, cell);
}
}
}
diff --git a/rxlib/src/main/java/org/rx/bean/DataTable.java b/rxlib/src/main/java/org/rx/bean/DataTable.java
index dbf3093a..ccd207dc 100644
--- a/rxlib/src/main/java/org/rx/bean/DataTable.java
+++ b/rxlib/src/main/java/org/rx/bean/DataTable.java
@@ -182,8 +182,8 @@ public List toList(@NonNull Type type) {
return list;
}
- public DataRow addRow(Object... items) {
- DataRow row = newRow(items);
+ public DataRow addRow(Object... cells) {
+ DataRow row = newRow(cells);
rows.add(row);
return row;
}
@@ -201,10 +201,10 @@ public DataRow removeRow(DataRow row) {
return row;
}
- public DataRow newRow(Object... items) {
+ public DataRow newRow(Object... cells) {
DataRow row = new DataRow(this);
- if (!Arrays.isEmpty(items)) {
- row.setArray(items);
+ if (!Arrays.isEmpty(cells)) {
+ row.setArray(cells);
}
return row;
}
@@ -236,7 +236,7 @@ public DataColumn getColumn(int ordinal) {
}
public DataColumn getColumn(String columnName) {
- return Linq.from(columns).first(p -> eq(p.columnName, columnName));
+ return Linq.from(columns).first(p -> Strings.hashEquals(p.columnName, columnName));
}
void setOrdinal(DataColumn column, int ordinal) {
diff --git a/rxlib/src/main/java/org/rx/core/StringBuilder.java b/rxlib/src/main/java/org/rx/core/StringBuilder.java
index 2e18d8d6..7e2a7efa 100644
--- a/rxlib/src/main/java/org/rx/core/StringBuilder.java
+++ b/rxlib/src/main/java/org/rx/core/StringBuilder.java
@@ -5,8 +5,8 @@
import lombok.SneakyThrows;
import org.rx.util.function.TripleAction;
-import java.io.IOException;
import java.io.Serializable;
+import java.text.MessageFormat;
@Getter
public final class StringBuilder implements Appendable, CharSequence, Serializable {
@@ -172,10 +172,6 @@ public StringBuilder append(String str) {
return this;
}
- public StringBuilder append(String format, Object... args) {
- return append(String.format(format, args));
- }
-
@Override
public StringBuilder append(CharSequence csq, int start, int end) {
buffer.append(csq, start, end);
@@ -224,6 +220,15 @@ public StringBuilder appendLine(Object obj) {
return appendLine();
}
+ public StringBuilder appendFormat(String format, Object... args) {
+ return append(String.format(format, args));
+ }
+
+ public StringBuilder appendMessageFormat(String format, Object... args) {
+ buffer.append(MessageFormat.format(format, args));
+ return this;
+ }
+
public StringBuilder appendLine(String format, Object... args) {
return appendLine(String.format(format, args));
}
diff --git a/rxlib/src/main/java/org/rx/core/Strings.java b/rxlib/src/main/java/org/rx/core/Strings.java
index f59f0cc5..ed56e2b3 100644
--- a/rxlib/src/main/java/org/rx/core/Strings.java
+++ b/rxlib/src/main/java/org/rx/core/Strings.java
@@ -217,6 +217,30 @@ public static int compareVersion(@NonNull String version1, @NonNull String versi
return 0;
}
+ public static boolean isStrongPwd(String input) {
+ //^(?=.*\d)(?=.*[a-z])(?=.*[A-Z]).{8,16}
+ //^(?=.*\d)(?=.*[a-z])(?=.*[A-Z])[a-zA-Z0-9~!@#$%^&*]{8,16}$
+ int len = input.length();
+ if (len < 8) {
+ return false;
+ }
+ int strength = 0, f = 1 | 2 | 4;
+ for (int i = 0; i < len; i++) {
+ char c = input.charAt(i);
+ if (Character.isLowerCase(c)) {
+ strength |= 1;
+ } else if (Character.isUpperCase(c)) {
+ strength |= 2;
+ } else if (Character.isDigit(c)) {
+ strength |= 4;
+ }
+ if ((strength & f) == f) {
+ return true;
+ }
+ }
+ return false;
+ }
+
public static String maskPrivacy(String str) {
if (isEmpty(str)) {
return EMPTY;
diff --git a/rxlib/src/main/java/org/rx/core/Sys.java b/rxlib/src/main/java/org/rx/core/Sys.java
index 5284dc93..e197d551 100644
--- a/rxlib/src/main/java/org/rx/core/Sys.java
+++ b/rxlib/src/main/java/org/rx/core/Sys.java
@@ -13,13 +13,11 @@
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.collections4.IterableUtils;
-import org.apache.commons.collections4.ListUtils;
import org.apache.commons.lang3.SystemUtils;
import org.rx.annotation.Subscribe;
import org.rx.bean.DynamicProxyBean;
import org.rx.bean.LogStrategy;
import org.rx.bean.ProceedEventArgs;
-import org.rx.bean.Tuple;
import org.rx.codec.CodecUtil;
import org.rx.exception.InvalidException;
import org.rx.exception.TraceHandler;
@@ -402,7 +400,7 @@ public static void log(@NonNull ProceedEventArgs eventArgs, @NonNull BiAction conf.getErrorMessageSize()) {
queue.poll();
}
- queue.offer(String.format("%s\t%s\nMDC:\t%s", DateTime.now().toDateTimeString(), msg, Sys.getMDCCtxMap()));
+ StringBuilder b = new StringBuilder();
+ b.appendMessageFormat("{}\t{}", DateTime.now().toDateTimeString(), msg);
+ Map ctxMap = Sys.getMDCCtxMap();
+ if (!ctxMap.isEmpty()) {
+ b.appendMessageFormat("\nMDC:\t{}", ctxMap);
+ }
+ queue.offer(b.toString());
entity.occurCount++;
entity.setAppName(RxConfig.INSTANCE.getId());
entity.setThreadName(t.getName());
diff --git a/rxlib/src/main/java/org/rx/io/EntityDatabaseImpl.java b/rxlib/src/main/java/org/rx/io/EntityDatabaseImpl.java
index 8db224e6..3064e30f 100644
--- a/rxlib/src/main/java/org/rx/io/EntityDatabaseImpl.java
+++ b/rxlib/src/main/java/org/rx/io/EntityDatabaseImpl.java
@@ -256,7 +256,7 @@ public void save(T entity, boolean doInsert) {
continue;
}
- cols.append("`%s`=?,", col.getKey());
+ cols.appendFormat("`%s`=?,", col.getKey());
params.add(val);
}
cols.setLength(cols.length() - 1);
@@ -301,7 +301,7 @@ public long delete(EntityQueryLambda query) {
List