package com.power.data;
|
|
import java.sql.ResultSet;
|
import java.sql.SQLException;
|
import java.util.ArrayList;
|
|
import org.apache.logging.log4j.LogManager;
|
import org.apache.logging.log4j.Logger;
|
|
import com.base.AppConfig;
|
import com.power.mysql.Sql_Mysql;
|
import com.power.mysql.MysqlConnPool;
|
|
public class PowerData_RT_Array {
|
|
private MysqlConnPool m_Conn_Pool;
|
private AppConfig m_AppCfg;
|
|
private ArrayList<PowerData_RT> Data_Array = new ArrayList<PowerData_RT>();
|
|
Logger logger = null;
|
|
public PowerData_RT_Array(AppConfig cfg, MysqlConnPool pool) {
|
logger = LogManager.getLogger(this.getClass());
|
|
m_AppCfg = cfg;
|
m_Conn_Pool = pool;
|
|
|
}
|
|
public int getItemCount(){
|
return Data_Array.size();
|
}
|
|
public PowerData_RT getItem(int index) {
|
return Data_Array.get(index);
|
}
|
|
public void addItem(PowerData_RT data) {
|
Data_Array.add(data);
|
}
|
|
public void initPowerData_RT_Info() {
|
Data_Array.clear();
|
|
initPowerData_RT_FromSQL();
|
}
|
|
private void initPowerData_RT_FromSQL() {
|
Sql_Mysql sql = new Sql_Mysql(m_Conn_Pool.getConn());
|
|
try {
|
sql.sqlMysqlUseDB(Sql_Mysql.DB_PWRDEV_INF);
|
|
String sql_str = "SELECT DISTINCT "
|
+ " PowerDeviceId,PowerDeviceIp,ProtocolName"
|
+ " FROM " + Sql_Mysql.TB_PWRDEV_INF
|
+ " ORDER BY PowerDeviceId ASC";
|
|
ResultSet res = sql.sqlMysqlQuery(sql_str);
|
|
while(res.next()) {
|
|
boolean pwrDev_exists = false;
|
|
int pwrdevid = res.getInt("PowerDeviceId");
|
String pwrdevip = res.getString("PowerDeviceIp").trim();
|
String pwrdevprotname = res.getString("ProtocolName").trim();
|
|
//logger.info("Select res: pwrdevid = " + pwrdevid + "-- IP = " + pwrdevip);
|
|
for(int n=0;n<Data_Array.size();n++) {
|
PowerData_RT rtd = Data_Array.get(n);
|
|
if(rtd.PowerDevDeviceId == pwrdevid) {
|
|
if(pwrdevip != rtd.PowerDevDeviceIp) {
|
rtd.PowerDevDeviceIp = pwrdevip;
|
}
|
|
if(pwrdevprotname != rtd.PowerDevProtocolName) {
|
rtd.PowerDevProtocolName = pwrdevprotname;
|
}
|
|
pwrDev_exists = true;
|
break;
|
}
|
}
|
|
if(true == pwrDev_exists) {
|
continue;
|
}
|
else {
|
|
PowerData_RT rtdata = new PowerData_RT(m_Conn_Pool);
|
|
rtdata.PowerDevDeviceId = pwrdevid;
|
rtdata.PowerDevDeviceIp = pwrdevip;
|
rtdata.PowerDevProtocolName = pwrdevprotname;
|
|
//logger.info("Insert: pwrdevid = " + pwrdevid + "-- IP = " + pwrdevip);
|
|
//²åÈëÒ»Ìõ¼Ç¼
|
rtdata.InsertPower_ACDC_Data_ToTable();
|
rtdata.InsertPower_AC_Data_ToTable();
|
rtdata.InsertPower_DC_Data_ToTable();
|
|
rtdata.InsertPower_RT_INFO_ToTable();
|
|
rtdata.InsertPower_Input_INFO_ToTable();
|
|
Data_Array.add(rtdata);
|
}
|
}
|
|
}catch (Exception e) {
|
logger.error(e.toString(), e);
|
} finally {
|
sql.close_con();
|
|
|
//logger.info("Data_Array Size = " + Data_Array.size() + ";id1=" + Data_Array.get(0).PowerDevDeviceId + ";id2=" + Data_Array.get(1).PowerDevDeviceId+";id3=" + Data_Array.get(2).PowerDevDeviceId);
|
}
|
}
|
|
public boolean checkAndReinitPwrDevData() {
|
|
boolean pwrdata_reinit_en = false;
|
boolean config_reinit_en = false;
|
|
Sql_Mysql sql = new Sql_Mysql(m_Conn_Pool.getConn());
|
|
try {
|
String sql_str = "SELECT AppServer_Reinit_PowerData_EN, AppServer_Reinit_Config_EN"
|
+ " FROM " + Sql_Mysql.PWRAPP_SYS_TABLE;
|
|
ResultSet res = sql.sqlMysqlQuery(sql_str);
|
|
if(res.next()) {
|
pwrdata_reinit_en = res.getBoolean("AppServer_Reinit_PowerData_EN");
|
config_reinit_en = res.getBoolean("AppServer_Reinit_Config_EN");
|
}
|
|
if(true == pwrdata_reinit_en) {
|
sql_str = "UPDATE " + Sql_Mysql.PWRAPP_SYS_TABLE
|
+ " SET AppServer_Reinit_PowerData_EN=false WHERE num>0";
|
sql.sqlMysqlExecute(sql_str);
|
}
|
|
if(true == config_reinit_en) {
|
sql_str = "UPDATE " + Sql_Mysql.PWRAPP_SYS_TABLE
|
+ " SET AppServer_Reinit_Config_EN=false WHERE num>0";
|
sql.sqlMysqlExecute(sql_str);
|
}
|
} catch (SQLException e) {
|
logger.error(e.toString(), e);
|
} finally {
|
sql.close_con();
|
}
|
|
if(true == pwrdata_reinit_en) {
|
try {
|
Thread.sleep(1000);
|
} catch (InterruptedException e) {
|
// TODO Auto-generated catch block
|
logger.error(e.toString(), e);
|
}
|
|
initPowerData_RT_FromSQL();
|
}
|
if(true == config_reinit_en) {
|
m_AppCfg.readConfigFromXml();
|
m_Conn_Pool.setMaxPoolSize(m_AppCfg.getMysqlConnCountMax());
|
}
|
|
try {
|
Thread.sleep(200);
|
} catch (InterruptedException e) {
|
// TODO Auto-generated catch block
|
logger.error(e.toString(), e);
|
}
|
|
return pwrdata_reinit_en;
|
}
|
|
|
|
|
}
|