📄 smqueue.java
字号:
package com.tssx.ebiz.sgip;
import java.sql.*;
import java.util.*;
import java.text.*;
import java.io.*;
public class SMQueue {
/** 数据库连接 */
Connection dbconn = null;
public SMQueue(Connection conn) {
dbconn = conn;
}
/**
* 取得队列中所有当前不处于‘发送中状态’的短消息ID
* @return SMMessage数组,不包含发送中的短消息
* @exception 不能存取短消息队列,可能的原因是不能存取数据库
*/
public synchronized SMMessage getMessage()
throws SMQueueAccessException, SMParameterException {
if (dbconn == null)
throw new SMQueueAccessException("DB dbconnection error");
SMMessage smmsg = new SMMessage();
Statement stmtQuery = null;
Statement stmtUpdate = null;
boolean autoCommit = false;
try {
stmtQuery = dbconn.createStatement();
autoCommit = dbconn.getAutoCommit();
dbconn.setAutoCommit(false);
String sqlQuery="select * from tsmsqueu where sendStat=0 and queueID=(select max(queueID) from tsmsqueu where sendStat=0) for update";
ResultSet rs =stmtQuery.executeQuery(sqlQuery);
if (!rs.next()) {
if (autoCommit) {
dbconn.commit();
dbconn.setAutoCommit(autoCommit);
}
return null;
}
smmsg.content = rs.getString("content");
smmsg.queueID = rs.getLong("queueID");
smmsg.priorityFlag = rs.getInt("priorityFlag");
smmsg.scheduleTime = rs.getDate("scheduleTime");
smmsg.sendCount = rs.getInt("sendCount") + 1;
smmsg.sendStat = 1;
smmsg.sourceAddr = rs.getString("sourceAddr");
smmsg.submitMulti = rs.getInt("submitMulti");
smmsg.validatyPeriod = rs.getDate("validatyPeriod");
smmsg.destinationAddr = rs.getString("destinationAddr");
smmsg.setUserID(rs.getLong("userID"));
smmsg.setFileNum(rs.getInt("fileNum"));
smmsg.spNumber=rs.getString("spNumber");
smmsg.corpID=rs.getString("corpID");
smmsg.serviceType=rs.getString("serviceType");
smmsg.feeType=rs.getInt("feeType");
smmsg.feeValue=rs.getString("feeValue");
smmsg.givenValue=rs.getString("givenValue");
smmsg.morelatetoMTFlag=rs.getInt("morelatetoMTFlag");
smmsg.reportFlag=rs.getInt("reportFlag");
rs.close();
stmtQuery.close();
long l=smmsg.getQueueID();
stmtUpdate = dbconn.createStatement();
String sqlUpdate="update tsmsqueu set sendCount=sendCount+1,sendStat=1 where queueID="+l;
stmtUpdate.executeUpdate(sqlUpdate);
stmtUpdate.close();
if (autoCommit) {
dbconn.commit();
dbconn.setAutoCommit(autoCommit);
}
switch(smmsg.submitMulti){
case 0:
break;
case 1:
stmtQuery = dbconn.createStatement();
ResultSet rs1 =stmtQuery.executeQuery("select destinationAddr from tsmsmult where queueID=" +l);
Vector vector1 = new Vector();
while (rs1.next()){
vector1.addElement(rs1.getString("destinationAddr"));
}
rs1.close();
stmtQuery.close();
if (vector1.size() > 0){
smmsg.destAddr = new String[vector1.size()];
}
for (int i = 0; i < vector1.size(); i++){
smmsg.destAddr[i] = vector1.elementAt(i).toString();
}
break;
case 2:
try{
int i=0,j=0;
byte m_byte[] = new byte[140];
// String fileName=smmsg.content;
String fileName=smmsg.content+"_0";
FileInputStream fis = new FileInputStream(fileName);
while(fis.available() != 0) {
j = fis.read();
m_byte[i++] = (new Integer(j)).byteValue();
if(i >= 140) break;
}
fis.close();
smmsg.binaryContent=m_byte;
}catch(Exception e){
System.out.println("读单个二进制文件出错:"+e);
}
break;
case 3:
// stmtQuery = dbconn.createStatement();
// ResultSet rs3 =stmtQuery.executeQuery("select content from tsmsfile where queueID=" +l+ " order by content");
// Vector vector3 = new Vector();
// while (rs3.next()){
// vector3.addElement(rs3.getString("content"));
// }
// rs3.close();
// stmtQuery.close();
// if (vector3.size() > 0){
// smmsg.binaryContentMulti = new byte[vector3.size()][140];
// }
// try{
// for (int k = 0; k < vector3.size(); k++){
// int i=0,j=0;
// byte m_byte[] = new byte[140];
// String fileName=vector3.elementAt(k).toString();
// FileInputStream fis = new FileInputStream(fileName);
// while(fis.available() != 0) {
// j = fis.read();
// m_byte[i++] = (new Integer(j)).byteValue();
// if(i >= 140) break;
// }
// fis.close();
// smmsg.binaryContentMulti[k]=m_byte;
// }
// }catch(Exception e){
// System.out.println("读多个二进制文件出错:"+e);
// }
// break;
if (smmsg.fileNum > 0){
smmsg.binaryContentMulti = new byte[smmsg.fileNum][140];
}
try{
for (int k = 0; k < smmsg.fileNum; k++){
int i=0,j=0;
byte m_byte[] = new byte[140];
String fileName=smmsg.content+"_"+k;
FileInputStream fis = new FileInputStream(fileName);
while(fis.available() != 0) {
j = fis.read();
m_byte[i++] = (new Integer(j)).byteValue();
if(i >= 140) break;
}
fis.close();
smmsg.binaryContentMulti[k]=m_byte;
}
}catch(Exception e){
System.out.println("读多个二进制文件出错:"+e);
}
break;
case 4:
try{
int i=0,j=0;
byte m_byte[] = new byte[140];
String fileName=smmsg.content+"_0";
FileInputStream fis = new FileInputStream(fileName);
while(fis.available() != 0) {
j = fis.read();
m_byte[i++] = (new Integer(j)).byteValue();
if(i >= 140) break;
}
fis.close();
smmsg.content=new String(m_byte);
}catch(Exception e){
System.out.println("读单个文本文件出错:"+e);
}
break;
case 5:
// stmtQuery = dbconn.createStatement();
// ResultSet rs5 =stmtQuery.executeQuery("select content from tsmsfile where queueID=" +l+ " order by content");
// Vector vector5 = new Vector();
// while (rs5.next()){
// vector5.addElement(rs5.getString("content"));
// }
// rs5.close();
// stmtQuery.close();
// if (vector5.size() > 0){
// smmsg.contentMulti = new String[vector5.size()];
// }
// try{
// for (int k = 0; k < vector5.size(); k++){
// int i=0,j=0;
// byte m_byte[] = new byte[140];
// String fileName=vector5.elementAt(k).toString();
// FileInputStream fis = new FileInputStream(fileName);
// while(fis.available() != 0) {
// j = fis.read();
// m_byte[i++] = (new Integer(j)).byteValue();
// if(i >= 140) break;
// }
// fis.close();
// smmsg.contentMulti[k]=new String(m_byte);
// }
// }catch(Exception e){
// System.out.println("读多个文本文件出错:"+e);
// }
// break;
if (smmsg.fileNum > 0){
smmsg.contentMulti = new String[smmsg.fileNum];
}
try{
for (int k = 0; k < smmsg.fileNum; k++){
int i=0,j=0;
byte m_byte[] = new byte[140];
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -