mxd 4 лет назад
Родитель
Сommit
60ac46fe3a

+ 9 - 0
src/main/java/org/ssssssss/magicapi/adapter/ColumnMapperAdapter.java

@@ -2,6 +2,7 @@ package org.ssssssss.magicapi.adapter;
 
 import org.springframework.jdbc.core.RowMapper;
 import org.ssssssss.magicapi.provider.ColumnMapperProvider;
+import org.ssssssss.magicapi.provider.impl.*;
 
 import java.util.HashMap;
 import java.util.Map;
@@ -17,6 +18,14 @@ public class ColumnMapperAdapter {
 
 	private Function<String, String> rowMapColumnMapper;
 
+	public ColumnMapperAdapter() {
+		setDefault(new DefaultColumnMapperProvider());
+		add(new CamelColumnMapperProvider());
+		add(new PascalColumnMapperProvider());
+		add(new LowerColumnMapperProvider());
+		add(new UpperColumnMapperProvider());
+	}
+
 	public void add(ColumnMapperProvider columnMapperProvider) {
 		columnMapRowMappers.put(columnMapperProvider.name(), columnMapperProvider.getColumnMapRowMapper());
 		rowMapColumnMappers.put(columnMapperProvider.name(), columnMapperProvider.getRowMapColumnMapper());

+ 12 - 1
src/main/java/org/ssssssss/magicapi/adapter/DialectAdapter.java

@@ -2,7 +2,7 @@ package org.ssssssss.magicapi.adapter;
 
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
-import org.ssssssss.magicapi.dialect.Dialect;
+import org.ssssssss.magicapi.dialect.*;
 
 import java.util.ArrayList;
 import java.util.List;
@@ -20,6 +20,17 @@ public class DialectAdapter {
 	 */
 	private Map<String, Dialect> dialectMap = new ConcurrentHashMap<>();
 
+	public DialectAdapter() {
+		add(new MySQLDialect());
+		add(new OracleDialect());
+		add(new PostgreSQLDialect());
+		add(new ClickhouseDialect());
+		add(new DB2Dialect());
+		add(new SQLServerDialect());
+		add(new SQLServer2005Dialect());
+		add(new DmDialect());
+	}
+
 	public void add(Dialect dialect){
 		this.dialectList.add(dialect);
 	}

+ 2 - 2
src/main/java/org/ssssssss/magicapi/adapter/ResourceAdapter.java

@@ -20,7 +20,7 @@ public abstract class ResourceAdapter {
 
 	public static final String SPRING_BOOT_CLASS_PATH = "BOOT-INF/classes/";
 
-	public static Resource getResource(String location) throws IOException {
+	public static Resource getResource(String location,boolean readonly) throws IOException {
 		if (location == null) {
 			return null;
 		}
@@ -38,7 +38,7 @@ public abstract class ResourceAdapter {
 				resource = resolver.getResource(ResourceUtils.FILE_URL_PREFIX + location);
 			}
 		}
-		return resolveResource(resource, false);
+		return resolveResource(resource, readonly);
 	}
 
 	private static Resource resolveResource(org.springframework.core.io.Resource resource, boolean readonly) throws IOException {

+ 8 - 25
src/main/java/org/ssssssss/magicapi/adapter/resource/DatabaseResource.java

@@ -14,24 +14,12 @@ public class DatabaseResource extends KeyValueResource {
 
 	private final String tableName;
 
-	public DatabaseResource(JdbcTemplate template, String tableName, String separator, String path, KeyValueResource parent) {
-		super(separator, path, parent);
+	public DatabaseResource(JdbcTemplate template, String tableName, String separator, String path, boolean readonly, KeyValueResource parent) {
+		super(separator, path, readonly, parent);
 		this.template = template;
 		this.tableName = tableName;
 	}
 
-	public DatabaseResource(JdbcTemplate template, String tableName, String separator, String path) {
-		this(template, tableName, separator, path, null);
-	}
-
-	public DatabaseResource(JdbcTemplate template, String tableName, String path) {
-		this(template, tableName, "/", path);
-	}
-
-	public DatabaseResource(JdbcTemplate template, String tableName) {
-		this(template, tableName, "/magic-api");
-	}
-
 	@Override
 	public byte[] read() {
 		String sql = String.format("select file_content from %s where file_path = ?", tableName);
@@ -49,18 +37,13 @@ public class DatabaseResource extends KeyValueResource {
 	@Override
 	public boolean write(String content) {
 		String sql = String.format("update %s set file_content = ? where file_path = ?", tableName);
-		if(exists()){
-			return template.update(sql, content,this.path) >= 0;
+		if (exists()) {
+			return template.update(sql, content, this.path) >= 0;
 		}
 		sql = String.format("insert into %s (file_path,file_content) values(?,?)", tableName);
 		return template.update(sql, this.path, content) > 0;
 	}
 
-	@Override
-	public Resource getResource(String name) {
-		return new DatabaseResource(template, tableName, separator, (isDirectory() ? this.path : this.path + separator) + name, this);
-	}
-
 	@Override
 	public Set<String> keys() {
 		String sql = String.format("select file_path from %s where file_path like '%s%%'", tableName, isDirectory() ? this.path : (this.path + separator));
@@ -71,18 +54,18 @@ public class DatabaseResource extends KeyValueResource {
 	public boolean renameTo(Map<String, String> renameKeys) {
 		List<Object[]> args = renameKeys.entrySet().stream().map(entry -> new Object[]{entry.getValue(), entry.getKey()}).collect(Collectors.toList());
 		String sql = String.format("update %s set file_path = ? where file_path = ?", tableName);
-		return Arrays.stream(template.batchUpdate(sql,args)).sum() > 0;
+		return Arrays.stream(template.batchUpdate(sql, args)).sum() > 0;
 	}
 
 	@Override
 	public boolean delete() {
-		String sql = String.format("delete from %s where file_path = ? or file_path like '%s%%'",tableName, isDirectory() ? this.path : this.path + separator);
-		return template.update(sql,this.path) > 0;
+		String sql = String.format("delete from %s where file_path = ? or file_path like '%s%%'", tableName, isDirectory() ? this.path : this.path + separator);
+		return template.update(sql, this.path) > 0;
 	}
 
 	@Override
 	public Function<String, Resource> mappedFunction() {
-		return it -> new DatabaseResource(template, tableName, separator, it, this);
+		return it -> new DatabaseResource(template, tableName, separator, it, readonly, this);
 	}
 
 	@Override

+ 15 - 0
src/main/java/org/ssssssss/magicapi/adapter/resource/KeyValueResource.java

@@ -15,12 +15,21 @@ public abstract class KeyValueResource implements Resource {
 
 	protected KeyValueResource parent;
 
+	protected boolean readonly = false;
+
 	public KeyValueResource(String separator, String path, KeyValueResource parent) {
 		this.separator = separator;
 		this.path = path;
 		this.parent = parent;
 	}
 
+	public KeyValueResource(String separator, String path, boolean readonly, KeyValueResource parent) {
+		this.separator = separator;
+		this.path = path;
+		this.parent = parent;
+		this.readonly = readonly;
+	}
+
 	@Override
 	public boolean isDirectory() {
 		return this.path.endsWith(separator);
@@ -68,6 +77,12 @@ public abstract class KeyValueResource implements Resource {
 		return index > -1 ? name.substring(index + 1) : name;
 	}
 
+	@Override
+	public Resource getResource(String name) {
+		name = (isDirectory() ? this.path : this.path + separator) + name;
+		return mappedFunction().apply(name);
+	}
+
 	@Override
 	public Resource getDirectory(String name) {
 		return getResource(name + separator);

+ 5 - 14
src/main/java/org/ssssssss/magicapi/adapter/resource/RedisResource.java

@@ -22,17 +22,13 @@ public class RedisResource extends KeyValueResource {
 
 	private static final Logger logger = LoggerFactory.getLogger(RedisResource.class);
 
-	public RedisResource(StringRedisTemplate redisTemplate, String path, RedisResource parent) {
-		this(redisTemplate, path, ":", parent);
-	}
-
-	public RedisResource(StringRedisTemplate redisTemplate, String path, String separator, RedisResource parent) {
-		super(separator, path, parent);
+	public RedisResource(StringRedisTemplate redisTemplate, String path, String separator, boolean readonly, RedisResource parent) {
+		super(separator, path, readonly, parent);
 		this.redisTemplate = redisTemplate;
 	}
 
-	public RedisResource(StringRedisTemplate redisTemplate, String path) {
-		this(redisTemplate, path, null);
+	public RedisResource(StringRedisTemplate redisTemplate, String path, String separator, boolean readonly) {
+		this(redisTemplate,path,separator,readonly,null);
 	}
 
 	@Override
@@ -47,11 +43,6 @@ public class RedisResource extends KeyValueResource {
 		return true;
 	}
 
-	@Override
-	public Resource getResource(String name) {
-		return new RedisResource(this.redisTemplate, (isDirectory() ? this.path : this.path + separator) + name, this);
-	}
-
 	@Override
 	protected boolean renameTo(Map<String, String> renameKeys) {
 		renameKeys.forEach(this.redisTemplate::rename);
@@ -71,7 +62,7 @@ public class RedisResource extends KeyValueResource {
 
 	@Override
 	protected Function<String, Resource> mappedFunction() {
-		return (it) -> new RedisResource(this.redisTemplate, it, this);
+		return (it) -> new RedisResource(this.redisTemplate, it, this.separator, readonly, this);
 	}
 
 	@Override

+ 5 - 5
src/main/java/org/ssssssss/magicapi/config/MagicDynamicDataSource.java

@@ -20,9 +20,9 @@ import java.util.Map;
 
 public class MagicDynamicDataSource {
 
-	private static Logger logger = LoggerFactory.getLogger(MagicDynamicDataSource.class);
+	private static final Logger logger = LoggerFactory.getLogger(MagicDynamicDataSource.class);
 
-	private Map<String, MagicDynamicDataSource.DataSourceNode> dataSourceMap = new HashMap<>();
+	private final Map<String, MagicDynamicDataSource.DataSourceNode> dataSourceMap = new HashMap<>();
 
 	/**
 	 * 注册默认数据源
@@ -90,11 +90,11 @@ public class MagicDynamicDataSource {
 		/**
 		 * 事务管理器
 		 */
-		private DataSourceTransactionManager dataSourceTransactionManager;
+		private final DataSourceTransactionManager dataSourceTransactionManager;
 
-		private JdbcTemplate jdbcTemplate;
+		private final JdbcTemplate jdbcTemplate;
 
-		private DataSource dataSource;
+		private final DataSource dataSource;
 
 		private Dialect dialect;
 

+ 3 - 9
src/main/java/org/ssssssss/magicapi/config/MappingHandlerMapping.java

@@ -70,7 +70,7 @@ public class MappingHandlerMapping {
 	/**
 	 * 统一接口前缀
 	 */
-	private String prefix;
+	private final String prefix;
 
 	/**
 	 * 接口分组
@@ -80,21 +80,15 @@ public class MappingHandlerMapping {
 	/**
 	 * 是否覆盖应用接口
 	 */
-	private boolean allowOverride = false;
+	private final boolean allowOverride;
 
 	/**
 	 * 缓存已映射的接口信息
 	 */
 	private final List<ApiInfo> apiInfos = Collections.synchronizedList(new ArrayList<>());
 
-	public MappingHandlerMapping() throws NoSuchMethodException {
-	}
-
-	public void setPrefix(String prefix) {
+	public MappingHandlerMapping(String prefix,boolean allowOverride) throws NoSuchMethodException {
 		this.prefix = prefix;
-	}
-
-	public void setAllowOverride(boolean allowOverride) {
 		this.allowOverride = allowOverride;
 	}