📄 mmreceiveservlet.java
字号:
res.setStatusText("返回成功");
return res;
}
/**
* 收到状态报告时候,更新日志表里面的各状态字段
*
* @param con
* @param mmscid
* @param reportTransactionId
* @param reportsender
* @param reportdestination
* @param reportstatus
* @param reportsenddate
* @param msgid
* @throws SQLException
*/
private void updateReportStatus(MM7DeliveryReportReq request) {
String sql = "update mmsendlog set mmscid=?,reportTransactionId=?,reportsender=?,reportdestination=?,reportstatus=?,reportsenddate=?,reportacceptdate=sysdate where msgid=?";
PreparedStatement stmt = null;
Connection con = pool.getConnection();
try {
stmt = con.prepareStatement(sql);
stmt.setString(1, request.getMMSRelayServerID());
stmt.setString(2, request.getTransactionID());
stmt.setString(3, request.getSender());
stmt.setString(4, request.getRecipient());
stmt.setString(5, String.valueOf(request.getMMStatus()));
stmt.setTimestamp(6, new Timestamp(request.getTimeStamp().getTime()));
stmt.setString(7, request.getMessageID());
stmt.executeUpdate();
}
catch (SQLException e) {
log.error(e);
}
finally {
try {
if (stmt != null)
stmt.close();
pool.closeConnection(con);
}
catch (SQLException e) {
log.error(e);
}
}
}
/**
* 收到读后回复报告的时候,更新日志表里面的各读后回复字段
*
* @param con
* @param mmscid
* @param reportTransactionId
* @param reportsender
* @param reportdestination
* @param reportstatus
* @param reportsenddate
* @param msgid
* @throws SQLException
*/
private void updateReadReplyStatus(MM7ReadReplyReq request) {
String sql = "update mmsendlog set readreplyTransactionId=?,readreplysender=?,readreplydestination=?,reportstatus=?,readreplysenddate=?,readreplyaccepdate=sysdate where msgid=?";
PreparedStatement stmt = null;
Connection con = pool.getConnection();
try {
stmt = con.prepareStatement(sql);
stmt.setString(1, request.getTransactionID());
stmt.setString(2, request.getSender());
stmt.setString(3, request.getRecipient());
stmt.setString(4, String.valueOf(request.getMMStatus()));
stmt.setTimestamp(5, new Timestamp(request.getTimeStamp().getTime()));
stmt.setString(6, request.getMessageID());
stmt.executeUpdate();
}
catch (SQLException e) {
log.info(e);
}
finally {
try {
if (stmt != null)
stmt.close();
pool.closeConnection(con);
}
catch (SQLException e) {
log.error(e);
}
}
}
/**
* 新增上行的mm消息到数据库中!
*
* @param con
* @param request
*/
private void insertMOMM(MM7DeliverReq request, String mmdir) throws SQLException {
List to = request.getTo();
List cc = request.getCc();
List bcc = request.getBcc();
String sql = "insert into mmsmo(moid,messgeid,mmscid,LinkedID,sender,destination,sendtype,timestamp,ReplyChargingID,Priority,subject,transactionid,accepdate,mmdir) values(mmsmoid.nextval,?,?,?,?,?,?,?,?,?,?,?,sysdate,?)";
PreparedStatement stmt = null;
Connection con = pool.getConnection();
try {
con.setAutoCommit(false);
stmt = con.prepareStatement(sql);
for (int i = 0; i < to.size(); i++) {
stmt.setString(1, "");
stmt.setString(2, request.getMMSRelayServerID());
stmt.setString(3, request.getLinkedID());
stmt.setString(4, request.getSender());
stmt.setString(5, to.get(i).toString());
stmt.setInt(6, 1);
stmt.setTimestamp(7, new Timestamp(request.getTimeStamp().getTime()));
stmt.setString(8, request.getReplyChargingID());
stmt.setInt(9, request.getPriority());
stmt.setString(10, request.getSubject());
stmt.setString(11, request.getTransactionID());
stmt.setString(12, mmdir);
stmt.addBatch();
}
for (int i = 0; i < cc.size(); i++) {
stmt.setString(1, "");
stmt.setString(2, request.getMMSRelayServerID());
stmt.setString(3, request.getLinkedID());
stmt.setString(4, request.getSender());
stmt.setString(5, cc.get(i).toString());
stmt.setInt(6, 2);
stmt.setTimestamp(7, new Timestamp(request.getTimeStamp().getTime()));
stmt.setString(8, request.getReplyChargingID());
stmt.setInt(9, request.getPriority());
stmt.setString(10, request.getSubject());
stmt.setString(11, request.getTransactionID());
stmt.setString(12, mmdir);
stmt.addBatch();
}
for (int i = 0; i < bcc.size(); i++) {
stmt.setString(1, "");
stmt.setString(2, request.getMMSRelayServerID());
stmt.setString(3, request.getLinkedID());
stmt.setString(4, request.getSender());
stmt.setString(5, bcc.get(i).toString());
stmt.setInt(6, 3);
stmt.setTimestamp(7, new Timestamp(request.getTimeStamp().getTime()));
stmt.setString(8, request.getReplyChargingID());
stmt.setInt(9, request.getPriority());
stmt.setString(10, request.getSubject());
stmt.setString(11, request.getTransactionID());
stmt.setString(12, mmdir);
stmt.addBatch();
}
stmt.executeBatch();
con.commit();
}
catch (SQLException e) {
con.rollback();
log.error(e);
throw e;
}
finally {
con.setAutoCommit(true);
pool.closeConnection(con);
if (stmt != null)
stmt.close();
}
}
/**
* 上行的mm存储的时候,按年月日的目录来排列了
*
* @return
*/
private String getMMDir() {
DateFormat df = new SimpleDateFormat("yyyy/MM/dd/");
String mmdir = df.format(new Date());
return mmdir;
}
/**
* 三星手机上来的mo彩信,contentid都是<aaaa.jpg>格式的类型,要去掉<>,要看看其他的手机是不是也是如此的,先按照这种方式来处理了
*
* @param contentid
* @return
*/
private String content2name(String contentid, MM7DeliverReq request) {
if (contentid == null || contentid.equals(""))
return request.getTransactionID() + ".smil";
else if (!contentid.endsWith(".smil")) {
// 判断contentid是否以.smil结尾,如果是的话,直接返回,不是的话
return contentid.substring(1, contentid.length() - 1) + ".smil";
}
else
return contentid;
}
private void printDom(Node node, List srclist) {
int type = node.getNodeType();
switch (type) {
case Node.TEXT_NODE:
break;
case Node.ATTRIBUTE_NODE:
if (node.getNodeName().equals("src")) {
srclist.add(((Attr) node).getValue());
if (log.isDebugEnabled())
log.debug("src=" + ((Attr) node).getValue());
}
break;
case Node.CDATA_SECTION_NODE:
break;
case Node.COMMENT_NODE:
break;
case Node.ELEMENT_NODE:
NamedNodeMap attrs = node.getAttributes();
for (int i = 0; i < attrs.getLength(); i++)
printDom(attrs.item(i), srclist);
if (node.hasChildNodes()) {
NodeList children = node.getChildNodes();
for (int i = 0; i < children.getLength(); i++)
printDom(children.item(i), srclist);
}
break;
case Node.DOCUMENT_NODE:
printDom(((Document) node).getDocumentElement(), srclist);
break;
case Node.ENTITY_NODE:
break;
default:
break;
}
}
/**
* 解析smil文件,得到里面的所有src属性的值,存放到list里面
*
* @param smilFile
* @return
*/
private List parse(String smilFile) {
if (log.isDebugEnabled())
log.debug("上传彩信保存后的SMIL文件:" + smilFile);
try {
List attrlist = new ArrayList();
Document doc = db.parse(smilFile);
printDom(doc, attrlist);
return attrlist;
}
catch (Exception e) {
log.error("解析smil文件失败:" + e);
return null;
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -