⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 mmreceiveservlet.java

📁 彩信发送源代码,实现mm7接口
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
		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 + -