package com.battdata_rt; import java.sql.ResultSet; import java.sql.SQLException; import java.util.ArrayList; import java.util.Date; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; import com.base.AppConfig; import com.dec.fbs9100.AppParam; import com.dec.fbs9100.FBS9100_Task_Thread_SQL; import com.dec.fbs9100.MysqlConnPool; import com.dec.fbs9100.Sql_Mysql; public class BattData_RT_Array { final public static int DATA_SOURCE_FBSDEV = 0; final public static int DATA_SOURCE_SQLSERVER = 1; final public static int DATA_SOURCE_C_INTERFACE = 2; final public static int DATA_SOURCE_SQLSERVER_AND_C_INTERFACE = 3; private ArrayList Data_Array = new ArrayList(); private MysqlConnPool m_Conn_Pool; private int Sybase_query_count = 0; private Date m_SybaseServerDate = new Date(); private AppParam m_Param; private AppConfig m_AppCfg; private Logger logger = null; public BattData_RT_Array(AppConfig cfg, AppParam param, MysqlConnPool pool) { logger = LogManager.getLogger(this.getClass()); m_AppCfg = cfg; m_Param = param; m_Conn_Pool = pool; } public Date getSybaseServerDateTime() { return m_SybaseServerDate; } public int getSybaseQueryCount() { return Sybase_query_count; } public int getItemCount() { return Data_Array.size(); } public BattData_RT getItem(int index) { return Data_Array.get(index); } public ArrayList getRtData() { return Data_Array; } public void addItem(BattData_RT data) { Data_Array.add(data); } /******************************************************************************************/ /********************************* initBattDataRT_Inf *************************************/ public void initBattDataRT_Inf(double ser_ver) { Data_Array.clear(); initBattDataRT_Inf_FromSQL(); new BattData_RT_RamDB_Thread(m_Conn_Pool, Data_Array, ser_ver).start(); } /******************************************************************************************/ private void initBattDataRT_Inf_FromSQL() { Sql_Mysql sql = null; try { sql = new Sql_Mysql(m_Conn_Pool); sql.sqlMysqlUseDB(Sql_Mysql.DB_BATT_INF); String sql_str = "SELECT DISTINCT " + " FBSDeviceId,FBSDeviceIp,BattGroupName6,GroupIndexInFBSDevice,FBSDeviceName," + " BattGroupId,BattGroupNum,MonCount,BattFloatCurrent,FloatVolLevel,MonCapStd,MonVolStd,sign_type" + " FROM " + Sql_Mysql.BattInf_Table + " WHERE FLOOR(FBSDeviceId/10000)=61850" + " ORDER BY BattGroupId ASC"; ResultSet res = sql.sqlMysqlQuery(sql_str); int auto_cid = 100000001; while(res.next()) { int bg_id = res.getInt("BattGroupId"); int mon_cnt = res.getInt("MonCount"); if(mon_cnt >= 500) { mon_cnt = 500; } if(mon_cnt < 0) { mon_cnt = 0; } boolean batt_group_exist = false; String reg_code = res.getString("BattGroupName6").trim(); String FBSDeviceName = res.getString("FBSDeviceName").trim(); float float_vol_lev = res.getFloat("FloatVolLevel"); float float_curr_lev = res.getFloat("BattFloatCurrent"); int GroupIndexInFBSDevice = res.getInt("GroupIndexInFBSDevice"); int sign_type = res.getInt("sign_type"); if(GroupIndexInFBSDevice > 3) { GroupIndexInFBSDevice = 3; } if(GroupIndexInFBSDevice < 0) { GroupIndexInFBSDevice = 0; } for(int n=0; n 3) { rtdata.GroupIndexInFBSDevice = 3; } if(rtdata.GroupIndexInFBSDevice < 0) { rtdata.GroupIndexInFBSDevice = 0; } rtdata.BattGroupId = res.getInt("BattGroupId"); rtdata.BattGroupNum = res.getInt("BattGroupNum"); rtdata.MonCount = res.getInt("MonCount"); if(rtdata.MonCount >= 500) { rtdata.MonCount = 500; } if(rtdata.MonCount < 0) { rtdata.MonCount = 0; } rtdata.MonStdCap = res.getFloat("MonCapStd"); rtdata.MonStdVol = res.getFloat("MonVolStd"); rtdata.setBattFloatVolCurrLevel(res.getFloat("FloatVolLevel"), res.getFloat("BattFloatCurrent")); for(int mn=0; mn0"; sql.sqlMysqlExecute(sql_str); } if(true == config_reinit_en) { sql_str = "UPDATE " + Sql_Mysql.AppSys_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 == bg_reinit_en) { try { Thread.sleep(1000); } catch (InterruptedException e) { // TODO Auto-generated catch block logger.error(e.toString(), e); } initBattDataRT_Inf_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 bg_reinit_en; } /******************************************************************************************/ }