feat: sqlserver
This commit is contained in:
parent
4ec3cdb68d
commit
a5dd1e3698
@ -0,0 +1,12 @@
|
|||||||
|
package io.dataease.commons.constants;
|
||||||
|
|
||||||
|
public class DeTypeConstants {
|
||||||
|
|
||||||
|
public final static Integer DE_STRING = 0;
|
||||||
|
public final static Integer DE_TIME = 1;
|
||||||
|
public final static Integer DE_INT = 2;
|
||||||
|
public final static Integer DE_FLOAT = 3;
|
||||||
|
public final static Integer DE_BOOL = 4;
|
||||||
|
public final static Integer DE_Binary = 5;
|
||||||
|
|
||||||
|
}
|
||||||
@ -68,7 +68,6 @@ public class SqlFilter implements Filter {
|
|||||||
}
|
}
|
||||||
br.close();
|
br.close();
|
||||||
} catch (IOException e) {
|
} catch (IOException e) {
|
||||||
System.out.println("IOException: " + e);
|
|
||||||
}
|
}
|
||||||
return str;
|
return str;
|
||||||
|
|
||||||
|
|||||||
@ -32,7 +32,6 @@ public class LicenseController {
|
|||||||
return ResultHolder.success(null);
|
return ResultHolder.success(null);
|
||||||
}
|
}
|
||||||
F2CLicenseResponse f2CLicenseResponse = defaultLicenseService.validateLicense();
|
F2CLicenseResponse f2CLicenseResponse = defaultLicenseService.validateLicense();
|
||||||
System.out.println(new Gson().toJson(f2CLicenseResponse));
|
|
||||||
switch (f2CLicenseResponse.getStatus()) {
|
switch (f2CLicenseResponse.getStatus()) {
|
||||||
case no_record:
|
case no_record:
|
||||||
return ResultHolder.success(f2CLicenseResponse);
|
return ResultHolder.success(f2CLicenseResponse);
|
||||||
|
|||||||
@ -42,25 +42,20 @@ public class JdbcProvider extends DatasourceProvider {
|
|||||||
public List<String[]> getData(DatasourceRequest dsr) throws Exception {
|
public List<String[]> getData(DatasourceRequest dsr) throws Exception {
|
||||||
List<String[]> list = new LinkedList<>();
|
List<String[]> list = new LinkedList<>();
|
||||||
Connection connection = null;
|
Connection connection = null;
|
||||||
connection = getConnectionFromPool(dsr);
|
try {
|
||||||
Statement stat = connection.createStatement();
|
connection = getConnectionFromPool(dsr);
|
||||||
ResultSet rs = stat.executeQuery(dsr.getQuery());
|
Statement stat = connection.createStatement();
|
||||||
System.out.println(rs == null);
|
ResultSet rs = stat.executeQuery(dsr.getQuery());
|
||||||
list = fetchResult(rs);
|
list = fetchResult(rs);
|
||||||
// try {
|
} catch (SQLException e) {
|
||||||
// connection = getConnectionFromPool(dsr);
|
DataEaseException.throwException(e);
|
||||||
// Statement stat = connection.createStatement();
|
} catch (Exception e) {
|
||||||
// ResultSet rs = stat.executeQuery(dsr.getQuery());
|
DataEaseException.throwException(e);
|
||||||
// list = fetchResult(rs);
|
} finally {
|
||||||
// } catch (SQLException e) {
|
if(connection != null){
|
||||||
// DataEaseException.throwException(e);
|
connection.close();
|
||||||
// } catch (Exception e) {
|
}
|
||||||
// DataEaseException.throwException(e);
|
}
|
||||||
// } finally {
|
|
||||||
// if(connection != null){
|
|
||||||
// connection.close();
|
|
||||||
// }
|
|
||||||
// }
|
|
||||||
return list;
|
return list;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -107,12 +102,10 @@ public class JdbcProvider extends DatasourceProvider {
|
|||||||
List<String[]> list = new LinkedList<>();
|
List<String[]> list = new LinkedList<>();
|
||||||
ResultSetMetaData metaData = rs.getMetaData();
|
ResultSetMetaData metaData = rs.getMetaData();
|
||||||
int columnCount = metaData.getColumnCount();
|
int columnCount = metaData.getColumnCount();
|
||||||
System.out.println("columnCount: " + columnCount);
|
|
||||||
while (rs.next()) {
|
while (rs.next()) {
|
||||||
String[] row = new String[columnCount];
|
String[] row = new String[columnCount];
|
||||||
for (int j = 0; j < columnCount; j++) {
|
for (int j = 0; j < columnCount; j++) {
|
||||||
int columType = metaData.getColumnType(j + 1);
|
int columType = metaData.getColumnType(j + 1);
|
||||||
|
|
||||||
switch (columType) {
|
switch (columType) {
|
||||||
case Types.DATE:
|
case Types.DATE:
|
||||||
if(rs.getDate(j + 1) != null){
|
if(rs.getDate(j + 1) != null){
|
||||||
@ -123,7 +116,6 @@ public class JdbcProvider extends DatasourceProvider {
|
|||||||
row[j] = rs.getString(j + 1);
|
row[j] = rs.getString(j + 1);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
System.out.println(j + " " + columType + " " + row[j]);
|
|
||||||
}
|
}
|
||||||
list.add(row);
|
list.add(row);
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1,6 +1,7 @@
|
|||||||
package io.dataease.provider;
|
package io.dataease.provider;
|
||||||
|
|
||||||
import io.dataease.base.domain.DatasetTableField;
|
import io.dataease.base.domain.DatasetTableField;
|
||||||
|
import io.dataease.base.domain.Datasource;
|
||||||
import io.dataease.controller.request.chart.ChartExtFilterRequest;
|
import io.dataease.controller.request.chart.ChartExtFilterRequest;
|
||||||
import io.dataease.dto.chart.ChartCustomFilterDTO;
|
import io.dataease.dto.chart.ChartCustomFilterDTO;
|
||||||
import io.dataease.dto.chart.ChartViewFieldDTO;
|
import io.dataease.dto.chart.ChartViewFieldDTO;
|
||||||
@ -12,17 +13,18 @@ import java.util.List;
|
|||||||
* @Date 2021/5/17 2:42 下午
|
* @Date 2021/5/17 2:42 下午
|
||||||
*/
|
*/
|
||||||
public abstract class QueryProvider {
|
public abstract class QueryProvider {
|
||||||
|
|
||||||
public abstract Integer transFieldType(String field);
|
public abstract Integer transFieldType(String field);
|
||||||
|
|
||||||
public abstract String createSQLPreview(String sql, String orderBy);
|
public abstract String createSQLPreview(String sql, String orderBy);
|
||||||
|
|
||||||
public abstract String createQuerySQL(String table, List<DatasetTableField> fields, boolean isGroup);
|
public abstract String createQuerySQL(String table, List<DatasetTableField> fields, boolean isGroup, Datasource ds);
|
||||||
|
|
||||||
public abstract String createQuerySQLAsTmp(String sql, List<DatasetTableField> fields, boolean isGroup);
|
public abstract String createQuerySQLAsTmp(String sql, List<DatasetTableField> fields, boolean isGroup);
|
||||||
|
|
||||||
public abstract String createQuerySQLWithPage(String table, List<DatasetTableField> fields, Integer page, Integer pageSize, Integer realSize, boolean isGroup);
|
public abstract String createQuerySQLWithPage(String table, List<DatasetTableField> fields, Integer page, Integer pageSize, Integer realSize, boolean isGroup, Datasource ds);
|
||||||
|
|
||||||
public abstract String createQueryTableWithLimit(String table, List<DatasetTableField> fields, Integer limit, boolean isGroup);
|
public abstract String createQueryTableWithLimit(String table, List<DatasetTableField> fields, Integer limit, boolean isGroup, Datasource ds);
|
||||||
|
|
||||||
public abstract String createQuerySqlWithLimit(String sql, List<DatasetTableField> fields, Integer limit, boolean isGroup);
|
public abstract String createQuerySqlWithLimit(String sql, List<DatasetTableField> fields, Integer limit, boolean isGroup);
|
||||||
|
|
||||||
|
|||||||
@ -2,6 +2,7 @@ package io.dataease.provider.doris;
|
|||||||
|
|
||||||
import io.dataease.base.domain.DatasetTableField;
|
import io.dataease.base.domain.DatasetTableField;
|
||||||
import io.dataease.base.domain.DatasetTableFieldExample;
|
import io.dataease.base.domain.DatasetTableFieldExample;
|
||||||
|
import io.dataease.base.domain.Datasource;
|
||||||
import io.dataease.base.mapper.DatasetTableFieldMapper;
|
import io.dataease.base.mapper.DatasetTableFieldMapper;
|
||||||
import io.dataease.controller.request.chart.ChartExtFilterRequest;
|
import io.dataease.controller.request.chart.ChartExtFilterRequest;
|
||||||
import io.dataease.dto.chart.ChartCustomFilterDTO;
|
import io.dataease.dto.chart.ChartCustomFilterDTO;
|
||||||
@ -76,7 +77,7 @@ public class DorisQueryProvider extends QueryProvider {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String createQuerySQL(String table, List<DatasetTableField> fields, boolean isGroup) {
|
public String createQuerySQL(String table, List<DatasetTableField> fields, boolean isGroup, Datasource ds) {
|
||||||
SQLObj tableObj = SQLObj.builder()
|
SQLObj tableObj = SQLObj.builder()
|
||||||
.tableName((table.startsWith("(") && table.endsWith(")")) ? table : String.format(DorisConstants.KEYWORD_TABLE, table))
|
.tableName((table.startsWith("(") && table.endsWith(")")) ? table : String.format(DorisConstants.KEYWORD_TABLE, table))
|
||||||
.tableAlias(String.format(TABLE_ALIAS_PREFIX, 0))
|
.tableAlias(String.format(TABLE_ALIAS_PREFIX, 0))
|
||||||
@ -149,17 +150,17 @@ public class DorisQueryProvider extends QueryProvider {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String createQuerySQLAsTmp(String sql, List<DatasetTableField> fields, boolean isGroup) {
|
public String createQuerySQLAsTmp(String sql, List<DatasetTableField> fields, boolean isGroup) {
|
||||||
return createQuerySQL("(" + sql + ")", fields, isGroup);
|
return createQuerySQL("(" + sql + ")", fields, isGroup, null);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String createQuerySQLWithPage(String table, List<DatasetTableField> fields, Integer page, Integer pageSize, Integer realSize, boolean isGroup) {
|
public String createQuerySQLWithPage(String table, List<DatasetTableField> fields, Integer page, Integer pageSize, Integer realSize, boolean isGroup, Datasource ds) {
|
||||||
return createQuerySQL(table, fields, isGroup) + " LIMIT " + (page - 1) * pageSize + "," + realSize;
|
return createQuerySQL(table, fields, isGroup, null) + " LIMIT " + (page - 1) * pageSize + "," + realSize;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String createQueryTableWithLimit(String table, List<DatasetTableField> fields, Integer limit, boolean isGroup) {
|
public String createQueryTableWithLimit(String table, List<DatasetTableField> fields, Integer limit, boolean isGroup, Datasource ds) {
|
||||||
return createQuerySQL(table, fields, isGroup) + " LIMIT 0," + limit;
|
return createQuerySQL(table, fields, isGroup, null) + " LIMIT 0," + limit;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|||||||
@ -2,6 +2,7 @@ package io.dataease.provider.mysql;
|
|||||||
|
|
||||||
import io.dataease.base.domain.DatasetTableField;
|
import io.dataease.base.domain.DatasetTableField;
|
||||||
import io.dataease.base.domain.DatasetTableFieldExample;
|
import io.dataease.base.domain.DatasetTableFieldExample;
|
||||||
|
import io.dataease.base.domain.Datasource;
|
||||||
import io.dataease.base.mapper.DatasetTableFieldMapper;
|
import io.dataease.base.mapper.DatasetTableFieldMapper;
|
||||||
import io.dataease.controller.request.chart.ChartExtFilterRequest;
|
import io.dataease.controller.request.chart.ChartExtFilterRequest;
|
||||||
import io.dataease.dto.chart.ChartCustomFilterDTO;
|
import io.dataease.dto.chart.ChartCustomFilterDTO;
|
||||||
@ -76,7 +77,7 @@ public class MysqlQueryProvider extends QueryProvider {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String createQuerySQL(String table, List<DatasetTableField> fields, boolean isGroup) {
|
public String createQuerySQL(String table, List<DatasetTableField> fields, boolean isGroup, Datasource ds) {
|
||||||
SQLObj tableObj = SQLObj.builder()
|
SQLObj tableObj = SQLObj.builder()
|
||||||
.tableName((table.startsWith("(") && table.endsWith(")")) ? table : String.format(MySQLConstants.KEYWORD_TABLE, table))
|
.tableName((table.startsWith("(") && table.endsWith(")")) ? table : String.format(MySQLConstants.KEYWORD_TABLE, table))
|
||||||
.tableAlias(String.format(TABLE_ALIAS_PREFIX, 0))
|
.tableAlias(String.format(TABLE_ALIAS_PREFIX, 0))
|
||||||
@ -140,17 +141,17 @@ public class MysqlQueryProvider extends QueryProvider {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String createQuerySQLAsTmp(String sql, List<DatasetTableField> fields, boolean isGroup) {
|
public String createQuerySQLAsTmp(String sql, List<DatasetTableField> fields, boolean isGroup) {
|
||||||
return createQuerySQL("(" + sqlFix(sql) + ")", fields, isGroup);
|
return createQuerySQL("(" + sqlFix(sql) + ")", fields, isGroup, null);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String createQuerySQLWithPage(String table, List<DatasetTableField> fields, Integer page, Integer pageSize, Integer realSize, boolean isGroup) {
|
public String createQuerySQLWithPage(String table, List<DatasetTableField> fields, Integer page, Integer pageSize, Integer realSize, boolean isGroup, Datasource ds) {
|
||||||
return createQuerySQL(table, fields, isGroup) + " LIMIT " + (page - 1) * pageSize + "," + realSize;
|
return createQuerySQL(table, fields, isGroup, null) + " LIMIT " + (page - 1) * pageSize + "," + realSize;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String createQueryTableWithLimit(String table, List<DatasetTableField> fields, Integer limit, boolean isGroup) {
|
public String createQueryTableWithLimit(String table, List<DatasetTableField> fields, Integer limit, boolean isGroup, Datasource ds) {
|
||||||
return createQuerySQL(table, fields, isGroup) + " LIMIT 0," + limit;
|
return createQuerySQL(table, fields, isGroup, null) + " LIMIT 0," + limit;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|||||||
@ -2,6 +2,7 @@ package io.dataease.provider.oracle;
|
|||||||
|
|
||||||
import io.dataease.base.domain.DatasetTableField;
|
import io.dataease.base.domain.DatasetTableField;
|
||||||
import io.dataease.base.domain.DatasetTableFieldExample;
|
import io.dataease.base.domain.DatasetTableFieldExample;
|
||||||
|
import io.dataease.base.domain.Datasource;
|
||||||
import io.dataease.base.mapper.DatasetTableFieldMapper;
|
import io.dataease.base.mapper.DatasetTableFieldMapper;
|
||||||
import io.dataease.controller.request.chart.ChartExtFilterRequest;
|
import io.dataease.controller.request.chart.ChartExtFilterRequest;
|
||||||
import io.dataease.dto.chart.ChartCustomFilterDTO;
|
import io.dataease.dto.chart.ChartCustomFilterDTO;
|
||||||
@ -88,7 +89,7 @@ public class OracleQueryProvider extends QueryProvider {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String createQuerySQL(String table, List<DatasetTableField> fields, boolean isGroup) {
|
public String createQuerySQL(String table, List<DatasetTableField> fields, boolean isGroup, Datasource ds) {
|
||||||
SQLObj tableObj = SQLObj.builder()
|
SQLObj tableObj = SQLObj.builder()
|
||||||
.tableName((table.startsWith("(") && table.endsWith(")")) ? table : String.format(OracleConstants.KEYWORD_TABLE, table))
|
.tableName((table.startsWith("(") && table.endsWith(")")) ? table : String.format(OracleConstants.KEYWORD_TABLE, table))
|
||||||
.tableAlias(String.format(OracleConstants.ALIAS_FIX, String.format(TABLE_ALIAS_PREFIX, 0)))
|
.tableAlias(String.format(OracleConstants.ALIAS_FIX, String.format(TABLE_ALIAS_PREFIX, 0)))
|
||||||
@ -169,19 +170,19 @@ public class OracleQueryProvider extends QueryProvider {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String createQuerySQLAsTmp(String sql, List<DatasetTableField> fields, boolean isGroup) {
|
public String createQuerySQLAsTmp(String sql, List<DatasetTableField> fields, boolean isGroup) {
|
||||||
return createQuerySQL("(" + sqlFix(sql) + ")", fields, isGroup);
|
return createQuerySQL("(" + sqlFix(sql) + ")", fields, isGroup, null);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String createQuerySQLWithPage(String table, List<DatasetTableField> fields, Integer page, Integer pageSize, Integer realSize, boolean isGroup) {
|
public String createQuerySQLWithPage(String table, List<DatasetTableField> fields, Integer page, Integer pageSize, Integer realSize, boolean isGroup, Datasource ds) {
|
||||||
List<SQLObj> xFields = xFields(table, fields);
|
List<SQLObj> xFields = xFields(table, fields);
|
||||||
|
|
||||||
return MessageFormat.format("SELECT {0} FROM ( SELECT DE_TMP.*, rownum r FROM ( {1} ) DE_TMP WHERE rownum <= {2} ) WHERE r > {3} ",
|
return MessageFormat.format("SELECT {0} FROM ( SELECT DE_TMP.*, rownum r FROM ( {1} ) DE_TMP WHERE rownum <= {2} ) WHERE r > {3} ",
|
||||||
sqlColumn(xFields), createQuerySQL(table, fields, isGroup), Integer.valueOf(page * realSize).toString(), Integer.valueOf((page - 1) * pageSize).toString());
|
sqlColumn(xFields), createQuerySQL(table, fields, isGroup, null), Integer.valueOf(page * realSize).toString(), Integer.valueOf((page - 1) * pageSize).toString());
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String createQueryTableWithLimit(String table, List<DatasetTableField> fields, Integer limit, boolean isGroup) {
|
public String createQueryTableWithLimit(String table, List<DatasetTableField> fields, Integer limit, boolean isGroup, Datasource ds) {
|
||||||
return String.format("SELECT %s.* from %s WHERE rownum <= %s ", table, table, limit.toString());
|
return String.format("SELECT %s.* from %s WHERE rownum <= %s ", table, table, limit.toString());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -13,7 +13,7 @@ public class SqlServerSQLConstants extends SQLConstants {
|
|||||||
|
|
||||||
public static final String KEYWORD_FIX = "%s." + sqlServer.getKeywordPrefix() + "%s" + sqlServer.getKeywordSuffix();
|
public static final String KEYWORD_FIX = "%s." + sqlServer.getKeywordPrefix() + "%s" + sqlServer.getKeywordSuffix();
|
||||||
|
|
||||||
public static final String UNIX_TIMESTAMP = "(CAST(DATEDIFF(SS, '1970-01-01 00:00:00', s ) as bigint) - 8 * 3600 ) * 1000";
|
public static final String UNIX_TIMESTAMP = "CAST(DATEDIFF(ss,'1970-01-01 08:00:00', %s) as bigint ) * 1000 ";
|
||||||
|
|
||||||
public static final String DATE_FORMAT = "CONVERT(varchar(100), %s, %s)";
|
public static final String DATE_FORMAT = "CONVERT(varchar(100), %s, %s)";
|
||||||
|
|
||||||
@ -22,9 +22,8 @@ public class SqlServerSQLConstants extends SQLConstants {
|
|||||||
public static final String CONVERT = "CONVERT(%s, %s)";
|
public static final String CONVERT = "CONVERT(%s, %s)";
|
||||||
|
|
||||||
public static final String LONG_TO_DATE = "DATEADD(second,%s,'1970-01-01 08:00:00')";
|
public static final String LONG_TO_DATE = "DATEADD(second,%s,'1970-01-01 08:00:00')";
|
||||||
public static final String STRING_TO_DATE = "CONVERT(datetime, %s ,120)";
|
|
||||||
|
|
||||||
public static final String DEFAULT_DATE_FORMAT = "%Y-%m-%d %H:%i:%S";
|
public static final String STRING_TO_DATE = "CONVERT(datetime, %s ,120)";
|
||||||
|
|
||||||
public static final String DEFAULT_INT_FORMAT = "DECIMAL(20,0)";
|
public static final String DEFAULT_INT_FORMAT = "DECIMAL(20,0)";
|
||||||
|
|
||||||
|
|||||||
@ -1,7 +1,11 @@
|
|||||||
package io.dataease.provider.sqlserver;
|
package io.dataease.provider.sqlserver;
|
||||||
|
|
||||||
|
import com.google.gson.Gson;
|
||||||
import io.dataease.base.domain.DatasetTableField;
|
import io.dataease.base.domain.DatasetTableField;
|
||||||
|
import io.dataease.base.domain.Datasource;
|
||||||
|
import io.dataease.commons.constants.DeTypeConstants;
|
||||||
import io.dataease.controller.request.chart.ChartExtFilterRequest;
|
import io.dataease.controller.request.chart.ChartExtFilterRequest;
|
||||||
|
import io.dataease.datasource.dto.SqlServerConfigration;
|
||||||
import io.dataease.dto.chart.ChartCustomFilterDTO;
|
import io.dataease.dto.chart.ChartCustomFilterDTO;
|
||||||
import io.dataease.dto.chart.ChartViewFieldDTO;
|
import io.dataease.dto.chart.ChartViewFieldDTO;
|
||||||
import io.dataease.dto.sqlObj.SQLObj;
|
import io.dataease.dto.sqlObj.SQLObj;
|
||||||
@ -38,51 +42,53 @@ public class SqlserverQueryProvider extends QueryProvider {
|
|||||||
case "LONGTEXT":
|
case "LONGTEXT":
|
||||||
case "ENUM":
|
case "ENUM":
|
||||||
case "XML":
|
case "XML":
|
||||||
return 0;// 文本
|
|
||||||
case "DATE":
|
|
||||||
case "TIME":
|
case "TIME":
|
||||||
|
return DeTypeConstants.DE_STRING;// 文本
|
||||||
|
case "DATE":
|
||||||
case "YEAR":
|
case "YEAR":
|
||||||
case "DATETIME":
|
case "DATETIME":
|
||||||
case "DATETIME2":
|
case "DATETIME2":
|
||||||
case "DATETIMEOFFSET":
|
case "DATETIMEOFFSET":
|
||||||
case "TIMESTAMP":
|
return DeTypeConstants.DE_TIME;// 时间
|
||||||
return 1;// 时间
|
|
||||||
case "INT":
|
case "INT":
|
||||||
case "MEDIUMINT":
|
case "MEDIUMINT":
|
||||||
case "INTEGER":
|
case "INTEGER":
|
||||||
case "BIGINT":
|
case "BIGINT":
|
||||||
case "SMALLINT":
|
case "SMALLINT":
|
||||||
return 2;// 整型
|
return DeTypeConstants.DE_INT;// 整型
|
||||||
case "FLOAT":
|
case "FLOAT":
|
||||||
case "DOUBLE":
|
case "DOUBLE":
|
||||||
case "DECIMAL":
|
case "DECIMAL":
|
||||||
case "MONEY":
|
case "MONEY":
|
||||||
case "NUMERIC":
|
case "NUMERIC":
|
||||||
return 3;// 浮点
|
return DeTypeConstants.DE_FLOAT;// 浮点
|
||||||
case "BIT":
|
case "BIT":
|
||||||
case "TINYINT":
|
case "TINYINT":
|
||||||
return 4;// 布尔
|
return DeTypeConstants.DE_BOOL;// 布尔
|
||||||
|
case "TIMESTAMP":
|
||||||
|
return DeTypeConstants.DE_Binary;// 二进制
|
||||||
default:
|
default:
|
||||||
return 0;
|
return DeTypeConstants.DE_STRING;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private static Integer DE_STRING = 0;
|
|
||||||
private static Integer DE_TIME = 1;
|
|
||||||
private static Integer DE_INT = 2;
|
|
||||||
private static Integer DE_FLOAT = 3;
|
|
||||||
private static Integer DE_BOOL = 4;
|
|
||||||
@Override
|
@Override
|
||||||
public String createSQLPreview(String sql, String orderBy) {
|
public String createSQLPreview(String sql, String orderBy) {
|
||||||
return "SELECT top 1000 * FROM (" + sqlFix(sql) + ") AS tmp";
|
return "SELECT top 1000 * FROM (" + sqlFix(sql) + ") AS tmp";
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String createQuerySQL(String table, List<DatasetTableField> fields, boolean isGroup) {
|
public String createQuerySQL(String table, List<DatasetTableField> fields, boolean isGroup, Datasource ds) {
|
||||||
|
|
||||||
SQLObj tableObj = SQLObj.builder()
|
SQLObj tableObj = SQLObj.builder()
|
||||||
.tableName((table.startsWith("(") && table.endsWith(")")) ? table : String.format(SqlServerSQLConstants.KEYWORD_TABLE, table))
|
.tableName((table.startsWith("(") && table.endsWith(")")) ? table : String.format(SqlServerSQLConstants.KEYWORD_TABLE, table))
|
||||||
.tableAlias(String.format(TABLE_ALIAS_PREFIX, 0))
|
.tableAlias(String.format(TABLE_ALIAS_PREFIX, 0))
|
||||||
.build();
|
.build();
|
||||||
|
if(ds != null){
|
||||||
|
String schema = new Gson().fromJson(ds.getConfiguration(), SqlServerConfigration.class).getSchema();
|
||||||
|
tableObj.setTableName(schema + "." + tableObj.getTableName());
|
||||||
|
}
|
||||||
|
|
||||||
List<SQLObj> xFields = new ArrayList<>();
|
List<SQLObj> xFields = new ArrayList<>();
|
||||||
if (CollectionUtils.isNotEmpty(fields)) {
|
if (CollectionUtils.isNotEmpty(fields)) {
|
||||||
for (int i = 0; i < fields.size(); i++) {
|
for (int i = 0; i < fields.size(); i++) {
|
||||||
@ -91,33 +97,28 @@ public class SqlserverQueryProvider extends QueryProvider {
|
|||||||
String fieldAlias = String.format(SQLConstants.FIELD_ALIAS_X_PREFIX, i);
|
String fieldAlias = String.format(SQLConstants.FIELD_ALIAS_X_PREFIX, i);
|
||||||
String fieldName = "";
|
String fieldName = "";
|
||||||
// 处理横轴字段
|
// 处理横轴字段
|
||||||
if (f.getDeExtractType() == DE_TIME) { // 时间 转为 数值
|
if (f.getDeExtractType() == DeTypeConstants.DE_TIME) { // 时间 转为 数值
|
||||||
if (f.getDeType() == DE_INT || f.getDeType() == DE_FLOAT) {
|
if (f.getDeType() == DeTypeConstants.DE_INT || f.getDeType() == DeTypeConstants.DE_FLOAT) {
|
||||||
fieldName = String.format(SqlServerSQLConstants.UNIX_TIMESTAMP, originField);
|
fieldName = String.format(SqlServerSQLConstants.UNIX_TIMESTAMP, originField);
|
||||||
} else {
|
} else {
|
||||||
fieldName = originField;
|
fieldName = originField;
|
||||||
}
|
}
|
||||||
} else if (f.getDeExtractType() == DE_STRING) { //字符串转时间
|
} else if (f.getDeExtractType() == DeTypeConstants.DE_STRING) {
|
||||||
if (f.getDeType() == DE_INT) {
|
if (f.getDeType() == DeTypeConstants.DE_INT) {
|
||||||
fieldName = originField;
|
fieldName = String.format(SqlServerSQLConstants.CONVERT, SqlServerSQLConstants.DEFAULT_INT_FORMAT, originField);
|
||||||
// String.format(SqlServerSQLConstants.CAST, originField, SqlServerSQLConstants.DEFAULT_INT_FORMAT);
|
} else if (f.getDeType() == DeTypeConstants.DE_FLOAT) {
|
||||||
} else if (f.getDeType() == DE_FLOAT) {
|
fieldName = String.format(SqlServerSQLConstants.CONVERT, SqlServerSQLConstants.DEFAULT_FLOAT_FORMAT, originField);
|
||||||
fieldName = originField;
|
} else if (f.getDeType() == DeTypeConstants.DE_TIME) { //字符串转时间
|
||||||
// String.format(SqlServerSQLConstants.CAST, originField, SqlServerSQLConstants.DEFAULT_FLOAT_FORMAT);
|
fieldName = String.format(SqlServerSQLConstants.STRING_TO_DATE, originField);
|
||||||
} else if (f.getDeType() == DE_TIME) {
|
|
||||||
fieldName = originField;
|
|
||||||
// String.format(SqlServerSQLConstants.DATE_FORMAT, originField, SqlServerSQLConstants.DEFAULT_DATE_FORMAT);
|
|
||||||
} else {
|
} else {
|
||||||
fieldName = originField;
|
fieldName = originField;
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
if (f.getDeType() == DE_TIME) { //
|
if (f.getDeType() == DeTypeConstants.DE_TIME) { // 数值转时间
|
||||||
// String cast = String.format(SqlServerSQLConstants.CAST, originField, SqlServerSQLConstants.DEFAULT_INT_FORMAT) + "/1000";
|
String cast = String.format(SqlServerSQLConstants.LONG_TO_DATE, originField + "/1000");
|
||||||
fieldName = originField;
|
fieldName = String.format(SqlServerSQLConstants.FROM_UNIXTIME, cast);
|
||||||
// String.format(SqlServerSQLConstants.FROM_UNIXTIME, cast, SqlServerSQLConstants.DEFAULT_DATE_FORMAT);
|
} else if (f.getDeType() == DeTypeConstants.DE_INT) {
|
||||||
} else if (f.getDeType() == DE_INT) {
|
fieldName = String.format(SqlServerSQLConstants.CONVERT, SqlServerSQLConstants.DEFAULT_INT_FORMAT, originField);
|
||||||
fieldName = originField;
|
|
||||||
// String.format(SqlServerSQLConstants.CAST, originField, SqlServerSQLConstants.DEFAULT_INT_FORMAT);
|
|
||||||
} else {
|
} else {
|
||||||
fieldName = originField;
|
fieldName = originField;
|
||||||
}
|
}
|
||||||
@ -139,27 +140,27 @@ public class SqlserverQueryProvider extends QueryProvider {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String createQuerySQLAsTmp(String sql, List<DatasetTableField> fields, boolean isGroup) {
|
public String createQuerySQLAsTmp(String sql, List<DatasetTableField> fields, boolean isGroup) {
|
||||||
return createQuerySQL("(" + sqlFix(sql) + ")", fields, isGroup);
|
return createQuerySQL("(" + sqlFix(sql) + ")", fields, isGroup, null);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String createQuerySQLWithPage(String table, List<DatasetTableField> fields, Integer page, Integer pageSize, Integer realSize, boolean isGroup) {
|
public String createQuerySQLWithPage(String table, List<DatasetTableField> fields, Integer page, Integer pageSize, Integer realSize, boolean isGroup, Datasource ds) {
|
||||||
return createQuerySQL(table, fields, isGroup) + " ORDER BY " + fields.get(0).getOriginName() + " offset " + (page - 1) * pageSize + " rows fetch next " + realSize + " rows only";
|
return createQuerySQL(table, fields, isGroup, ds) + " ORDER BY \"" + fields.get(0).getOriginName() + "\" offset " + (page - 1) * pageSize + " rows fetch next " + realSize + " rows only";
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String createQuerySQLAsTmpWithPage(String sql, List<DatasetTableField> fields, Integer page, Integer pageSize, Integer realSize, boolean isGroup) {
|
public String createQuerySQLAsTmpWithPage(String sql, List<DatasetTableField> fields, Integer page, Integer pageSize, Integer realSize, boolean isGroup) {
|
||||||
return createQuerySQLAsTmp(sql, fields, isGroup) + " ORDER BY " + fields.get(0).getOriginName() + " offset " + (page - 1) * pageSize + " rows fetch next " + realSize + " rows only";
|
return createQuerySQLAsTmp(sql, fields, isGroup) + " ORDER BY \"" + fields.get(0).getOriginName() + "\" offset " + (page - 1) * pageSize + " rows fetch next " + realSize + " rows only";
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String createQueryTableWithLimit(String table, List<DatasetTableField> fields, Integer limit, boolean isGroup) {
|
public String createQueryTableWithLimit(String table, List<DatasetTableField> fields, Integer limit, boolean isGroup, Datasource ds) {
|
||||||
return createQuerySQL(table, fields, isGroup) + " ORDER BY " + fields.get(0).getOriginName() + " offset 0 rows fetch next " + limit + " rows only";
|
return createQuerySQL(table, fields, isGroup, ds) + " ORDER BY \"" + fields.get(0).getOriginName() + "\" offset 0 rows fetch next " + limit + " rows only";
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String createQuerySqlWithLimit(String sql, List<DatasetTableField> fields, Integer limit, boolean isGroup) {
|
public String createQuerySqlWithLimit(String sql, List<DatasetTableField> fields, Integer limit, boolean isGroup) {
|
||||||
return createQuerySQLAsTmp(sql, fields, isGroup) + " ORDER BY " + fields.get(0).getOriginName() + " offset 0 rows fetch next " + limit + " rows only";
|
return createQuerySQLAsTmp(sql, fields, isGroup) + " ORDER BY \"" + fields.get(0).getOriginName() + "\" offset 0 rows fetch next " + limit + " rows only";
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -463,14 +464,15 @@ public class SqlserverQueryProvider extends QueryProvider {
|
|||||||
public String createRawQuerySQL(String table, List<DatasetTableField> fields) {
|
public String createRawQuerySQL(String table, List<DatasetTableField> fields) {
|
||||||
String[] array = fields.stream().map(f -> {
|
String[] array = fields.stream().map(f -> {
|
||||||
StringBuilder stringBuilder = new StringBuilder();
|
StringBuilder stringBuilder = new StringBuilder();
|
||||||
if (f.getDeExtractType() == 4) { // 处理 tinyint
|
// if (f.getDeExtractType() == 4) { // 处理 tinyint
|
||||||
stringBuilder.append("concat(`").append(f.getOriginName()).append("`,'') AS ").append(f.getDataeaseName());
|
// stringBuilder.append("concat(`").append(f.getOriginName()).append("`,'') AS ").append(f.getDataeaseName());
|
||||||
} else {
|
// } else {
|
||||||
stringBuilder.append("`").append(f.getOriginName()).append("` AS ").append(f.getDataeaseName());
|
// stringBuilder.append("`").append(f.getOriginName()).append("` AS ").append(f.getDataeaseName());
|
||||||
}
|
// }
|
||||||
|
stringBuilder.append("\"").append(f.getOriginName()).append("\" AS ").append(f.getDataeaseName());
|
||||||
return stringBuilder.toString();
|
return stringBuilder.toString();
|
||||||
}).toArray(String[]::new);
|
}).toArray(String[]::new);
|
||||||
return MessageFormat.format("SELECT {0} FROM {1} ORDER BY null", StringUtils.join(array, ","), table);
|
return MessageFormat.format("SELECT {0} FROM {1}", StringUtils.join(array, ","), table);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -527,7 +529,7 @@ public class SqlserverQueryProvider extends QueryProvider {
|
|||||||
String whereTerm = transMysqlFilterTerm(request.getTerm());
|
String whereTerm = transMysqlFilterTerm(request.getTerm());
|
||||||
String whereValue = "";
|
String whereValue = "";
|
||||||
String originName = String.format(SqlServerSQLConstants.KEYWORD_FIX, tableObj.getTableAlias(), field.getOriginName());
|
String originName = String.format(SqlServerSQLConstants.KEYWORD_FIX, tableObj.getTableAlias(), field.getOriginName());
|
||||||
if (field.getDeType() == DE_TIME && field.getDeExtractType() != DE_TIME) {
|
if (field.getDeType() == DeTypeConstants.DE_TIME && field.getDeExtractType() != DeTypeConstants.DE_TIME) {
|
||||||
String cast = String.format(SqlServerSQLConstants.LONG_TO_DATE, originName + "/1000");
|
String cast = String.format(SqlServerSQLConstants.LONG_TO_DATE, originName + "/1000");
|
||||||
whereName = String.format(SqlServerSQLConstants.FROM_UNIXTIME, cast);
|
whereName = String.format(SqlServerSQLConstants.FROM_UNIXTIME, cast);
|
||||||
} else {
|
} else {
|
||||||
@ -581,7 +583,7 @@ public class SqlserverQueryProvider extends QueryProvider {
|
|||||||
} else if (StringUtils.containsIgnoreCase(request.getOperator(), "like")) {
|
} else if (StringUtils.containsIgnoreCase(request.getOperator(), "like")) {
|
||||||
whereValue = "'%" + value.get(0) + "%'";
|
whereValue = "'%" + value.get(0) + "%'";
|
||||||
} else if (StringUtils.containsIgnoreCase(request.getOperator(), "between")) {
|
} else if (StringUtils.containsIgnoreCase(request.getOperator(), "between")) {
|
||||||
if (request.getDatasetTableField().getDeType() == DE_TIME) {
|
if (request.getDatasetTableField().getDeType() == DeTypeConstants.DE_TIME) {
|
||||||
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
|
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
|
||||||
String startTime = simpleDateFormat.format(new Date(Long.parseLong(value.get(0))));
|
String startTime = simpleDateFormat.format(new Date(Long.parseLong(value.get(0))));
|
||||||
String endTime = simpleDateFormat.format(new Date(Long.parseLong(value.get(1))));
|
String endTime = simpleDateFormat.format(new Date(Long.parseLong(value.get(1))));
|
||||||
@ -620,7 +622,11 @@ public class SqlserverQueryProvider extends QueryProvider {
|
|||||||
case "y":
|
case "y":
|
||||||
return "CONVERT(varchar(100), datepart(yy, " + originField + "))";
|
return "CONVERT(varchar(100), datepart(yy, " + originField + "))";
|
||||||
case "y_M":
|
case "y_M":
|
||||||
return "CONVERT(varchar(100), datepart(yy, " + originField + ")) N'" + split + "'CONVERT(varchar(100), datepart(mm, " + originField + "))";
|
if(split.equalsIgnoreCase("-")){
|
||||||
|
return "substring( convert(varchar," + originField + ",120),1,7)";
|
||||||
|
}else {
|
||||||
|
return "replace("+ "substring( convert(varchar," + originField + ",120),1,7), '-','/')";
|
||||||
|
}
|
||||||
case "y_M_d":
|
case "y_M_d":
|
||||||
if(split.equalsIgnoreCase("-")){
|
if(split.equalsIgnoreCase("-")){
|
||||||
return "CONVERT(varchar(100), " + originField + ", 23)";
|
return "CONVERT(varchar(100), " + originField + ", 23)";
|
||||||
@ -628,7 +634,7 @@ public class SqlserverQueryProvider extends QueryProvider {
|
|||||||
return "CONVERT(varchar(100), " + originField + ", 111)";
|
return "CONVERT(varchar(100), " + originField + ", 111)";
|
||||||
}
|
}
|
||||||
case "H_m_s":
|
case "H_m_s":
|
||||||
return "CONVERT(varchar(100), " + originField + ", 24)";
|
return "CONVERT(varchar(100), " + originField + ", 8)";
|
||||||
case "y_M_d_H_m":
|
case "y_M_d_H_m":
|
||||||
if(split.equalsIgnoreCase("-")){
|
if(split.equalsIgnoreCase("-")){
|
||||||
return "substring( convert(varchar," + originField + ",120),1,16)";
|
return "substring( convert(varchar," + originField + ",120),1,16)";
|
||||||
@ -689,17 +695,17 @@ public class SqlserverQueryProvider extends QueryProvider {
|
|||||||
|
|
||||||
private SQLObj getXFields(ChartViewFieldDTO x, String originField, String fieldAlias) {
|
private SQLObj getXFields(ChartViewFieldDTO x, String originField, String fieldAlias) {
|
||||||
String fieldName = "";
|
String fieldName = "";
|
||||||
if (x.getDeExtractType() == DE_TIME) {
|
if (x.getDeExtractType() == DeTypeConstants.DE_TIME) {
|
||||||
if (x.getDeType() == DE_INT || x.getDeType() == DE_FLOAT) { //时间转数值
|
if (x.getDeType() == DeTypeConstants.DE_INT || x.getDeType() == DeTypeConstants.DE_FLOAT) { //时间转数值
|
||||||
fieldName = String.format(SqlServerSQLConstants.UNIX_TIMESTAMP, originField);
|
fieldName = String.format(SqlServerSQLConstants.UNIX_TIMESTAMP, originField);
|
||||||
} else if (x.getDeType() == DE_TIME) { //时间格式化
|
} else if (x.getDeType() == DeTypeConstants.DE_TIME) { //时间格式化
|
||||||
fieldName = transDateFormat(x.getDateStyle(), x.getDatePattern(), originField);
|
fieldName = transDateFormat(x.getDateStyle(), x.getDatePattern(), originField);
|
||||||
} else {
|
} else {
|
||||||
fieldName = originField;
|
fieldName = originField;
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
if (x.getDeType() == DE_TIME) {
|
if (x.getDeType() == DeTypeConstants.DE_TIME) {
|
||||||
if (x.getDeExtractType() == DE_STRING) {// 字符串转时间
|
if (x.getDeExtractType() == DeTypeConstants.DE_STRING) {// 字符串转时间
|
||||||
String cast = String.format(SqlServerSQLConstants.STRING_TO_DATE, originField);
|
String cast = String.format(SqlServerSQLConstants.STRING_TO_DATE, originField);
|
||||||
fieldName = transDateFormat(x.getDateStyle(), x.getDatePattern(), cast);
|
fieldName = transDateFormat(x.getDateStyle(), x.getDatePattern(), cast);
|
||||||
} else {// 数值转时间
|
} else {// 数值转时间
|
||||||
@ -724,7 +730,7 @@ public class SqlserverQueryProvider extends QueryProvider {
|
|||||||
fieldName = String.format(SqlServerSQLConstants.AGG_FIELD, y.getSummary(), originField);
|
fieldName = String.format(SqlServerSQLConstants.AGG_FIELD, y.getSummary(), originField);
|
||||||
} else {
|
} else {
|
||||||
if (StringUtils.equalsIgnoreCase(y.getSummary(), "avg") || StringUtils.containsIgnoreCase(y.getSummary(), "pop")) {
|
if (StringUtils.equalsIgnoreCase(y.getSummary(), "avg") || StringUtils.containsIgnoreCase(y.getSummary(), "pop")) {
|
||||||
String convert = String.format(SqlServerSQLConstants.CONVERT, y.getDeType() == DE_INT ? SqlServerSQLConstants.DEFAULT_INT_FORMAT : SqlServerSQLConstants.DEFAULT_FLOAT_FORMAT, originField);
|
String convert = String.format(SqlServerSQLConstants.CONVERT, y.getDeType() == DeTypeConstants.DE_INT ? SqlServerSQLConstants.DEFAULT_INT_FORMAT : SqlServerSQLConstants.DEFAULT_FLOAT_FORMAT, originField);
|
||||||
String agg = String.format(SqlServerSQLConstants.AGG_FIELD, y.getSummary(), convert);
|
String agg = String.format(SqlServerSQLConstants.AGG_FIELD, y.getSummary(), convert);
|
||||||
fieldName = String.format(SqlServerSQLConstants.CONVERT, SqlServerSQLConstants.DEFAULT_FLOAT_FORMAT, agg);
|
fieldName = String.format(SqlServerSQLConstants.CONVERT, SqlServerSQLConstants.DEFAULT_FLOAT_FORMAT, agg);
|
||||||
} else {
|
} else {
|
||||||
|
|||||||
@ -377,8 +377,7 @@ public class DataSetTableService {
|
|||||||
datasourceRequest.setDatasource(ds);
|
datasourceRequest.setDatasource(ds);
|
||||||
String table = dataTableInfoDTO.getTable();
|
String table = dataTableInfoDTO.getTable();
|
||||||
QueryProvider qp = ProviderFactory.getQueryProvider(ds.getType());
|
QueryProvider qp = ProviderFactory.getQueryProvider(ds.getType());
|
||||||
datasourceRequest.setQuery(qp.createQuerySQLWithPage(table, fields, page, pageSize, realSize, false));
|
datasourceRequest.setQuery(qp.createQuerySQLWithPage(table, fields, page, pageSize, realSize, false, ds));
|
||||||
System.out.println(datasourceRequest.getQuery());
|
|
||||||
map.put("sql", datasourceRequest.getQuery());
|
map.put("sql", datasourceRequest.getQuery());
|
||||||
try {
|
try {
|
||||||
data.addAll(datasourceProvider.getData(datasourceRequest));
|
data.addAll(datasourceProvider.getData(datasourceRequest));
|
||||||
@ -387,7 +386,7 @@ public class DataSetTableService {
|
|||||||
DEException.throwException(e.getMessage());
|
DEException.throwException(e.getMessage());
|
||||||
}
|
}
|
||||||
try {
|
try {
|
||||||
datasourceRequest.setQuery(qp.createQueryTableWithLimit(table, fields, Integer.valueOf(dataSetTableRequest.getRow()), false));
|
datasourceRequest.setQuery(qp.createQueryTableWithLimit(table, fields, Integer.valueOf(dataSetTableRequest.getRow()), false, ds));
|
||||||
dataSetPreviewPage.setTotal(datasourceProvider.getData(datasourceRequest).size());
|
dataSetPreviewPage.setTotal(datasourceProvider.getData(datasourceRequest).size());
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
e.printStackTrace();
|
e.printStackTrace();
|
||||||
@ -404,7 +403,7 @@ public class DataSetTableService {
|
|||||||
datasourceRequest.setDatasource(ds);
|
datasourceRequest.setDatasource(ds);
|
||||||
String table = DorisTableUtils.dorisName(dataSetTableRequest.getId());
|
String table = DorisTableUtils.dorisName(dataSetTableRequest.getId());
|
||||||
QueryProvider qp = ProviderFactory.getQueryProvider(ds.getType());
|
QueryProvider qp = ProviderFactory.getQueryProvider(ds.getType());
|
||||||
datasourceRequest.setQuery(qp.createQuerySQLWithPage(table, fields, page, pageSize, realSize, false));
|
datasourceRequest.setQuery(qp.createQuerySQLWithPage(table, fields, page, pageSize, realSize, false, ds));
|
||||||
map.put("sql", datasourceRequest.getQuery());
|
map.put("sql", datasourceRequest.getQuery());
|
||||||
try {
|
try {
|
||||||
data.addAll(jdbcProvider.getData(datasourceRequest));
|
data.addAll(jdbcProvider.getData(datasourceRequest));
|
||||||
@ -413,7 +412,7 @@ public class DataSetTableService {
|
|||||||
DEException.throwException(e.getMessage());
|
DEException.throwException(e.getMessage());
|
||||||
}
|
}
|
||||||
try {
|
try {
|
||||||
datasourceRequest.setQuery(qp.createQueryTableWithLimit(table, fields, Integer.valueOf(dataSetTableRequest.getRow()), false));
|
datasourceRequest.setQuery(qp.createQueryTableWithLimit(table, fields, Integer.valueOf(dataSetTableRequest.getRow()), false, ds));
|
||||||
dataSetPreviewPage.setTotal(jdbcProvider.getData(datasourceRequest).size());
|
dataSetPreviewPage.setTotal(jdbcProvider.getData(datasourceRequest).size());
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
e.printStackTrace();
|
e.printStackTrace();
|
||||||
@ -459,7 +458,7 @@ public class DataSetTableService {
|
|||||||
datasourceRequest.setDatasource(ds);
|
datasourceRequest.setDatasource(ds);
|
||||||
String table = DorisTableUtils.dorisName(dataSetTableRequest.getId());
|
String table = DorisTableUtils.dorisName(dataSetTableRequest.getId());
|
||||||
QueryProvider qp = ProviderFactory.getQueryProvider(ds.getType());
|
QueryProvider qp = ProviderFactory.getQueryProvider(ds.getType());
|
||||||
datasourceRequest.setQuery(qp.createQuerySQLWithPage(table, fields, page, pageSize, realSize, false));
|
datasourceRequest.setQuery(qp.createQuerySQLWithPage(table, fields, page, pageSize, realSize, false, ds));
|
||||||
map.put("sql", datasourceRequest.getQuery());
|
map.put("sql", datasourceRequest.getQuery());
|
||||||
try {
|
try {
|
||||||
data.addAll(jdbcProvider.getData(datasourceRequest));
|
data.addAll(jdbcProvider.getData(datasourceRequest));
|
||||||
@ -468,7 +467,7 @@ public class DataSetTableService {
|
|||||||
DEException.throwException(e.getMessage());
|
DEException.throwException(e.getMessage());
|
||||||
}
|
}
|
||||||
try {
|
try {
|
||||||
datasourceRequest.setQuery(qp.createQueryTableWithLimit(table, fields, Integer.valueOf(dataSetTableRequest.getRow()), false));
|
datasourceRequest.setQuery(qp.createQueryTableWithLimit(table, fields, Integer.valueOf(dataSetTableRequest.getRow()), false, ds));
|
||||||
dataSetPreviewPage.setTotal(jdbcProvider.getData(datasourceRequest).size());
|
dataSetPreviewPage.setTotal(jdbcProvider.getData(datasourceRequest).size());
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
e.printStackTrace();
|
e.printStackTrace();
|
||||||
@ -486,7 +485,7 @@ public class DataSetTableService {
|
|||||||
datasourceRequest.setDatasource(ds);
|
datasourceRequest.setDatasource(ds);
|
||||||
String table = DorisTableUtils.dorisName(dataSetTableRequest.getId());
|
String table = DorisTableUtils.dorisName(dataSetTableRequest.getId());
|
||||||
QueryProvider qp = ProviderFactory.getQueryProvider(ds.getType());
|
QueryProvider qp = ProviderFactory.getQueryProvider(ds.getType());
|
||||||
datasourceRequest.setQuery(qp.createQuerySQLWithPage(table, fields, page, pageSize, realSize, false));
|
datasourceRequest.setQuery(qp.createQuerySQLWithPage(table, fields, page, pageSize, realSize, false, ds));
|
||||||
map.put("sql", datasourceRequest.getQuery());
|
map.put("sql", datasourceRequest.getQuery());
|
||||||
try {
|
try {
|
||||||
data.addAll(jdbcProvider.getData(datasourceRequest));
|
data.addAll(jdbcProvider.getData(datasourceRequest));
|
||||||
@ -495,7 +494,7 @@ public class DataSetTableService {
|
|||||||
DEException.throwException(e.getMessage());
|
DEException.throwException(e.getMessage());
|
||||||
}
|
}
|
||||||
try {
|
try {
|
||||||
datasourceRequest.setQuery(qp.createQueryTableWithLimit(table, fields, Integer.valueOf(dataSetTableRequest.getRow()), false));
|
datasourceRequest.setQuery(qp.createQueryTableWithLimit(table, fields, Integer.valueOf(dataSetTableRequest.getRow()), false, ds));
|
||||||
dataSetPreviewPage.setTotal(jdbcProvider.getData(datasourceRequest).size());
|
dataSetPreviewPage.setTotal(jdbcProvider.getData(datasourceRequest).size());
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
e.printStackTrace();
|
e.printStackTrace();
|
||||||
@ -538,7 +537,7 @@ public class DataSetTableService {
|
|||||||
datasourceRequest.setDatasource(ds);
|
datasourceRequest.setDatasource(ds);
|
||||||
String table = DorisTableUtils.dorisName(dataSetTableRequest.getId());
|
String table = DorisTableUtils.dorisName(dataSetTableRequest.getId());
|
||||||
QueryProvider qp = ProviderFactory.getQueryProvider(ds.getType());
|
QueryProvider qp = ProviderFactory.getQueryProvider(ds.getType());
|
||||||
datasourceRequest.setQuery(qp.createQuerySQLWithPage(table, fields, page, pageSize, realSize, false));
|
datasourceRequest.setQuery(qp.createQuerySQLWithPage(table, fields, page, pageSize, realSize, false, ds));
|
||||||
map.put("sql", datasourceRequest.getQuery());
|
map.put("sql", datasourceRequest.getQuery());
|
||||||
try {
|
try {
|
||||||
data.addAll(jdbcProvider.getData(datasourceRequest));
|
data.addAll(jdbcProvider.getData(datasourceRequest));
|
||||||
@ -548,7 +547,7 @@ public class DataSetTableService {
|
|||||||
}
|
}
|
||||||
|
|
||||||
try {
|
try {
|
||||||
datasourceRequest.setQuery(qp.createQueryTableWithLimit(table, fields, Integer.valueOf(dataSetTableRequest.getRow()), false));
|
datasourceRequest.setQuery(qp.createQueryTableWithLimit(table, fields, Integer.valueOf(dataSetTableRequest.getRow()), false, ds));
|
||||||
dataSetPreviewPage.setTotal(jdbcProvider.getData(datasourceRequest).size());
|
dataSetPreviewPage.setTotal(jdbcProvider.getData(datasourceRequest).size());
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
e.printStackTrace();
|
e.printStackTrace();
|
||||||
|
|||||||
@ -865,7 +865,7 @@ public class ExtractDataService {
|
|||||||
textFileOutputMeta.setSeparator(separator);
|
textFileOutputMeta.setSeparator(separator);
|
||||||
textFileOutputMeta.setExtension(extention);
|
textFileOutputMeta.setExtension(extention);
|
||||||
|
|
||||||
if (datasource.getType().equalsIgnoreCase(DatasourceTypes.oracle.name())) {
|
if (datasource.getType().equalsIgnoreCase(DatasourceTypes.oracle.name()) ) {
|
||||||
TextFileField[] outputFields = new TextFileField[datasetTableFields.size() + 1];
|
TextFileField[] outputFields = new TextFileField[datasetTableFields.size() + 1];
|
||||||
for(int i=0;i< datasetTableFields.size();i++){
|
for(int i=0;i< datasetTableFields.size();i++){
|
||||||
TextFileField textFileField = new TextFileField();
|
TextFileField textFileField = new TextFileField();
|
||||||
@ -878,6 +878,20 @@ public class ExtractDataService {
|
|||||||
textFileField.setType("String");
|
textFileField.setType("String");
|
||||||
outputFields[datasetTableFields.size()] = textFileField;
|
outputFields[datasetTableFields.size()] = textFileField;
|
||||||
|
|
||||||
|
textFileOutputMeta.setOutputFields(outputFields);
|
||||||
|
}else if (datasource.getType().equalsIgnoreCase(DatasourceTypes.sqlServer.name())){
|
||||||
|
TextFileField[] outputFields = new TextFileField[datasetTableFields.size() + 1];
|
||||||
|
for(int i=0;i< datasetTableFields.size();i++){
|
||||||
|
TextFileField textFileField = new TextFileField();
|
||||||
|
textFileField.setName(datasetTableFields.get(i).getDataeaseName());
|
||||||
|
textFileField.setType("String");
|
||||||
|
outputFields[i] = textFileField;
|
||||||
|
}
|
||||||
|
TextFileField textFileField = new TextFileField();
|
||||||
|
textFileField.setName("dataease_uuid");
|
||||||
|
textFileField.setType("String");
|
||||||
|
outputFields[datasetTableFields.size()] = textFileField;
|
||||||
|
|
||||||
textFileOutputMeta.setOutputFields(outputFields);
|
textFileOutputMeta.setOutputFields(outputFields);
|
||||||
}else {
|
}else {
|
||||||
textFileOutputMeta.setOutputFields(new TextFileField[0]);
|
textFileOutputMeta.setOutputFields(new TextFileField[0]);
|
||||||
@ -891,6 +905,14 @@ public class ExtractDataService {
|
|||||||
|
|
||||||
private StepMeta udjc(List<DatasetTableField> datasetTableFields, DatasourceTypes datasourceType) {
|
private StepMeta udjc(List<DatasetTableField> datasetTableFields, DatasourceTypes datasourceType) {
|
||||||
String needToChangeColumnType = "";
|
String needToChangeColumnType = "";
|
||||||
|
String handleBinaryTypeCode = "";
|
||||||
|
|
||||||
|
for (DatasetTableField datasetTableField : datasetTableFields) {
|
||||||
|
if(datasetTableField.getDeExtractType() == 5){
|
||||||
|
handleBinaryTypeCode = handleBinaryTypeCode + "\n" + this.handleBinaryType.replace("FEILD", datasetTableField.getDataeaseName());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
UserDefinedJavaClassMeta userDefinedJavaClassMeta = new UserDefinedJavaClassMeta();
|
UserDefinedJavaClassMeta userDefinedJavaClassMeta = new UserDefinedJavaClassMeta();
|
||||||
List<UserDefinedJavaClassMeta.FieldInfo> fields = new ArrayList<>();
|
List<UserDefinedJavaClassMeta.FieldInfo> fields = new ArrayList<>();
|
||||||
UserDefinedJavaClassMeta.FieldInfo fieldInfo = new UserDefinedJavaClassMeta.FieldInfo("dataease_uuid", ValueMetaInterface.TYPE_STRING, -1, -1);
|
UserDefinedJavaClassMeta.FieldInfo fieldInfo = new UserDefinedJavaClassMeta.FieldInfo("dataease_uuid", ValueMetaInterface.TYPE_STRING, -1, -1);
|
||||||
@ -906,11 +928,15 @@ public class ExtractDataService {
|
|||||||
} else {
|
} else {
|
||||||
Column_Fields = String.join(",", datasetTableFields.stream().map(DatasetTableField::getDataeaseName).collect(Collectors.toList()));
|
Column_Fields = String.join(",", datasetTableFields.stream().map(DatasetTableField::getDataeaseName).collect(Collectors.toList()));
|
||||||
}
|
}
|
||||||
|
|
||||||
if (datasourceType.equals(DatasourceTypes.excel)) {
|
if (datasourceType.equals(DatasourceTypes.excel)) {
|
||||||
tmp_code = tmp_code.replace("handleExcelIntColumn", handleExcelIntColumn).replace("Column_Fields", Column_Fields);
|
tmp_code = tmp_code.replace("handleExcelIntColumn", handleExcelIntColumn).replace("Column_Fields", Column_Fields);
|
||||||
} else {
|
} else {
|
||||||
tmp_code = tmp_code.replace("handleExcelIntColumn", "").replace("Column_Fields", Column_Fields);
|
tmp_code = tmp_code.replace("handleExcelIntColumn", "").replace("Column_Fields", Column_Fields);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
tmp_code = tmp_code.replace("handleBinaryType", handleBinaryTypeCode);
|
||||||
|
|
||||||
UserDefinedJavaClassDef userDefinedJavaClassDef = new UserDefinedJavaClassDef(UserDefinedJavaClassDef.ClassType.TRANSFORM_CLASS, "Processor", tmp_code);
|
UserDefinedJavaClassDef userDefinedJavaClassDef = new UserDefinedJavaClassDef(UserDefinedJavaClassDef.ClassType.TRANSFORM_CLASS, "Processor", tmp_code);
|
||||||
|
|
||||||
userDefinedJavaClassDef.setActive(true);
|
userDefinedJavaClassDef.setActive(true);
|
||||||
@ -993,6 +1019,12 @@ public class ExtractDataService {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private static String handleBinaryType = " \t\tif(\"FEILD\".equalsIgnoreCase(filed)){\n" +
|
||||||
|
" get(Fields.Out, filed).setValue(r, \"\");\n" +
|
||||||
|
" get(Fields.Out, filed).getValueMeta().setType(2);\n" +
|
||||||
|
" \t}";
|
||||||
|
|
||||||
|
|
||||||
private static String alterColumnTypeCode = " if(\"FILED\".equalsIgnoreCase(filed)){\n" +
|
private static String alterColumnTypeCode = " if(\"FILED\".equalsIgnoreCase(filed)){\n" +
|
||||||
"\t if(tmp != null && tmp.equalsIgnoreCase(\"Y\")){\n" +
|
"\t if(tmp != null && tmp.equalsIgnoreCase(\"Y\")){\n" +
|
||||||
" get(Fields.Out, filed).setValue(r, 1);\n" +
|
" get(Fields.Out, filed).setValue(r, 1);\n" +
|
||||||
@ -1049,6 +1081,7 @@ public class ExtractDataService {
|
|||||||
" String tmp = get(Fields.In, filed).getString(r);\n" +
|
" String tmp = get(Fields.In, filed).getString(r);\n" +
|
||||||
"handleWraps \n" +
|
"handleWraps \n" +
|
||||||
"alterColumnTypeCode \n" +
|
"alterColumnTypeCode \n" +
|
||||||
|
"handleBinaryType \n" +
|
||||||
"handleExcelIntColumn \n" +
|
"handleExcelIntColumn \n" +
|
||||||
" str = str + tmp;\n" +
|
" str = str + tmp;\n" +
|
||||||
" }\n" +
|
" }\n" +
|
||||||
|
|||||||
@ -67,7 +67,7 @@ public class DirectFieldService implements DataSetFieldService {
|
|||||||
QueryProvider qp = ProviderFactory.getQueryProvider(ds.getType());
|
QueryProvider qp = ProviderFactory.getQueryProvider(ds.getType());
|
||||||
if (StringUtils.equalsIgnoreCase(datasetTable.getType(), "db")) {
|
if (StringUtils.equalsIgnoreCase(datasetTable.getType(), "db")) {
|
||||||
datasourceRequest.setTable(dataTableInfoDTO.getTable());
|
datasourceRequest.setTable(dataTableInfoDTO.getTable());
|
||||||
datasourceRequest.setQuery(qp.createQuerySQL(dataTableInfoDTO.getTable(), Collections.singletonList(field), true));
|
datasourceRequest.setQuery(qp.createQuerySQL(dataTableInfoDTO.getTable(), Collections.singletonList(field), true, ds));
|
||||||
} else if (StringUtils.equalsIgnoreCase(datasetTable.getType(), "sql")) {
|
} else if (StringUtils.equalsIgnoreCase(datasetTable.getType(), "sql")) {
|
||||||
datasourceRequest.setQuery(qp.createQuerySQLAsTmp(dataTableInfoDTO.getSql(), Collections.singletonList(field), true));
|
datasourceRequest.setQuery(qp.createQuerySQLAsTmp(dataTableInfoDTO.getSql(), Collections.singletonList(field), true));
|
||||||
} else if (StringUtils.equalsIgnoreCase(datasetTable.getType(), "custom")) {
|
} else if (StringUtils.equalsIgnoreCase(datasetTable.getType(), "custom")) {
|
||||||
@ -85,7 +85,7 @@ public class DirectFieldService implements DataSetFieldService {
|
|||||||
tableName = "ds_" + datasetTable.getId().replaceAll("-", "_");
|
tableName = "ds_" + datasetTable.getId().replaceAll("-", "_");
|
||||||
datasourceRequest.setTable(tableName);
|
datasourceRequest.setTable(tableName);
|
||||||
QueryProvider qp = ProviderFactory.getQueryProvider(ds.getType());
|
QueryProvider qp = ProviderFactory.getQueryProvider(ds.getType());
|
||||||
datasourceRequest.setQuery(qp.createQuerySQL(tableName, Collections.singletonList(field), true));
|
datasourceRequest.setQuery(qp.createQuerySQL(tableName, Collections.singletonList(field), true, null));
|
||||||
}
|
}
|
||||||
|
|
||||||
try {
|
try {
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user