package com.battmonitor.data_store;
|
|
import java.sql.ResultSet;
|
import java.sql.SQLException;
|
import java.util.ArrayList;
|
|
import com.battmonitor.data.BattData_RT;
|
import com.battmonitor.data.BattStatData;
|
import com.battmonitor.sql.MysqlConnPool;
|
import com.battmonitor.sql.Sql_Mysql;
|
import com.dev.btse.data.FBS9100_ComBase;
|
|
public class InsertDataToMysql_Task implements Runnable {
|
|
private BattData_RT m_batt_rt = null;
|
private MysqlConnPool m_Conn_Pool;
|
|
public InsertDataToMysql_Task()
|
{
|
}
|
|
public InsertDataToMysql_Task(BattData_RT rt_dat, MysqlConnPool pool) {
|
m_batt_rt = rt_dat;
|
m_Conn_Pool = pool;
|
}
|
|
public int getBattGroupID() {
|
return m_batt_rt.BattGroupId;
|
}
|
|
private void inserTestDataToDB(Sql_Mysql sql_v, int test_stoptype_t) {
|
boolean result = true;
|
for(int c=0; c<3; c++) {
|
try {
|
sql_v.mysql_con.setAutoCommit(false);
|
//------------------------------------------------------------//
|
String sql_str = InsertDataToMysql_Task_SQL.getInsertBattTestDataStr(m_batt_rt);
|
sql_v.sqlMysqlExecute(sql_str);
|
//------------------------------------------------------------//
|
ArrayList<String> al_sql_str = InsertDataToMysql_Task_SQL.getInsertOrUpdateBattTestDataStopStr(m_batt_rt);
|
for(int n=0; n<al_sql_str.size(); n++) {
|
sql_v.sqlMysqlExecute(al_sql_str.get(n));
|
}
|
//------------------------------------------------------------//
|
/*
|
if(1 == m_batt_rt.mTestData.testRecordCount) {
|
m_batt_rt.MysqlRecordInf_Exist = true;
|
}
|
//------------------------------------------------------------//
|
ResultSet rest_t = sql_v.sqlMysqlQuery("SELECT COUNT(*) FROM " + Sql_Mysql.BattTestDataInf_Table
|
+ " WHERE BattGroupId=" + m_batt_rt.BattGroupId
|
+ " AND test_record_count=" + m_batt_rt.mTestData.testRecordCount);
|
if(rest_t.next()) {
|
if(rest_t.getInt(1) < 1) {
|
m_batt_rt.MysqlRecordInf_Exist = false;
|
}
|
}
|
*/
|
ResultSet rest_t = sql_v.sqlMysqlQuery("SELECT BattGroupId FROM " + Sql_Mysql.BattTestDataInf_Table
|
+ " WHERE BattGroupId=" + m_batt_rt.BattGroupId
|
+ " AND test_starttime='" + m_batt_rt.mTestData.getStartTestTimeString() + "'");
|
if(rest_t.next()) {
|
m_batt_rt.MysqlRecordInf_Exist = true;
|
} else {
|
m_batt_rt.MysqlRecordInf_Exist = false;
|
}
|
sql_v.logger.trace("BattGroupId:" + m_batt_rt.BattGroupId
|
+ ", testRecordCount:" + m_batt_rt.mTestData.testRecordCount
|
+ ", test_starttime:" + m_batt_rt.mTestData.getStartTestTimeString()
|
+ " m_batt_rt.MysqlRecordInf_Exist:" + m_batt_rt.MysqlRecordInf_Exist
|
+ " test_stoptype_t:" + test_stoptype_t);
|
//------------------------------------------------------------//
|
sql_str = InsertDataToMysql_Task_SQL.getInsertOrUpdateBattTestDataInfStr(m_batt_rt, test_stoptype_t);
|
sql_v.sqlMysqlExecute(sql_str);
|
//------------------------------------------------------------//
|
sql_v.mysql_con.commit();
|
|
m_batt_rt.mTestData.recordNum += 1;
|
m_batt_rt.clear_al_MonVol_History_New();
|
|
m_batt_rt.MysqlDataResInfTable_Exist = true;
|
m_batt_rt.MysqlRecordInf_Exist = true;
|
} catch (SQLException e) {
|
try {
|
sql_v.mysql_con.rollback();
|
} catch (SQLException e1) {
|
// TODO Auto-generated catch block
|
sql_v.logger.error("InsertDataToMysql_Task.inserTestDataToDB():" + e1.toString(), e1);
|
}
|
sql_v.logger.error("InsertDataToMysql_Task.inserTestDataToDB():" + e.toString(), e);
|
result = false;
|
} finally {
|
try {
|
sql_v.mysql_con.setAutoCommit(true);
|
} catch (SQLException e1) {
|
// TODO Auto-generated catch block
|
sql_v.logger.error("InsertDataToMysql_Task.inserTestDataToDB():" + e1.toString(), e1);
|
}
|
if(true == result) {
|
break;
|
} else {
|
try {
|
Thread.sleep(500);
|
} catch (InterruptedException e) {
|
sql_v.logger.error("InsertDataToMysql_Task.inserTestDataToDB():" + e.toString(), e);
|
}
|
}
|
}
|
}
|
}
|
|
@Override
|
public void run() {
|
Sql_Mysql sql = new Sql_Mysql(m_Conn_Pool.getConn());
|
String sql_str = null;
|
try {
|
//----------------- get rtdata from db for not bts or FBS9100 dev -----------------------//
|
/*
|
if(((m_batt_rt.FBSDeviceId/1000000) != 910)
|
&& ((m_batt_rt.FBSDeviceId/1000000) != 91)
|
&& ((m_batt_rt.FBSDeviceId/10000) != 9600)
|
&& ((m_batt_rt.FBSDeviceId/10000) != 9610)
|
&& ((m_batt_rt.FBSDeviceId/100000) != 9616)) {
|
InsertDataToMysql_Task_SQL.get_MonData_From_BattData_RT_RamDB_Table(m_Conn_Pool, m_batt_rt);
|
}
|
*/
|
//----------------- get rtdata from db for not bts or FBS9100 dev -----------------------//
|
|
sql.sqlMysqlUseDB(Sql_Mysql.DB_BATT_TESTDATA);
|
|
if(false == m_batt_rt.MysqlDataTable_Exist) {
|
sql_str = InsertDataToMysql_Task_SQL.getCreateBattTestDataStr("`tb_BattTestDataStop_" + m_batt_rt.BattGroupId + "` ");
|
sql.sqlMysqlExecute(sql_str);
|
m_batt_rt.MysqlDataTable_Exist = sql.sqlMysqlCheckIfTableExist("tb_BattTestData_" + m_batt_rt.BattGroupId);
|
}
|
|
if(false == m_batt_rt.MysqlDataTable_Exist) {
|
sql.logger.warn("tb_BattTestData_" + m_batt_rt.BattGroupId + " is not exist, create it now...");
|
sql_str = InsertDataToMysql_Task_SQL.getCreateBattTestDataStr("`tb_BattTestData_" + m_batt_rt.BattGroupId + "` ");
|
sql.sqlMysqlExecute(sql_str);
|
}
|
|
if(/*(BattStatData.BATTSTATE_FLOAT != m_batt_rt.mTestData.TestState_RT)
|
&&*/ (BattStatData.BATTSTATE_FLOAT != m_batt_rt.mTestData.battTestState)) {
|
inserTestDataToDB(sql, -1);
|
} else {
|
int st_type = m_batt_rt.mTestData.test_stoptype;
|
if((BattStatData.TEST_LOADER_FBS9100S == m_batt_rt.mTestData.getLoaderType())
|
|| ((FBS9100_ComBase.ALARM_POWERRESUMESTOP_HELUQI<=st_type)
|
//&& (st_type<=FBS9100_ComBase.ALARM_SVLLSTOP_HELUQI))) {
|
&& (st_type<=FBS9100_ComBase.ALARM_UNKOWN))) {
|
m_batt_rt.set_al_MonVol_History_New();
|
inserTestDataToDB(sql, m_batt_rt.mTestData.test_stoptype);
|
}
|
if(m_batt_rt.mTestData.testTimeLong < m_batt_rt.mTestTimeLongMin) {
|
try {
|
sql.mysql_con.setAutoCommit(false);
|
ArrayList<String> al_str = InsertDataToMysql_Task_SQL.getDeleteBattTestDataStr(m_batt_rt);
|
for(int n=0; n<al_str.size(); n++) {
|
sql.sqlMysqlExecute(al_str.get(n));
|
if(0 == n) {
|
sql.logger.trace("InsertDataToMysql_Task.run():" + al_str.get(n));
|
}
|
}
|
sql.mysql_con.commit();
|
|
} catch (SQLException e) {
|
sql.mysql_con.rollback();
|
sql.logger.error("InsertDataToMysql_Task.run():" + e.toString(), e);
|
} finally {
|
sql.mysql_con.setAutoCommit(true);
|
}
|
}
|
}
|
} catch (SQLException e) {
|
sql.logger.error(e.toString(), e);
|
} finally {
|
sql.close_con();
|
m_batt_rt.clearStoreDataBusyTag();
|
}
|
}
|
}
|