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 params = new ArrayList<>(); appendClause(subSql, query, params); - sql.append(" IN(%s)", subSql); + sql.appendFormat(" IN(%s)", subSql); String execSql = sql.toString(); long total = 0; @@ -489,7 +489,7 @@ public void createMapping(Class... entityTypes) { for (Class entityType : entityTypes) { createCols.setLength(0); String tableName = tableName(entityType); - insert.setLength(0).append("INSERT INTO %s VALUES (", tableName); + insert.setLength(0).appendFormat("INSERT INTO %s VALUES (", tableName); String pkName = null; Map> columns = new LinkedHashMap<>(); @@ -628,7 +628,7 @@ public static DataTable sharding(List queryResults, String querySql) String tableName = template.getTableName(); StringBuilder createCols = new StringBuilder(); StringBuilder insert = new StringBuilder(); - insert.append("INSERT INTO %s VALUES (", tableName); + insert.appendFormat("INSERT INTO %s VALUES (", tableName); int len = template.getColumns().size(); List> colTypes = new ArrayList<>(len); diff --git a/rxlib/src/main/java/org/rx/io/EntityQueryLambda.java b/rxlib/src/main/java/org/rx/io/EntityQueryLambda.java index d004a8b0..af9f3737 100644 --- a/rxlib/src/main/java/org/rx/io/EntityQueryLambda.java +++ b/rxlib/src/main/java/org/rx/io/EntityQueryLambda.java @@ -44,7 +44,7 @@ enum Order { static final String FUNC_RAND = "RAND()"; static void pkClaus(StringBuilder sql, String pk) { - sql.append(WHERE).append(Operator.EQ.format, pk, PARAM_HOLD); + sql.append(WHERE).appendFormat(Operator.EQ.format, pk, PARAM_HOLD); } final Class entityType; @@ -234,7 +234,7 @@ static String resolve(ArrayList> conditio } else { valHold = toValueString(condition.right); } - b.append(op.format, colName, valHold); + b.appendFormat(op.format, colName, valHold); } break; case IN: @@ -250,7 +250,7 @@ static String resolve(ArrayList> conditio } else { valHold = Linq.from((Object[]) condition.right).toJoinString(",", EntityQueryLambda::toValueString); } - b.append(op.format, colName, valHold); + b.appendFormat(op.format, colName, valHold); } break; case BETWEEN: @@ -270,7 +270,7 @@ static String resolve(ArrayList> conditio valHold0 = toValueString(p[0]); valHold1 = toValueString(p[1]); } - b.append(op.format, colName, valHold0, valHold1); + b.appendFormat(op.format, colName, valHold0, valHold1); } break; case AND: @@ -280,7 +280,7 @@ static String resolve(ArrayList> conditio if (!b.isEmpty()) { b.append(OP_AND); } - b.append(op.format, resolve(l, params, null, orderByRand, autoUnderscoreColumnName, limit, offset), r.toString(params)); + b.appendFormat(op.format, resolve(l, params, null, orderByRand, autoUnderscoreColumnName, limit, offset), r.toString(params)); break; } } @@ -291,7 +291,7 @@ static String resolve(ArrayList> conditio b.append(ORDER_BY); for (Tuple, Order> bi : orders) { String colName = resolveColumnName(bi.left, autoUnderscoreColumnName); - b.append("%s %s,", colName, bi.right); + b.appendFormat("%s %s,", colName, bi.right); } b.setLength(b.length() - 1); } @@ -299,7 +299,7 @@ static String resolve(ArrayList> conditio if (limit != null) { b.append(LIMIT); if (offset != null) { - b.append("%s,", offset); + b.appendFormat("%s,", offset); } b.append(limit); // b.append(LIMIT).append(limit); diff --git a/rxlib/src/main/java/org/rx/net/AuthenticEndpoint.java b/rxlib/src/main/java/org/rx/net/AuthenticEndpoint.java index e09113a7..26d74777 100644 --- a/rxlib/src/main/java/org/rx/net/AuthenticEndpoint.java +++ b/rxlib/src/main/java/org/rx/net/AuthenticEndpoint.java @@ -77,9 +77,9 @@ public String toString() { s.append(username); } if (!Strings.isEmpty(password)) { - s.append(":%s", password); + s.appendFormat(":%s", password); } - s.append("@%s", Sockets.toString(endpoint)); + s.appendFormat("@%s", Sockets.toString(endpoint)); if (!MapUtils.isEmpty(parameters)) { s.append(HttpClient.buildUrl(null, (Map) parameters)); } diff --git a/rxlib/src/main/java/org/rx/net/http/RestClient.java b/rxlib/src/main/java/org/rx/net/http/RestClient.java index d2389109..77987710 100644 --- a/rxlib/src/main/java/org/rx/net/http/RestClient.java +++ b/rxlib/src/main/java/org/rx/net/http/RestClient.java @@ -81,7 +81,7 @@ public static T facade(Class contract, String serverPrefixUrl, BiFunc p.remoteEndpoint)) { - buf.append("\t%s", client.getRemoteEndpoint()); + buf.appendFormat("\t%s", client.getRemoteEndpoint()); if (i++ % 3 == 0) { buf.appendLine(); }