forked from fanruan/design
rinoux
3 years ago
7 changed files with 154 additions and 140 deletions
@ -0,0 +1,37 @@ |
|||||||
|
package com.fr.design.data.tabledata.strategy; |
||||||
|
|
||||||
|
import com.fr.esd.core.strategy.config.StrategyConfig; |
||||||
|
import com.fr.esd.query.StrategicTableData; |
||||||
|
|
||||||
|
/** |
||||||
|
* @author rinoux |
||||||
|
* @version 10.0 |
||||||
|
* Created by rinoux on 2021/3/19 |
||||||
|
*/ |
||||||
|
public abstract class StrategyConfigHandler<T extends StrategicTableData> { |
||||||
|
|
||||||
|
private final T tableData; |
||||||
|
|
||||||
|
public StrategyConfigHandler(T tableData) { |
||||||
|
this.tableData = tableData; |
||||||
|
} |
||||||
|
|
||||||
|
protected T getTableData() { |
||||||
|
return tableData; |
||||||
|
} |
||||||
|
|
||||||
|
/** |
||||||
|
* 查找配置 |
||||||
|
* |
||||||
|
* @return 缓存配置 |
||||||
|
*/ |
||||||
|
public abstract StrategyConfig find(); |
||||||
|
|
||||||
|
|
||||||
|
/** |
||||||
|
* 保存配置 |
||||||
|
* |
||||||
|
* @param config 缓存配置 |
||||||
|
*/ |
||||||
|
public abstract void save(T saved, StrategyConfig config); |
||||||
|
} |
@ -1,70 +0,0 @@ |
|||||||
package com.fr.design.data.tabledata.tabledatapane.db; |
|
||||||
|
|
||||||
import com.fr.data.impl.DBTableData; |
|
||||||
import com.fr.esd.core.strategy.config.StrategyConfig; |
|
||||||
import com.fr.esd.event.DSMapping; |
|
||||||
import com.fr.esd.event.DsNameTarget; |
|
||||||
import com.fr.esd.event.StrategyEventsNotifier; |
|
||||||
import com.fr.log.FineLoggerFactory; |
|
||||||
import com.fr.stable.StringUtils; |
|
||||||
|
|
||||||
/** |
|
||||||
* @author rinoux |
|
||||||
* @version 10.0 |
|
||||||
* Created by rinoux on 2021/3/19 |
|
||||||
*/ |
|
||||||
public class ServerStrategyConfigHandler implements StrategyConfigHandler { |
|
||||||
private final DBTableData tableData; |
|
||||||
|
|
||||||
private final String origName; |
|
||||||
|
|
||||||
private final String origConnection; |
|
||||||
|
|
||||||
private final String origQuery; |
|
||||||
|
|
||||||
public ServerStrategyConfigHandler(DBTableData tableData) { |
|
||||||
this.tableData = tableData; |
|
||||||
this.origName = tableData.getDsName(); |
|
||||||
this.origConnection = tableData.getDatabase().toString(); |
|
||||||
this.origQuery = tableData.getQuery(); |
|
||||||
} |
|
||||||
|
|
||||||
@Override |
|
||||||
public StrategyConfig find() { |
|
||||||
StrategyConfig strategyConfig = null; |
|
||||||
if (tableData != null) { |
|
||||||
try { |
|
||||||
strategyConfig = tableData.getStrategyConfig() == null ? null : tableData.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 = tableData.getStrategyConfig(); |
|
||||||
saved.setStrategyConfig(strategyConfig.clone()); |
|
||||||
StrategyEventsNotifier.compareAndFireConfigEvents(orig, strategyConfig, DSMapping.ofServerDS(new DsNameTarget(saved.getDsName()))); |
|
||||||
} catch (CloneNotSupportedException e) { |
|
||||||
FineLoggerFactory.getLogger().error(e.getMessage(), e); |
|
||||||
} |
|
||||||
} |
|
||||||
} |
|
@ -1,16 +0,0 @@ |
|||||||
package com.fr.design.data.tabledata.tabledatapane.db; |
|
||||||
|
|
||||||
import com.fr.data.impl.DBTableData; |
|
||||||
import com.fr.esd.core.strategy.config.StrategyConfig; |
|
||||||
|
|
||||||
/** |
|
||||||
* @author rinoux |
|
||||||
* @version 10.0 |
|
||||||
* Created by rinoux on 2021/3/19 |
|
||||||
*/ |
|
||||||
public interface StrategyConfigHandler { |
|
||||||
|
|
||||||
StrategyConfig find(); |
|
||||||
|
|
||||||
void save(DBTableData saved, StrategyConfig config); |
|
||||||
} |
|
@ -1,50 +0,0 @@ |
|||||||
package com.fr.design.data.tabledata.tabledatapane.db; |
|
||||||
|
|
||||||
import com.fr.base.TableData; |
|
||||||
import com.fr.data.impl.DBTableData; |
|
||||||
import com.fr.design.data.DesignerStrategyConfigUtils; |
|
||||||
import com.fr.design.file.HistoryTemplateListCache; |
|
||||||
import com.fr.esd.core.strategy.config.StrategyConfig; |
|
||||||
import com.fr.esd.query.StrategicTableData; |
|
||||||
import com.fr.workspace.WorkContext; |
|
||||||
|
|
||||||
/** |
|
||||||
* @author rinoux |
|
||||||
* @version 10.0 |
|
||||||
* Created by rinoux on 2021/3/19 |
|
||||||
*/ |
|
||||||
public class TemplateStrategyConfigHandler implements StrategyConfigHandler { |
|
||||||
|
|
||||||
DBTableData tableData; |
|
||||||
|
|
||||||
public TemplateStrategyConfigHandler(DBTableData tableData) { |
|
||||||
this.tableData = tableData; |
|
||||||
} |
|
||||||
|
|
||||||
@Override |
|
||||||
public StrategyConfig find() { |
|
||||||
StrategyConfig strategyConfig = null; |
|
||||||
if (tableData != null) { |
|
||||||
//设置保存数据集的事件检查钩子
|
|
||||||
String tplPath = HistoryTemplateListCache.getInstance().getCurrentEditingTemplate().getEditingFILE().getPath(); |
|
||||||
|
|
||||||
//新建模版此时不存在,不需要注册钩子
|
|
||||||
if (tableData.getXmlSavedHook() == null && WorkContext.getWorkResource().exist(tplPath)) { |
|
||||||
tableData.setXmlSavedHook(new DBTableDataSavedHook(tplPath, tableData)); |
|
||||||
} |
|
||||||
|
|
||||||
//获取当前的缓存配置,没有就创建一份
|
|
||||||
String dsName = tableData.getDsName(); |
|
||||||
|
|
||||||
//这里为了之前兼容插件创建的配置,缓存配置不在DBTableData,而是从模版attr读取
|
|
||||||
strategyConfig = DesignerStrategyConfigUtils.getStrategyConfig(dsName); |
|
||||||
} |
|
||||||
|
|
||||||
return strategyConfig; |
|
||||||
} |
|
||||||
|
|
||||||
@Override |
|
||||||
public void save(DBTableData saved, StrategyConfig config) { |
|
||||||
|
|
||||||
} |
|
||||||
} |
|
Loading…
Reference in new issue