亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? database.java

?? 發(fā)送短信 接收短信 多種接口com/net/modem 開發(fā)庫
?? JAVA
字號:
// SMSLib for Java v3
// A Java API library for sending and receiving SMS via a GSM modem
// or other supported gateways.
// Web Site: http://www.smslib.org
//
// Copyright (C) 2002-2009, Thanasis Delenikas, Athens/GREECE.
// SMSLib is distributed under the terms of the Apache License version 2.0
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.

package org.smslib.smsserver.interfaces;

import java.net.URL;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.sql.Timestamp;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Collection;
import java.util.Date;
import java.util.Properties;
import org.smslib.InboundMessage;
import org.smslib.OutboundBinaryMessage;
import org.smslib.OutboundMessage;
import org.smslib.OutboundWapSIMessage;
import org.smslib.StatusReportMessage;
import org.smslib.Message.MessageEncodings;
import org.smslib.Message.MessageTypes;
import org.smslib.OutboundMessage.MessageStatuses;
import org.smslib.OutboundWapSIMessage.WapSISignals;
import org.smslib.smsserver.SMSServer;

/**
 * Interface for database communication with SMSServer. <br />
 * Inbound messages and calls are logged in special tables, outbound messages
 * are retrieved from another table.
 */
public class Database extends Interface<Integer>
{
	public Database(String myInterfaceId, Properties myProps, SMSServer myServer, InterfaceTypes myType)
	{
		super(myInterfaceId, myProps, myServer, myType);
		setDescription("Default database interface.");
	}

	@Override
	public void start() throws Exception
	{
		Connection con;
		Statement cmd;
		Class.forName(getProperty("driver"));
		con = getDbConnection();
		if (con != null)
		{
			cmd = con.createStatement(ResultSet.TYPE_FORWARD_ONLY, ResultSet.CONCUR_READ_ONLY);
			cmd.executeUpdate("update " + getProperty("tables.sms_out", "smsserver_out") + " set status = 'U' where status = 'Q'");
			con.commit();
			cmd.close();
			con.close();
		}
		super.start();
	}

	@Override
	public void stop() throws Exception
	{
		Connection con;
		Statement cmd;
		con = getDbConnection();
		if (con != null)
		{
			cmd = con.createStatement(ResultSet.TYPE_FORWARD_ONLY, ResultSet.CONCUR_READ_ONLY);
			cmd.executeUpdate("update " + getProperty("tables.sms_out", "smsserver_out") + " set status = 'U' where status = 'Q'");
			con.commit();
			cmd.close();
			con.close();
		}
		super.stop();
	}

	@Override
	public void CallReceived(String gtwId, String callerId) throws Exception
	{
		Connection con;
		Statement cmd;
		ResultSet rs;
		con = getDbConnection();
		cmd = con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_UPDATABLE);
		rs = cmd.executeQuery("select id, call_date, gateway_id, caller_id from " + getProperty("tables.calls", "smsserver_calls") + " where id = -1");
		rs.moveToInsertRow();
		rs.updateTimestamp("call_date", new Timestamp(new java.util.Date().getTime()));
		rs.updateString("gateway_id", gtwId);
		rs.updateString("caller_id", callerId);
		rs.insertRow();
		con.commit();
		rs.close();
		cmd.close();
		con.close();
	}

	@Override
	public void MessagesReceived(Collection<InboundMessage> msgList) throws Exception
	{
		Connection con;
		Statement cmd;
		ResultSet rs;
		con = getDbConnection();
		cmd = con.createStatement(ResultSet.TYPE_FORWARD_ONLY, ResultSet.CONCUR_UPDATABLE);
		rs = cmd.executeQuery("select id, process, originator, type, encoding, message_date, receive_date, text, original_ref_no, original_receive_date, gateway_id from " + getProperty("tables.sms_in", "smsserver_in") + " where id = -1");
		for (InboundMessage msg : msgList)
		{
			if ((msg.getType() == MessageTypes.INBOUND) || (msg.getType() == MessageTypes.STATUSREPORT))
			{
				rs.moveToInsertRow();
				rs.updateInt("process", 0);
				switch (msg.getEncoding())
				{
					case ENC7BIT:
						rs.updateString("encoding", "7");
						break;
					case ENC8BIT:
						rs.updateString("encoding", "8");
						break;
					case ENCUCS2:
						rs.updateString("encoding", "U");
						break;
					case ENCCUSTOM:
						rs.updateString("encoding", "C");
						break;
				}
				switch (msg.getType())
				{
					case INBOUND:
						rs.updateString("type", "I");
						rs.updateString("originator", msg.getOriginator());
						if (msg.getDate() != null) rs.updateTimestamp("message_date", new Timestamp(msg.getDate().getTime()));
						rs.updateString("original_ref_no", null);
						rs.updateTimestamp("original_receive_date",null);
						break;
					case STATUSREPORT:
						rs.updateString("type", "S");
						rs.updateString("originator", ((StatusReportMessage) msg).getRecipient());
						if (((StatusReportMessage) msg).getSent() != null) rs.updateTimestamp("message_date", new Timestamp(((StatusReportMessage) msg).getSent().getTime()));
						rs.updateString("original_ref_no", ((StatusReportMessage) msg).getRefNo());
						if (((StatusReportMessage) msg).getReceived() != null) rs.updateTimestamp("original_receive_date", new Timestamp(((StatusReportMessage) msg).getReceived().getTime()));
						if (getProperty("update_outbound_on_statusreport", "no").equalsIgnoreCase("yes"))
						{
							Statement cmd2;
							ResultSet rs2;
							cmd2 = con.createStatement(ResultSet.TYPE_FORWARD_ONLY, ResultSet.CONCUR_UPDATABLE);
							rs2 = cmd2.executeQuery("select id, status from " + getProperty("tables.sms_out", "smsserver_out") + " where recipient = '" + ((StatusReportMessage) msg).getRecipient() + "' and ref_no = '" + ((StatusReportMessage) msg).getRefNo() + "'");
							if (rs2.next())
							{
								switch (((StatusReportMessage) msg).getStatus())
								{
									case DELIVERED:
										rs2.updateString("status", "D");
										break;
									case KEEPTRYING:
										rs2.updateString("status", "P");
										break;
									case ABORTED:
										rs2.updateString("status", "A");
										break;
									case UNKNOWN:
										break;
								}
								rs2.updateRow();
							}
							rs2.close();
							cmd2.close();
						}
						break;
					default:
						break;
				}
				rs.updateTimestamp("receive_date", new Timestamp(new java.util.Date().getTime()));
				if (msg.getEncoding() == MessageEncodings.ENC8BIT) 	rs.updateString("text", msg.getPduUserData());
				else rs.updateString("text", (msg.getText().length() == 0 ? "" : msg.getText()));
				rs.updateString("gateway_id", msg.getGatewayId());
				rs.insertRow();
			}
		}
		rs.close();
		cmd.close();
		con.commit();
		con.close();
	}

	@Override
	public Collection<OutboundMessage> getMessagesToSend() throws Exception
	{
		Collection<OutboundMessage> msgList = new ArrayList<OutboundMessage>();
		OutboundMessage msg;
		Connection con;
		Statement cmd;
		ResultSet rs;
		int msgCount;
		msgCount = 1;
		con = getDbConnection();
		if (con != null)
		{
			cmd = con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_UPDATABLE);
			rs = cmd.executeQuery("select id, type, recipient, text, wap_url, wap_expiry_date, wap_signal, create_date, originator, encoding, status_report, flash_sms, src_port, dst_port, sent_date, ref_no, priority, status, errors, gateway_id from " + getProperty("tables.sms_out", "smsserver_out") + " where status = 'U' order by priority desc");
			while (rs.next())
			{
				if (msgCount > Integer.parseInt(getProperty("batch_size"))) break;
				if (getServer().checkPriorityTimeFrame(rs.getInt("priority")))
				{
					switch (rs.getString("type").charAt(0))
					{
						case 'O':
							switch (rs.getString("encoding").charAt(0))
							{
								case '7':
									msg = new OutboundMessage(rs.getString("recipient").trim(), rs.getString("text").trim());
									msg.setEncoding(MessageEncodings.ENC7BIT);
									break;
								case '8':
									{
										String text = rs.getString("text").trim();
										byte bytes[] = new byte[text.length() / 2];
										for (int i = 0; i < text.length(); i +=2 )
										{
											int value = (Integer.parseInt("" + text.charAt(i)) * 16) + (Integer.parseInt("" + text.charAt(i + 1)));
											bytes[i / 2] = (byte) value;
										}
										msg = new OutboundBinaryMessage(rs.getString("recipient").trim(), bytes);
									}
									break;
								case 'U':
									msg = new OutboundMessage(rs.getString("recipient").trim(), rs.getString("text").trim());
									msg.setEncoding(MessageEncodings.ENCUCS2);
									break;
								default:
									msg = new OutboundMessage(rs.getString("recipient").trim(), rs.getString("text").trim());
									msg.setEncoding(MessageEncodings.ENC7BIT);
									break;
							}
							if (rs.getInt("flash_sms") == 1) msg.setFlashSms(true);
							if (rs.getInt("src_port") != -1)
							{
								msg.setSrcPort(rs.getInt("src_port"));
								msg.setDstPort(rs.getInt("dst_port"));
							}
							break;
						case 'W':
							Date wapExpiryDate;
							WapSISignals wapSignal;
							if (rs.getTime("wap_expiry_date") == null)
							{
								Calendar cal = Calendar.getInstance();
								cal.setTime(new Date());
								cal.add(Calendar.DAY_OF_YEAR, 7);
								wapExpiryDate = cal.getTime();
							}
							else wapExpiryDate = rs.getTimestamp("wap_expiry_date");
							if (rs.getString("wap_signal") == null) wapSignal = WapSISignals.NONE;
							else
							{
								switch (rs.getString("wap_signal").charAt(0))
								{
									case 'N':
										wapSignal = WapSISignals.NONE;
										break;
									case 'L':
										wapSignal = WapSISignals.LOW;
										break;
									case 'M':
										wapSignal = WapSISignals.MEDIUM;
										break;
									case 'H':
										wapSignal = WapSISignals.HIGH;
										break;
									case 'D':
										wapSignal = WapSISignals.DELETE;
										break;
									default:
										wapSignal = WapSISignals.NONE;
								}
							}
							msg = new OutboundWapSIMessage(rs.getString("recipient").trim(), new URL(rs.getString("wap_url").trim()), rs.getString("text").trim(), wapExpiryDate, wapSignal);
							break;
						default:
							throw new Exception("Message type '" + rs.getString("type") + "' is unknown!");
					}
					msg.setPriority(rs.getInt("priority"));
					if (rs.getInt("status_report") == 1) msg.setStatusReport(true);
					if ((rs.getString("originator") != null) && (rs.getString("originator").length() > 0)) msg.setFrom(rs.getString("originator").trim());
					msg.setGatewayId(rs.getString("gateway_id").trim());
					msgList.add(msg);
					getMessageCache().put(msg.getMessageId(), rs.getInt("id"));
					rs.updateString("status", "Q");
					rs.updateRow();
					con.commit();
					msgCount++;
				}
			}
			rs.close();
			cmd.close();
			con.close();
		}
		return msgList;
	}

	@Override
	public int getPendingMessagesToSend()
	{
		Connection con;
		Statement cmd;
		ResultSet rs;
		int count = -1;

		try
		{
			con = getDbConnection();
			if (con != null)
			{
				cmd = con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_READ_ONLY);
				rs = cmd.executeQuery("select count(*) as cnt from " + getProperty("tables.sms_out", "smsserver_out") + " where status in ('U', 'Q')");
				if (rs.next()) count = rs.getInt("cnt");
				rs.close();
				cmd.close();
				con.close();
			}
		}
		catch (Exception e)
		{
			// Swallow this...
		}
		return count;
	}

	@Override
	public void markMessage(OutboundMessage msg) throws Exception
	{
		Connection con = null;
		ResultSet rs = null;
		Statement cmd = null;
		con = getDbConnection();
		cmd = con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_UPDATABLE);
		rs = cmd.executeQuery("select id, recipient, text, create_date, originator, encoding, status_report, flash_sms, src_port, dst_port, sent_date, ref_no, priority, status, errors, gateway_id from " + getProperty("tables.sms_out", "smsserver_out") + " where id = " + getMessageCache().get(msg.getMessageId()));
		if (rs.next())
		{
			if (msg.getMessageStatus() == MessageStatuses.SENT)
			{
				rs.updateString("status", "S");
				rs.updateTimestamp("sent_date", new Timestamp(msg.getDispatchDate().getTime()));
				rs.updateString("gateway_id", msg.getGatewayId());
				rs.updateString("ref_no", msg.getRefNo());
			}
			else if (msg.getMessageStatus() == MessageStatuses.FAILED)
			{
				int errors = rs.getInt("errors");
				errors++;
				rs.updateInt("errors", errors);
				if (errors > Integer.parseInt(getProperty("retries", "2"))) rs.updateString("status", "F");
				else rs.updateString("status", "U");
			}
			rs.updateRow();
			con.commit();
			rs.close();
			cmd.close();
			con.close();
		}
		getMessageCache().remove(msg.getMessageId());
	}

	private Connection getDbConnection()
	{
		Connection dbCon = null;
		try
		{
			dbCon = DriverManager.getConnection(getProperty("url"), getProperty("username", ""), getProperty("password", ""));
			dbCon.setAutoCommit(false);
		}
		catch (SQLException e)
		{
			getService().getLogger().logError("SMSServer: Database Interface: error!", e, null);
		}
		return dbCon;
	}
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
www.亚洲免费av| 99热这里都是精品| 韩国v欧美v亚洲v日本v| 国内精品第一页| 国产精品1024| 91传媒视频在线播放| 欧美日本一区二区在线观看| 91在线一区二区三区| 在线视频国产一区| 欧美成人欧美edvon| 国产欧美一区二区精品秋霞影院| 日本一区二区在线不卡| 亚洲免费观看高清| 国产最新精品免费| 欧美在线看片a免费观看| 久久久久久久久蜜桃| 亚洲精品免费在线观看| 开心九九激情九九欧美日韩精美视频电影 | 色国产综合视频| 日韩欧美卡一卡二| 一区二区三区精品在线观看| 免费黄网站欧美| 欧美性大战xxxxx久久久| 久久久99久久| 久久99精品国产91久久来源| 成人欧美一区二区三区白人| 日本一区二区三区四区在线视频 | 国产主播一区二区三区| 91精品国产黑色紧身裤美女| 久久久久青草大香线综合精品| 午夜电影久久久| 欧洲精品中文字幕| 亚洲视频免费在线观看| 国产精品911| 2020国产精品| 国产伦精品一区二区三区在线观看| 欧美午夜精品久久久久久超碰| 久久中文字幕电影| 国产在线不卡一区| 久久亚洲精品国产精品紫薇| 日本欧美大码aⅴ在线播放| 欧美午夜电影网| 一区二区三区在线免费视频| www..com久久爱| 亚洲视频狠狠干| 欧美视频在线观看一区| 午夜精品一区在线观看| 91精品国产福利在线观看| 日韩高清不卡一区| 久久久久国产精品人| 国产.欧美.日韩| 亚洲成国产人片在线观看| 欧美久久久久久久久| 精品夜夜嗨av一区二区三区| 国产欧美va欧美不卡在线| 色综合久久综合中文综合网| 天天综合天天做天天综合| 国产午夜精品一区二区| 色成年激情久久综合| 日韩中文字幕一区二区三区| 久久久激情视频| 欧美精品精品一区| 国产99久久久国产精品免费看| 国产精品麻豆一区二区| 欧美日韩高清不卡| 91麻豆精品在线观看| 韩国三级在线一区| 日韩一区欧美二区| 亚洲精品日韩一| 国产日韩精品久久久| 日韩一二三四区| 欧美日本在线视频| 色噜噜狠狠成人网p站| 成人毛片在线观看| 粉嫩av一区二区三区粉嫩| 精品在线播放免费| 日产国产欧美视频一区精品| 亚洲精品久久久蜜桃| 狠狠色狠狠色综合日日91app| 国产夜色精品一区二区av| 日韩欧美国产综合在线一区二区三区| 91亚洲永久精品| 91香蕉视频污在线| 精品视频在线免费观看| 在线精品视频一区二区| 在线观看国产日韩| 欧美网站大全在线观看| 欧美日韩激情在线| 精品久久99ma| 中文字幕五月欧美| 亚洲三级免费电影| 亚洲一区成人在线| 久久精品国产精品亚洲综合| 激情综合色综合久久综合| 国产精品一二三四区| 国产麻豆精品在线| 成人免费视频一区| 色婷婷久久久综合中文字幕| 欧美午夜精品一区二区蜜桃| 91精品国产91久久综合桃花| 日韩欧美一二区| 亚洲色图在线播放| 免播放器亚洲一区| 99r国产精品| 精品久久国产老人久久综合| 成人欧美一区二区三区视频网页| 亚洲一级不卡视频| 顶级嫩模精品视频在线看| 在线看不卡av| 欧美韩国日本一区| 久久国产精品99久久人人澡| 91浏览器在线视频| 久久久国产综合精品女国产盗摄| 亚洲老司机在线| 成人黄色在线视频| 日韩欧美色综合| 日本vs亚洲vs韩国一区三区二区 | 欧美一级日韩不卡播放免费| ...中文天堂在线一区| 国产精品一线二线三线精华| 6080午夜不卡| 午夜精品免费在线观看| 91在线精品一区二区三区| 国产日韩亚洲欧美综合| 日本不卡中文字幕| 日韩欧美一二区| 日韩av在线播放中文字幕| 欧美日本在线播放| 丝袜亚洲另类欧美| 91精品国产一区二区三区蜜臀 | 欧美丝袜丝交足nylons| 亚洲成精国产精品女| 91精品国产色综合久久ai换脸 | 国产精品国产自产拍高清av王其| 亚洲www啪成人一区二区麻豆| 一区二区不卡在线播放| 在线观看视频一区二区欧美日韩| 亚洲日本在线视频观看| 色噜噜狠狠一区二区三区果冻| 亚洲乱码国产乱码精品精的特点| 在线精品视频免费观看| 日本sm残虐另类| 欧美一区二区三区视频在线观看| 久久99国产精品久久| 国产女人18毛片水真多成人如厕| 粉嫩av一区二区三区在线播放| 亚洲伦在线观看| ww亚洲ww在线观看国产| 99久久99久久精品免费观看| 婷婷综合另类小说色区| 国产精品麻豆欧美日韩ww| 精品视频999| youjizz国产精品| 青娱乐精品视频在线| 亚洲欧洲韩国日本视频| 日韩一区二区电影| 在线区一区二视频| 不卡的电影网站| 久久91精品久久久久久秒播| 亚洲综合色丁香婷婷六月图片| 久久午夜电影网| 日韩精品中文字幕一区二区三区| 91伊人久久大香线蕉| 成人在线视频首页| 激情综合网最新| 久久97超碰色| 蓝色福利精品导航| 免费成人性网站| 免费在线欧美视频| 五月天欧美精品| 视频在线观看91| 日本亚洲三级在线| 一区二区三区免费看视频| 国产精品成人免费在线| 国产精品国模大尺度视频| 国产精品素人视频| 欧美激情在线一区二区| 国产精品欧美久久久久无广告| 久久久久久夜精品精品免费| 久久视频一区二区| 欧美国产日产图区| 亚洲日本va午夜在线影院| 亚洲午夜久久久久久久久久久 | 国产成人精品1024| 日本高清免费不卡视频| 精品婷婷伊人一区三区三| 91精品国产综合久久香蕉的特点| 日韩亚洲欧美在线观看| 中文字幕欧美日韩一区| 一区二区三区四区在线播放| 蜜臀av一区二区在线免费观看 | 精品欧美乱码久久久久久| 国产三级三级三级精品8ⅰ区| 亚洲美女偷拍久久| 极品少妇xxxx精品少妇| 色综合久久中文综合久久牛| 日韩欧美一区二区视频| 一区在线观看免费| 国产一区二区导航在线播放| 色老头久久综合|