gongbin
2 years ago
1 changed files with 84 additions and 0 deletions
@ -0,0 +1,84 @@
|
||||
package com.fr.plugin.dynamic.dbconnect.conf; |
||||
|
||||
import com.fr.config.*; |
||||
import com.fr.config.holder.Conf; |
||||
import com.fr.config.holder.factory.Holders; |
||||
import com.fr.log.FineLoggerFactory; |
||||
import com.fr.plugin.dynamic.dbconnect.bean.DynamicDbConnectBean; |
||||
import org.json.JSONArray; |
||||
import org.json.JSONObject; |
||||
|
||||
import java.util.ArrayList; |
||||
|
||||
|
||||
@Visualization(category = "动态数据连接配置") |
||||
public class DynamicDbConnectConfig extends DefaultConfiguration { |
||||
|
||||
private static volatile DynamicDbConnectConfig config = null; |
||||
|
||||
public static DynamicDbConnectConfig getInstance(){ |
||||
if(null == config){ |
||||
config = (DynamicDbConnectConfig) ConfigContext.getConfigInstance(DynamicDbConnectConfig.class); |
||||
} |
||||
return config; |
||||
} |
||||
|
||||
public String getNameSpace() { |
||||
return "DynamicDbConnectConfig"; |
||||
} |
||||
|
||||
@Identifier(value = "",name="配置规则",description = "配置规则格式为:[{\"reportName\": \"WorkBook2.cpt\",\"connectName\":\"mysql\",\"role\": \"zhangsan\"}] ",status = Status.SHOW) |
||||
private Conf<String> connectConfig = Holders.simple(""); |
||||
|
||||
public String getConnectConfig(){ |
||||
return connectConfig.get(); |
||||
} |
||||
|
||||
public void setConnectConfig(String value){ |
||||
connectConfig.set(value); |
||||
FineLoggerFactory.getLogger().info("set connectConfig :"+value); |
||||
parseConfig(); |
||||
} |
||||
|
||||
public String oldConfig = ""; |
||||
public ArrayList<DynamicDbConnectBean> configBeans; |
||||
/** |
||||
* 解析配置 |
||||
*/ |
||||
public void parseConfig(){ |
||||
String config = this.getConnectConfig(); |
||||
FineLoggerFactory.getLogger().info("set parseConfig :"+config); |
||||
if(config != ""){ |
||||
try{ |
||||
JSONArray array = new JSONArray(config); |
||||
configBeans = new ArrayList<>(); |
||||
for(int i = 0 ; i < array.length();i++){ |
||||
JSONObject item = (JSONObject)array.get(i); |
||||
DynamicDbConnectBean bean = new DynamicDbConnectBean( |
||||
item.get("reportName").toString(), |
||||
item.get("role").toString(), |
||||
item.get("connectName").toString() |
||||
); |
||||
configBeans.add(bean); |
||||
} |
||||
} |
||||
catch(Exception ex){ |
||||
FineLoggerFactory.getLogger().error("动态数据连接配置解析配置失败:"+ex.getMessage()); |
||||
} |
||||
} |
||||
} |
||||
|
||||
public DynamicDbConnectBean getDbConnectBean(String reportName,String role){ |
||||
if(configBeans != null && configBeans.size() > 0){ |
||||
for(DynamicDbConnectBean bean : configBeans){ |
||||
if(bean.getReportName().equals(reportName) && bean.getRole().equals(role)){ |
||||
return bean; |
||||
} |
||||
} |
||||
return null; |
||||
} |
||||
else{ |
||||
return null; |
||||
} |
||||
} |
||||
} |
Loading…
Reference in new issue