|
|
|
@ -18,13 +18,13 @@ import com.fr.design.data.datapane.connect.ConnectionTableProcedurePane;
|
|
|
|
|
import com.fr.design.data.datapane.preview.PreviewTablePane; |
|
|
|
|
import com.fr.design.data.datapane.preview.sql.PreviewPerformedSqlPane; |
|
|
|
|
import com.fr.design.data.datapane.sqlpane.SQLEditPane; |
|
|
|
|
import com.fr.design.data.tabledata.tabledatapane.db.ServerStrategyConfigHandler; |
|
|
|
|
import com.fr.design.data.tabledata.strategy.StrategyConfigHandler; |
|
|
|
|
import com.fr.design.data.tabledata.tabledatapane.db.DBTableDataSavedHook; |
|
|
|
|
import com.fr.design.data.tabledata.tabledatapane.db.StrategyConfigFrom; |
|
|
|
|
import com.fr.design.data.tabledata.tabledatapane.db.StrategyConfigHandler; |
|
|
|
|
import com.fr.design.data.tabledata.tabledatapane.db.TemplateStrategyConfigHandler; |
|
|
|
|
import com.fr.design.dialog.BasicDialog; |
|
|
|
|
import com.fr.design.dialog.BasicPane; |
|
|
|
|
import com.fr.design.dialog.DialogActionAdapter; |
|
|
|
|
import com.fr.design.file.HistoryTemplateListCache; |
|
|
|
|
import com.fr.design.fun.DBTableDataMenuHandler; |
|
|
|
|
import com.fr.design.gui.ibutton.UIButton; |
|
|
|
|
import com.fr.design.gui.icheckbox.UICheckBox; |
|
|
|
@ -43,7 +43,11 @@ import com.fr.design.menu.ToolBarDef;
|
|
|
|
|
import com.fr.design.utils.ParameterUtils; |
|
|
|
|
import com.fr.design.utils.gui.GUICoreUtils; |
|
|
|
|
import com.fr.esd.core.strategy.config.StrategyConfig; |
|
|
|
|
import com.fr.esd.core.strategy.config.StrategyConfigHelper; |
|
|
|
|
import com.fr.esd.core.strategy.config.service.StrategyConfigService; |
|
|
|
|
import com.fr.esd.event.DSMapping; |
|
|
|
|
import com.fr.esd.event.DsNameTarget; |
|
|
|
|
import com.fr.esd.event.StrategyEventsNotifier; |
|
|
|
|
import com.fr.esd.query.StrategicTableData; |
|
|
|
|
import com.fr.general.ComparatorUtils; |
|
|
|
|
import com.fr.general.IOUtils; |
|
|
|
@ -53,6 +57,7 @@ import com.fr.script.Calculator;
|
|
|
|
|
import com.fr.stable.ArrayUtils; |
|
|
|
|
import com.fr.stable.ParameterProvider; |
|
|
|
|
import com.fr.stable.StringUtils; |
|
|
|
|
import com.fr.workspace.WorkContext; |
|
|
|
|
|
|
|
|
|
import javax.swing.BorderFactory; |
|
|
|
|
import javax.swing.Box; |
|
|
|
@ -619,4 +624,107 @@ public class DBTableDataPane extends AbstractTableDataPane<DBTableData> {
|
|
|
|
|
return this.title; |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* 服务器数据集配置处理器 |
|
|
|
|
*/ |
|
|
|
|
private static class ServerStrategyConfigHandler extends StrategyConfigHandler<DBTableData> { |
|
|
|
|
private final String origName; |
|
|
|
|
|
|
|
|
|
private final String origConnection; |
|
|
|
|
|
|
|
|
|
private final String origQuery; |
|
|
|
|
|
|
|
|
|
public ServerStrategyConfigHandler(DBTableData tableData) { |
|
|
|
|
super(tableData); |
|
|
|
|
this.origName = tableData.getDsName(); |
|
|
|
|
this.origConnection = tableData.getDatabase().toString(); |
|
|
|
|
this.origQuery = tableData.getQuery(); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
@Override |
|
|
|
|
public StrategyConfig find() { |
|
|
|
|
StrategyConfig strategyConfig = null; |
|
|
|
|
if (getTableData() != null) { |
|
|
|
|
try { |
|
|
|
|
strategyConfig = getTableData().getStrategyConfig() == null ? null : getTableData().getStrategyConfig().clone(); |
|
|
|
|
} catch (CloneNotSupportedException e) { |
|
|
|
|
FineLoggerFactory.getLogger().error(e.getMessage(), e); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
return strategyConfig; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
@Override |
|
|
|
|
public void save(DBTableData saved, StrategyConfig strategyConfig) { |
|
|
|
|
String conn = saved.getDatabase().toString(); |
|
|
|
|
String query = saved.getQuery(); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
//检查数据链接和sql是否修改,如果修改需要触发缓存监听事件
|
|
|
|
|
if (!conn.equals(origConnection) || !query.equals(origQuery)) { |
|
|
|
|
if (StringUtils.isNotEmpty(origName)) { |
|
|
|
|
//新建数据集的origName为null,不用触发
|
|
|
|
|
StrategyEventsNotifier.modifyDataSet(DSMapping.ofServerDS(new DsNameTarget(origName))); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
//配置变动事件
|
|
|
|
|
try { |
|
|
|
|
final StrategyConfig orig = getTableData().getStrategyConfig(); |
|
|
|
|
saved.setStrategyConfig(strategyConfig.clone()); |
|
|
|
|
StrategyEventsNotifier.compareAndFireConfigEvents(orig, strategyConfig, DSMapping.ofServerDS(new DsNameTarget(saved.getDsName()))); |
|
|
|
|
} catch (CloneNotSupportedException e) { |
|
|
|
|
FineLoggerFactory.getLogger().error(e.getMessage(), e); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* 模版数据集配置处理器 |
|
|
|
|
*/ |
|
|
|
|
private static class TemplateStrategyConfigHandler extends StrategyConfigHandler<DBTableData> { |
|
|
|
|
public TemplateStrategyConfigHandler(DBTableData tableData) { |
|
|
|
|
super(tableData); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
@Override |
|
|
|
|
public StrategyConfig find() { |
|
|
|
|
StrategyConfig strategyConfig = null; |
|
|
|
|
String tplPath = HistoryTemplateListCache.getInstance().getCurrentEditingTemplate().getEditingFILE().getPath(); |
|
|
|
|
if (getTableData() != null && StringUtils.isNotEmpty(tplPath)) { |
|
|
|
|
//设置保存数据集的事件检查钩子
|
|
|
|
|
//新建模版此时不存在,不需要注册钩子
|
|
|
|
|
if (getTableData().getXmlSavedHook() == null && WorkContext.getWorkResource().exist(tplPath)) { |
|
|
|
|
getTableData().setXmlSavedHook(new DBTableDataSavedHook(tplPath, getTableData())); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
//获取当前的缓存配置,没有就创建一份
|
|
|
|
|
String dsName = getTableData().getDsName(); |
|
|
|
|
|
|
|
|
|
//这里为了之前兼容插件创建的配置,缓存配置不在DBTableData,而是从模版attr读取
|
|
|
|
|
strategyConfig = DesignerStrategyConfigUtils.getStrategyConfig(dsName); |
|
|
|
|
|
|
|
|
|
if (strategyConfig == null || strategyConfig.isUseGlobal()) { |
|
|
|
|
//模版里面没有配置,检查模版是否被开启
|
|
|
|
|
boolean tplEnabled = StrategyConfigService.isTemplateEnabled(tplPath); |
|
|
|
|
if (tplEnabled) { |
|
|
|
|
//使用全局配置
|
|
|
|
|
strategyConfig = StrategyConfigHelper.createStrategyConfig(true); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
return strategyConfig; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
@Override |
|
|
|
|
public void save(DBTableData saved, StrategyConfig config) { |
|
|
|
|
|
|
|
|
|
//DBTableDataSavedHook处理了
|
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|