package io.dataease.provider; import com.google.gson.Gson; import io.dataease.base.domain.ChartViewWithBLOBs; import io.dataease.base.domain.DatasetTableField; import io.dataease.base.domain.Datasource; import io.dataease.controller.request.chart.ChartExtFilterRequest; import io.dataease.dto.chart.ChartFieldCustomFilterDTO; import io.dataease.dto.chart.ChartViewFieldDTO; import io.dataease.dto.datasource.JdbcConfiguration; import io.dataease.dto.sqlObj.SQLObj; import io.dataease.provider.query.pg.PgConstants; import java.util.List; /** * @Author gin * @Date 2021/5/17 2:42 下午 */ public abstract class QueryProvider { public abstract Integer transFieldType(String field); public abstract String createSQLPreview(String sql, String orderBy); public abstract String createQuerySQL(String table, List fields, boolean isGroup, Datasource ds, List fieldCustomFilter); public abstract String createQuerySQLAsTmp(String sql, List fields, boolean isGroup, List fieldCustomFilter); public abstract String createQueryTableWithPage(String table, List fields, Integer page, Integer pageSize, Integer realSize, boolean isGroup, Datasource ds, List fieldCustomFilter); public abstract String createQuerySQLWithPage(String sql, List fields, Integer page, Integer pageSize, Integer realSize, boolean isGroup, List fieldCustomFilter); public abstract String createQueryTableWithLimit(String table, List fields, Integer limit, boolean isGroup, Datasource ds, List fieldCustomFilter); public abstract String createQuerySqlWithLimit(String sql, List fields, Integer limit, boolean isGroup, List fieldCustomFilter); public abstract String getSQL(String table, List xAxis, List yAxis, List fieldCustomFilter, List extFilterRequestList, Datasource ds, ChartViewWithBLOBs view); public abstract String getSQLAsTmp(String table, List xAxis, List yAxis, List fieldCustomFilter, List extFilterRequestList, ChartViewWithBLOBs view); public abstract String getSQLTableInfo(String table, List xAxis, List fieldCustomFilter, List extFilterRequestList, Datasource ds, ChartViewWithBLOBs view); public abstract String getSQLAsTmpTableInfo(String sql, List xAxis, List fieldCustomFilter, List extFilterRequestList, Datasource ds, ChartViewWithBLOBs view); public abstract String getSQLStack(String table, List xAxis, List yAxis, List fieldCustomFilter, List extFilterRequestList, List extStack, Datasource ds, ChartViewWithBLOBs view); public abstract String getSQLAsTmpStack(String table, List xAxis, List yAxis, List fieldCustomFilter, List extFilterRequestList, List extStack, ChartViewWithBLOBs view); public abstract String getSQLScatter(String table, List xAxis, List yAxis, List fieldCustomFilter, List extFilterRequestList, List extBubble, Datasource ds, ChartViewWithBLOBs view); public abstract String getSQLAsTmpScatter(String table, List xAxis, List yAxis, List fieldCustomFilter, List extFilterRequestList, List extBubble, ChartViewWithBLOBs view); public abstract String searchTable(String table); public abstract String getSQLSummary(String table, List yAxis, List fieldCustomFilter, List extFilterRequestList, ChartViewWithBLOBs view); public Integer transFieldSize(String type) { return 50; } public abstract String getSQLSummaryAsTmp(String sql, List yAxis, List fieldCustomFilter, List extFilterRequestList, ChartViewWithBLOBs view); public abstract String wrapSql(String sql); public abstract String createRawQuerySQL(String table, List fields, Datasource ds); public abstract String createRawQuerySQLAsTmp(String sql, List fields); public void setSchema(SQLObj tableObj, Datasource ds) { if (ds != null && !tableObj.getTableName().startsWith("(") && !tableObj.getTableName().endsWith(")")) { String schema = new Gson().fromJson(ds.getConfiguration(), JdbcConfiguration.class).getSchema(); schema = String.format(PgConstants.KEYWORD_TABLE, schema); tableObj.setTableName(schema + "." + tableObj.getTableName()); } } public String convertTableToSql(String tableName, Datasource ds) { return "select * from TABLE_NAME".replace("TABLE_NAME", tableName); } public String getLogic(String logic) { if (logic != null) { switch (logic) { case "and": return "AND"; case "or": return "OR"; } } return "AND"; } }