diff --git a/core-database/pom.xml b/core-database/pom.xml index 281d980..9c15186 100644 --- a/core-database/pom.xml +++ b/core-database/pom.xml @@ -5,7 +5,7 @@ netdisk-fast-download cn.qaiu - 0.1.7 + ${revision} 4.0.0 @@ -23,7 +23,6 @@ cn.qaiu core - 1.0.8 diff --git a/core-database/src/main/java/cn/qaiu/db/ddl/CreateTable.java b/core-database/src/main/java/cn/qaiu/db/ddl/CreateTable.java index 093cbc4..2b4b5f7 100644 --- a/core-database/src/main/java/cn/qaiu/db/ddl/CreateTable.java +++ b/core-database/src/main/java/cn/qaiu/db/ddl/CreateTable.java @@ -1,5 +1,6 @@ package cn.qaiu.db.ddl; +import cn.qaiu.db.pool.JDBCType; import cn.qaiu.vx.core.util.ReflectionUtil; import io.vertx.codegen.format.CamelCase; import io.vertx.codegen.format.Case; @@ -65,7 +66,9 @@ public class CreateTable { } } - public static String getCreateTableSQL(Class clz) { + public static String getCreateTableSQL(Class clz, JDBCType type) { + String quotationMarks = type == JDBCType.H2DB ? "\"" : "`"; + String endStr = type == JDBCType.H2DB ? ");" : ")ENGINE=InnoDB DEFAULT CHARSET=utf8;"; // 判断类上是否有次注解 String primaryKey = null; // 主键 String tableName = null; // 表名 @@ -93,7 +96,7 @@ public class CreateTable { int[] decimalSize = {22, 2}; int varcharSize = 255; StringBuilder sb = new StringBuilder(50); - sb.append("CREATE TABLE IF NOT EXISTS \"").append(tableName).append("\" ( \r\n "); + sb.append("CREATE TABLE IF NOT EXISTS ").append(quotationMarks).append(tableName).append(quotationMarks).append(" ( \r\n "); boolean firstId = true; for (Field f : fields) { Class paramType = f.getType(); @@ -114,7 +117,7 @@ public class CreateTable { decimalSize = fieldAnnotation.decimalSize(); varcharSize = fieldAnnotation.varcharSize(); } - sb.append("\"").append(column).append("\""); + sb.append(quotationMarks).append(column).append(quotationMarks); sb.append(" ").append(sqlType); // 添加类型长度 if (sqlType.equals("DECIMAL")) { @@ -155,17 +158,20 @@ public class CreateTable { //去掉最后一个逗号 int lastIndex = sql.lastIndexOf(","); sql = sql.substring(0, lastIndex) + sql.substring(lastIndex + 1); - return sql.substring(0, sql.length() - 1) + ");\r\n"; + return sql.substring(0, sql.length() - 1) + endStr; } - public static void createTable(JDBCPool pool) { + public static void createTable(JDBCPool pool, JDBCType type) { Set> tableClassList = ReflectionUtil.getReflections().getTypesAnnotatedWith(Table.class); if (tableClassList.isEmpty()) LOGGER.info("Table model class not fount"); tableClassList.forEach(clazz -> { - String createTableSQL = getCreateTableSQL(clazz); + String createTableSQL = getCreateTableSQL(clazz, type); + pool.query(createTableSQL).execute().onSuccess( - rs -> LOGGER.info("\n" + createTableSQL + "create table --> ok") - ).onFailure(Throwable::printStackTrace); + rs -> LOGGER.info("table auto generate:\n" + createTableSQL) + ).onFailure(e -> { + LOGGER.error(e.getMessage() + " SQL: \n" + createTableSQL); + }); }); } } diff --git a/core-database/src/main/java/cn/qaiu/db/pool/JDBCPoolInit.java b/core-database/src/main/java/cn/qaiu/db/pool/JDBCPoolInit.java index 23cca8c..a82fac7 100644 --- a/core-database/src/main/java/cn/qaiu/db/pool/JDBCPoolInit.java +++ b/core-database/src/main/java/cn/qaiu/db/pool/JDBCPoolInit.java @@ -1,20 +1,13 @@ package cn.qaiu.db.pool; import cn.qaiu.db.ddl.CreateTable; -import cn.qaiu.db.server.H2ServerHolder; import cn.qaiu.vx.core.util.VertxHolder; -import io.vertx.core.Promise; import io.vertx.core.Vertx; import io.vertx.core.json.JsonObject; import io.vertx.jdbcclient.JDBCPool; -import org.h2.tools.Server; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import java.io.File; -import java.io.IOException; -import java.sql.SQLException; - /** * 初始化JDBC *
Create date 2021/8/10 12:04 @@ -28,12 +21,14 @@ public class JDBCPoolInit { JsonObject dbConfig; Vertx vertx = VertxHolder.getVertxInstance(); String url; + private JDBCType type; private static JDBCPoolInit instance; public JDBCPoolInit(Builder builder) { this.dbConfig = builder.dbConfig; this.url = builder.url; + this.type = builder.type; } public static Builder builder() { @@ -47,10 +42,12 @@ public class JDBCPoolInit { public static class Builder { private JsonObject dbConfig; private String url; + private JDBCType type; public Builder config(JsonObject dbConfig) { this.dbConfig = dbConfig; this.url = dbConfig.getString("jdbcUrl"); + this.type = JDBCUtil.getJDBCType(dbConfig.getString("driverClassName")); return this; } @@ -73,67 +70,16 @@ public class JDBCPoolInit { return; } - // 异步启动H2服务 - vertx.createSharedWorkerExecutor("h2-server", 1, Long.MAX_VALUE) - .executeBlocking(this::h2serverExecute) - .onSuccess(res->{ - LOGGER.info(res); - // 初始化数据库连接 - vertx.createSharedWorkerExecutor("sql-pool-init") - .executeBlocking(this::poolInitExecute) - .onSuccess(LOGGER::info) - .onFailure(Throwable::printStackTrace); + // 初始化数据库连接 + vertx.createSharedWorkerExecutor("sql-pool-init") + .executeBlocking(() -> { + // 初始化连接池 + pool = JDBCPool.pool(vertx, dbConfig); + CreateTable.createTable(pool, type); + return "数据库连接初始化: URL=" + url; }) + .onSuccess(LOGGER::info) .onFailure(Throwable::printStackTrace); - - - } - - private void poolInitExecute(Promise promise) { - // 初始化连接池 - pool = JDBCPool.pool(vertx, dbConfig); - CreateTable.createTable(pool); - promise.complete("init jdbc pool success"); - - } - - private void checkOrCreateDBFile() { - LOGGER.info("init sql start"); - String[] path = url.split("\\./"); - path[1] = path[1].split(";")[0]; - path[1] += ".mv.db"; - File file = new File(path[1]); - if (!file.exists()) { - if (!file.getParentFile().exists()) { - if (file.getParentFile().mkdirs()) { - LOGGER.info("mkdirs -> {}", file.getParentFile().getAbsolutePath()); - } - } - try { - if (file.createNewFile()) { - LOGGER.info("create file -> {}", file.getAbsolutePath()); - } - } catch (IOException e) { - LOGGER.error(e.getMessage()); - throw new RuntimeException("file create failed"); - } - } - } - - private void h2serverExecute(Promise promise) { - // 初始化H2db, 创建本地db文件 - checkOrCreateDBFile(); - - try { - String url = dbConfig.getString("jdbcUrl"); - String[] portStr = url.split(":"); - String port = portStr[portStr.length - 1].split("[/\\\\]")[0]; - LOGGER.info("H2server listen port to {}", port); - H2ServerHolder.init(Server.createTcpServer("-tcp", "-tcpAllowOthers", "-tcpPort", port).start()); - promise.complete("Start h2Server success"); - } catch (SQLException e) { - throw new RuntimeException("Start h2Server failed: " + e.getMessage()); - } } /** diff --git a/core/pom.xml b/core/pom.xml index 0c6fb90..ccb07bb 100644 --- a/core/pom.xml +++ b/core/pom.xml @@ -5,28 +5,15 @@ netdisk-fast-download cn.qaiu - 0.1.7 + ${revision} 4.0.0 - 1.0.8 core UTF-8 - - - - io.vertx - vertx-dependencies - ${vertx.version} - pom - import - - - - @@ -73,11 +60,13 @@ commons-lang3 ${commons-lang3.version} + - commons-beanutils - commons-beanutils - 1.9.4 + com.melloware + commons-beanutils2 + ${commons-beanutils2.version} + com.fasterxml.jackson.core jackson-databind diff --git a/core/src/main/java/cn/qaiu/vx/core/util/CommonUtil.java b/core/src/main/java/cn/qaiu/vx/core/util/CommonUtil.java index a9142a2..fccfc68 100644 --- a/core/src/main/java/cn/qaiu/vx/core/util/CommonUtil.java +++ b/core/src/main/java/cn/qaiu/vx/core/util/CommonUtil.java @@ -3,8 +3,8 @@ package cn.qaiu.vx.core.util; import cn.qaiu.vx.core.annotaions.HandleSortFilter; import io.vertx.core.buffer.Buffer; import io.vertx.core.json.JsonObject; -import org.apache.commons.beanutils.ConvertUtils; -import org.apache.commons.beanutils.Converter; +import org.apache.commons.beanutils2.ConvertUtils; +import org.apache.commons.beanutils2.Converter; import org.slf4j.Logger; import org.slf4j.LoggerFactory; diff --git a/core/src/main/java/cn/qaiu/vx/core/util/ParamUtil.java b/core/src/main/java/cn/qaiu/vx/core/util/ParamUtil.java index 13ee131..60f8975 100644 --- a/core/src/main/java/cn/qaiu/vx/core/util/ParamUtil.java +++ b/core/src/main/java/cn/qaiu/vx/core/util/ParamUtil.java @@ -1,7 +1,7 @@ package cn.qaiu.vx.core.util; import io.vertx.core.MultiMap; -import org.apache.commons.beanutils.BeanUtils; +import org.apache.commons.beanutils2.BeanUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; diff --git a/core/src/main/java/cn/qaiu/vx/core/util/ReflectionUtil.java b/core/src/main/java/cn/qaiu/vx/core/util/ReflectionUtil.java index 3178c54..65bdd6c 100644 --- a/core/src/main/java/cn/qaiu/vx/core/util/ReflectionUtil.java +++ b/core/src/main/java/cn/qaiu/vx/core/util/ReflectionUtil.java @@ -5,12 +5,13 @@ import javassist.bytecode.AccessFlag; import javassist.bytecode.CodeAttribute; import javassist.bytecode.LocalVariableAttribute; import javassist.bytecode.MethodInfo; -import org.apache.commons.beanutils.ConversionException; import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.time.DateUtils; import org.apache.commons.lang3.tuple.Pair; import org.reflections.Reflections; -import org.reflections.scanners.*; +import org.reflections.scanners.MemberUsageScanner; +import org.reflections.scanners.MethodParameterNamesScanner; +import org.reflections.scanners.Scanners; import org.reflections.util.ClasspathHelper; import org.reflections.util.ConfigurationBuilder; import org.reflections.util.FilterBuilder; @@ -185,10 +186,10 @@ public final class ReflectionUtil { return DateUtils.parseDate(value, fmt); } catch (ParseException e) { e.printStackTrace(); - throw new ConversionException("无法将格式化日期"); + throw new RuntimeException("无法将格式化日期"); } default: - throw new ConversionException("无法将String类型" + value + "转为[" + name + "]"); + throw new RuntimeException("无法将String类型" + value + "转为[" + name + "]"); } } @@ -200,7 +201,7 @@ public final class ReflectionUtil { * @return Array */ public static Object conversionArray(CtClass ctClass, String value) { - if (!isBasicTypeArray(ctClass)) throw new ConversionException("无法解析数组"); + if (!isBasicTypeArray(ctClass)) throw new RuntimeException("无法解析数组"); String[] strArr = value.split(","); List obj = new ArrayList<>(); Arrays.stream(strArr).forEach(v -> obj.add(conversion(ctClass, v, null))); diff --git a/parser/pom.xml b/parser/pom.xml index abebf36..765f548 100644 --- a/parser/pom.xml +++ b/parser/pom.xml @@ -2,13 +2,12 @@ + 4.0.0 netdisk-fast-download cn.qaiu - 0.1.7 + ${revision} - 4.0.0 - parser diff --git a/pom.xml b/pom.xml index 190129d..34484b4 100644 --- a/pom.xml +++ b/pom.xml @@ -7,7 +7,7 @@ cn.qaiu netdisk-fast-download pom - 0.1.7 + ${revision} core @@ -17,6 +17,7 @@ + 0.1.7 17 17 17 @@ -30,10 +31,40 @@ 1.18.12 2.0.5 3.12.0 + 2.0.0 2.14.2 1.4.12 + + + + io.vertx + vertx-dependencies + ${vertx.version} + pom + import + + + + cn.qaiu + core + ${revision} + + + + cn.qaiu + core-database + ${revision} + + + cn.qaiu + parser + ${revision} + + + + diff --git a/web-service/pom.xml b/web-service/pom.xml index f1ebe58..d6cfffb 100644 --- a/web-service/pom.xml +++ b/web-service/pom.xml @@ -5,10 +5,9 @@ netdisk-fast-download cn.qaiu - 0.1.7 + ${revision} 4.0.0 - 0.1.7 web-service @@ -22,7 +21,14 @@ cn.qaiu core - 1.0.8 + + + cn.qaiu + core-database + + + cn.qaiu + parser org.projectlombok @@ -47,16 +53,6 @@ slf4j-api ${slf4j.version} - - cn.qaiu - core-database - 0.1.7 - - - cn.qaiu - parser - 0.1.7 - junit junit diff --git a/web-service/src/main/resources/app-dev.yml b/web-service/src/main/resources/app-dev.yml index 4cdf968..577ed07 100644 --- a/web-service/src/main/resources/app-dev.yml +++ b/web-service/src/main/resources/app-dev.yml @@ -35,7 +35,7 @@ custom: # 数据源配置 dataSource: provider_class: io.vertx.ext.jdbc.spi.impl.HikariCPDataSourceProvider - jdbcUrl: jdbc:h2:tcp://127.0.0.1:9095/./db/myData;MODE=MySQL;DATABASE_TO_UPPER=FALSE + jdbcUrl: jdbc:h2:file:./db/nfdData;MODE=MySQL;DATABASE_TO_UPPER=FALSE driverClassName: org.h2.Driver username: root password: '123456' diff --git a/web-service/src/main/resources/http-tools/test.http b/web-service/src/main/resources/http-tools/test.http index cd713ea..07d1fd5 100644 --- a/web-service/src/main/resources/http-tools/test.http +++ b/web-service/src/main/resources/http-tools/test.http @@ -83,14 +83,10 @@ GET http://127.0.0.1:6400/parser?url=https://share.feijipan.com/s/nMtCOXL ### 小飞机盘 https://share.feijipan.com/s/laUshYGk # @no-redirect GET http://127.0.0.1:6400/parser?url=https://share.feijipan.com/s/laUshYGk -### 小飞机盘 +### 小飞机盘 tIfhRqH GET http://127.0.0.1:6400/json/fj/tIfhRqH ### 小飞机盘 https://share.feijipan.com/s/7jy0zlv GET http://127.0.0.1:6400/json/fj/7jy0zlv - -### 小飞机盘 -# @no-redirect -GET http://127.0.0.1:6400/fj/tIfhRqH ### 小飞机盘 https://share.feijipan.com/s/nMtCOXL # @no-redirect GET http://127.0.0.1:6400/fj/nMtCOXL diff --git a/web-service/src/test/java/cn/qaiu/web/test/Test01.java b/web-service/src/test/java/cn/qaiu/web/test/Test01.java index 8e50cf1..15460b2 100644 --- a/web-service/src/test/java/cn/qaiu/web/test/Test01.java +++ b/web-service/src/test/java/cn/qaiu/web/test/Test01.java @@ -1,9 +1,9 @@ package cn.qaiu.web.test; import io.vertx.ext.web.RoutingContext; -import org.apache.commons.beanutils.BeanUtils; -import org.apache.commons.beanutils.ConvertUtils; -import org.apache.commons.beanutils.Converter; +import org.apache.commons.beanutils2.BeanUtils; +import org.apache.commons.beanutils2.ConvertUtils; +import org.apache.commons.beanutils2.Converter; import org.apache.commons.lang3.time.DateFormatUtils; import org.apache.commons.lang3.time.DateUtils; import org.junit.Test;