📄 crbtscandb.java
字号:
}
}
}
// }
//// }
// }.start();
}
/**组装我们的CRBT然后加到CRBTQueue队列**/
public static void structCRBT(){
CRBT crbt = new CRBT();
crbt.setCraccount_20(craccount_20);
crbt.setCrid_20(crid_20);
crbt.setDes_addr_6(des_addr_6);
crbt.setMobile_number_20(mobile_number_20);
crbt.setNew_pass_8(new_pass_8);
crbt.setOld_pass_8(old_pass_8);
crbt.setOper_id_1(oper_id_1);
crbt.setPassword_8(password_8);
crbt.setReceiver_20(receiver_20);
crbt.setRemark1(remark1);
crbt.setRemark2(remark2);
crbt.setRet1_10(ret1_10);
crbt.setRingName_40(ringName_40);
crbt.setRingtype_4(ringtype_4);
crbt.setSendNum(sendNum);
crbt.setSendTime(sendTime==null||sendTime==""?Util.getCurrentTime():sendTime);
crbt.setSendtype(sendtype);
crbt.setSeq_no_10(seq_no_10==null||seq_no_10==""?Util.getSeq_no():seq_no_10);
crbt.setSou_addr_6(sou_addr_6);
crbt.setSrcflag_1(srcflag_1);
crbt.setSrcIpaddr_20(srcIpaddr_20);
crbt.setSrcPrice_4(srcPrice_4);
crbt.setType(type);
crbt.setUser_type_2(user_type_2);
GetCRBTGlobalForUsual.getInstance().add(crbt);
}
/**
* 启动扫描数据库线程
*
*/
public static void start(){
LoggerConstant.log.info("------启动扫描数据库线程");
while(!datacommon.initCommon()){
LoggerConstant.log.info("------数据库初始化失败");
try {
Thread.sleep(2000);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
LoggerConstant.log.info("------重新初始化数据库");
}
LoggerConstant.log.info("------数据库初始化成功!");
hasInitFlag = true;
/**
* 以下的两个Timer线程设施最好不要整合在一起,原因是每一次扫描都可能出现CRBT读出或Resp入库阻塞线程的危险,
* 而造成另一个扫描不能得到及时的进行。
*/
/**
* 扫描RespQueue队列,进行入库 */
if(timerResp==null)
timerResp = new Timer(true);
timerResp.schedule(new TimerTask(){
public void run(){
scan();
}
}, 1000, 5000);
/**
* 扫描Crbtqueue读出CRBT数据 */
if(timerCrbt==null)
timerCrbt = new Timer(true);
timerCrbt.schedule(new TimerTask(){
public void run(){
saveResp();
}
}, 1000, 5000);
}
public static void stop(){
if(timerCrbt!=null)
timerCrbt.cancel();
timerCrbt = null;
if(timerResp!=null)
timerResp.cancel();
timerResp = null;
stopFlag = true;
}
public static void initDBcommon(){
if(!hasInitFlag){
if(datacommon.initCommon()){
hasInitFlag=true;
}
}
}
/**
* 断开数据库连接
* @param conn Connection
*/
public void closeConnectionForCRBT() {
try {
if (conn != null) {
conn.close();
}
} catch (Exception ex) {
}
}
public void closeConnectionForRESP(){
try {
if(connResp!=null)
connResp.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
/** 退出系统时如果CRBTQueue队列不为空,则将其中的CRBT数据在数据库中的映射更新为未发送状态 */
public static boolean backCrbt(){
while(!hasInitFlag){
initDBcommon();
}
try {
if(conn==null)
conn = datacommon.POOL.getConnection();
while(GetCRBTGlobalForUsual.crbtqueue.size()>0){
CRBT crbt = (CRBT)GetCRBTGlobalForUsual.crbtqueue.removeNoWait();
String sql="update " +_TABLENAME+
" e set e.NUMsendFlag=1 where e.VC2Seq_no="+crbt.getSeq_no_10();
conn.createStatement().executeQuery(sql);
}
}catch (Exception e) {
e.printStackTrace();
return false;
}
finally {
if(conn != null) {
try {
conn.close();
conn = null;
}catch (SQLException ex1) {}
}
}
return true;
}
/** 退出系统时如果RespQueue队列不为空,则将其中的CRBT数据入库 */
public static boolean backResp(){
while(!hasInitFlag){
initDBcommon();
}
Statement stmt = null;
ResultSet rst = null;
String sql;
CRBT temp = null;
try {
if(connResp==null)
connResp = datacommon.POOL.getConnection();
while(GetCRBTGlobalForUsual.respqueue.size()>0){
CRBT crbt = (CRBT)GetCRBTGlobalForUsual.respqueue.removeNoWait();
temp = crbt;
// LoggerConstant.log.info("------从RespQueue队列获取CRBT_Resp成功");
/** 以下判断该CRBT是否是由Socket接收到的Test_CRBT,
* 如果是由Socket接收到的Test_CRBT则进行入库,同时在NUMSENDFLAG字段置1,准备由Scan扫描发送*/
String remark1 = crbt.getRemark1();//判断是否是由Socket接收的Test信息
if (remark1.equalsIgnoreCase("TEST")) {
LoggerConstant.sqllog.info("INFO - 由Socket接收到的CRBT数据先执行入库操作");
sql = "insert into " +_TABLENAME+
" (NUMSENDFLAG,VC2TYPE,NUMSENDTYPE,NUMSENDNUM,DATSENDTIME,VC2SOU_ADDR,"+
"VC2DES_ADDR,VC2SEQ_NO,VC2CRACCOUNT,VC2PASSWORD,VC2CRID,VC2SRCFLAG," +
"VC2SRCIPADDR,VC2RINGTYPE,VC2OLD_PASS,VC2NEW_PASS,VC2RECEIVER,VC2MOBILE_NUM," +
"VC2OPER_ID,VC2USER_TYPE,VC2RINGNAME,VC2REMARK1,NUMID) " +
"values "
+ "(1,'"+crbt.getType()+"',"+crbt.getSendtype()+","+crbt.getSendNum()+
",to_date('"+crbt.getSendTime()+"','yyyy-mm-dd hh24:mi:ss'),'"+
crbt.getSou_addr_6()+"','"+crbt.getDes_addr_6()+"',temp_crbt_send_seqno.nextval,'"
+crbt.getCraccount_20()+"','"+crbt.getPassword_8()+"','"+crbt.getCrid_20()+
"','"+crbt.getSrcflag_1()+"','"+crbt.getSrcIpaddr_20()+"','"+crbt.getRingtype_4()+
"','"+crbt.getOld_pass_8()+"','"+crbt.getNew_pass_8()+"','"+crbt.getReceiver_20()+
"','"+crbt.getMobile_number_20()+"','"+crbt.getOper_id_1()+"','"
+crbt.getUser_type_2()+"','"+crbt.getRingName_40()+"','" +
crbt.getRemark1()+"',temp_crbt_send_seq.nextval) ";
LoggerConstant.sqllog.info("SQL - "+sql);
connResp.createStatement().executeQuery(sql);
LoggerConstant.sqllog.info("INFO - 接收到的CRBT数据入库成功!");
break;
}
String seq_no_10_resp = crbt.getSeq_no_10();
String command_status_resp_4 = crbt.getCommand_status_resp_4()==null?"":
crbt.getCommand_status_resp_4();
String Status_resp_2 = crbt.getStatus_resp_2()==null?"":
crbt.getStatus_resp_2();
String Craccount_resp_20 = crbt.getCraccount_resp_20()==null?"":
crbt.getCraccount_resp_20();
String Password_resp_8 = crbt.getPassword_resp_8()==null?"":
crbt.getPassword_resp_8();
String Totalnum_resp_4 = crbt.getTotalnum_resp_4()==null?"":
crbt.getTotalnum_resp_4();
String Crid_resp_200 = crbt.getCrid_resp_200()==null?"":
crbt.getCrid_resp_200();
String respTime = crbt.getRespTime()==null||crbt.getRespTime()==""?
Util.getCurrentTime():crbt.getRespTime();
/** 以下判断数据库中是否有相应的Seq_no,有则执行update操作,无则insert*/
boolean hasSeqFlag = false;
sql = "select e.VC2seq_no from "+_TABLENAME+" e";
stmt = connResp.createStatement();
rst = stmt.executeQuery(sql);
while(rst.next()){
String seq_no = rst.getString("VC2seq_no");
if(seq_no.equalsIgnoreCase(seq_no_10_resp)){//判断该seq_no_10_resp是否在数据库中有对应项
hasSeqFlag = true;//有则执行update,无则执行insert
rst.close();
rst = null;
break;
}
}
if(hasSeqFlag){
// LoggerConstant.sqllog.info("INFO - 找到匹配的seq_no,将执行update操作");
sql = "update "
+ _TABLENAME
+ " e set"
+ " e.VC2cmd_stu_resp='"
+ command_status_resp_4
+ "', e.VC2Status_resp='"
+ Status_resp_2
+ "', e.VC2Crac_resp='"
+ Craccount_resp_20
+ "', e.VC2Pass_resp='"
+ Password_resp_8
+ "', e.NUMTotal_resp="
+ Totalnum_resp_4
+ " ,e.VC2Crid_resp='"
+ Crid_resp_200
+ "', e.DATrespTime=to_date('"
+ respTime
+ "','yyyy-mm-dd HH24:mi:ss') where e.VC2seq_no="
+ seq_no_10_resp;
}else{
// LoggerConstant.sqllog.info("INFO - 没有找到匹配的seq_no,将执行insert操作");
sql = "insert into "
+ _TABLENAME
+ " (VC2cmd_stu_resp,VC2Status_resp,VC2Crac_resp,"
+ "VC2Pass_resp,NUMTotal_resp,VC2Crid_resp,DATrespTime,VC2seq_no,NUMID) "
+ "values ('" + command_status_resp_4
+ "','" + Status_resp_2 + "','"
+ Craccount_resp_20 + "','"
+ Password_resp_8 + "','"
+ Totalnum_resp_4 + "','"
+ Crid_resp_200 + "',to_date('"
+ respTime
+ "','yyyy-mm-dd HH24:mi:ss'),'"
+ seq_no_10_resp
+ "',temp_crbt_send_seq.nextval) ";
}
LoggerConstant.sqllog.info("SQL - "+sql);
stmt = connResp.createStatement();
rst = stmt.executeQuery(sql);
rst.close();
rst = null;
// LoggerConstant.log.info("------Resp插入数据库成功");
}
}catch (Exception e) {
// LoggerConstant.log.info("------Resp插入数据库失败");
if(temp!=null)
GetCRBTGlobalForUsual.getInstance().addResp(temp);
e.printStackTrace();
return false;
} finally {
if( rst != null ){
try {
rst.close();
rst = null;
}
catch (SQLException ex2) {
}
}
if (stmt != null) {
try {
stmt.close();
stmt = null;
} catch (SQLException ex) {
}
}
if (connResp != null) {
try {
connResp.close();
connResp = null;
}catch (SQLException ex1) {
}
}
}
return true;
}
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
while(!datacommon.initCommon()){
LoggerConstant.log.info("------数据库初始化失败");
try {
Thread.sleep(2000);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
LoggerConstant.log.info("------重新初始化数据库");
}
for(int i=0;i<30;i++){
// CrbtScanDB.newQurry(i);
}
System.out.println("END!");
}
public static synchronized boolean isHasInitFlag() {
return hasInitFlag;
}
public static synchronized void setHasInitFlag(boolean hasInitFlag) {
CrbtScanDB.hasInitFlag = hasInitFlag;
}
public synchronized String getStartTime() {
return startTime;
}
public synchronized void setStartTime(String startTime) {
this.startTime = startTime;
}
public synchronized String getStopTime() {
return stopTime;
}
public synchronized void setStopTime(String stopTime) {
this.stopTime = stopTime;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -