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

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

?? cphonebook.java

?? JAVA手機短信開發包
?? JAVA
字號:
//	jSMSEngine API.
//	An open-source API package for sending and receiving SMS via a GSM device.
//	Copyright (C) 2002-2006, Thanasis Delenikas, Athens/GREECE
//		Web Site: http://www.jsmsengine.org
//
//	jSMSEngine is a package which can be used in order to add SMS processing
//		capabilities in an application. jSMSEngine is written in Java. It allows you
//		to communicate with a compatible mobile phone or GSM Modem, and
//		send / receive SMS messages.
//
//	jSMSEngine is distributed under the LGPL license.
//
//	This library is free software; you can redistribute it and/or
//		modify it under the terms of the GNU Lesser General Public
//		License as published by the Free Software Foundation; either
//		version 2.1 of the License, or (at your option) any later version.
//	This library is distributed in the hope that it will be useful,
//		but WITHOUT ANY WARRANTY; without even the implied warranty of
//		MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
//		Lesser General Public License for more details.
//	You should have received a copy of the GNU Lesser General Public
//		License along with this library; if not, write to the Free Software
//		Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
//

package org.jsmsengine;

import java.io.*;
import java.util.*;

import javax.xml.parsers.*;
import org.xml.sax.*;
import org.xml.sax.helpers.*;

/**
	This class handles the operation of the phonebook.
	<br><br>
	The phone book is an XML file, which holds information about destinations.
	The phone book is created and maintained by you. When you use a phone book, it
	is possible to send messages to "nicknames" define in the book, instead of real
	phone numbers. Apart from nicknames, you can also create groups of nicknames,
	in order to send an SMS message to more than one destinations, with only one
	API call.
	<br><br>
	<strong>Note: the phone book is optional.</strong>
	<br><br>
	In the "misc" directory of the distribution tree, you will find a sample phone
	book file. A phone book contains:
	<ol>
		<li>	<strong>&lt;phonebookentry&gt;</strong> entries, which define the association
				of a person with a mobile number. For each entry, you must define the code
				(i.e. nickname), the name (description) and the actual phone.
		<li>	<strong>&lt;group&gt;</strong> entries. These entries group together one or more
				phone book entries. This way, you can define a group as the recipient
				of your SMS message, and your message will be send to all individual
				members of the group.
	</ol>
	<br>
	When you create a message and you want to use a phonebook nickname (for example
	"thanasis"), use it with a "~" symbol in front. This means, set the recipient to value
	"~thanasis". When jSMSEngine sees a recipient value starting with "~", it will know
	that you mean a nickname, and not the actual phone. However, please keep in mind that
	the "~" character does not appear in the phonebook XML definition file.
	<br><br>	
	This class contains all the relevant function for loading the XML phonebook file in memory
	(linked lists), and for resolving the names to the respected numbers.
	<br><br>
	All functions of the class are used internally by jSMSEngine API and are not accecible
	to the user.
	<br><br>
	Comments left to be added in next release.

	@see	CService#setPhoneBook
	@see	CService#sendMessage
	@see	COutgoingMessage
*/
class CPhoneBook
{
	private static final char PHONE_BOOK_INDICATOR = '~';

	private static final int ENTRY_TYPE_NOTFOUND = 0;
	private static final int ENTRY_TYPE_ENTRY = 1;
	private static final int ENTRY_TYPE_GROUP = 2;

	private LinkedList entries;
	private LinkedList groups;

	public CPhoneBook()
	{
		this.entries = new LinkedList();
		this.groups = new LinkedList();
	}

	protected boolean load(String file)
	{
		SAXParserFactory factory;
		SAXParser parser;
		boolean loaded;

		if (file == null)
		{
			entries = new LinkedList();
			groups = new LinkedList();
			loaded = true;
		}
		else
		{
			loaded = true;
			factory = SAXParserFactory.newInstance();
			try
			{
				parser = factory.newSAXParser();
				parser.parse(new File(file), new CParser());
			}
			catch (Exception e) { loaded = false; }
		}
		return loaded;
	}

	protected boolean isLoaded() { return (entries.size() > 0 ? true : false); }

	protected LinkedList expandPhoneBookEntries(COutgoingMessage message)
	{
		LinkedList messageList;
		String entry;
		COutgoingMessage newMessage;

		if (message.getRecipient().charAt(0) == PHONE_BOOK_INDICATOR)
		{
			entry = message.getRecipient().substring(1);
			switch (getEntryType(entry))
			{
				case CPhoneBook.ENTRY_TYPE_ENTRY:
					message.setRecipient(getEntryPhone(entry));
					messageList = new LinkedList();
					messageList.add(message);
					break;
				case CPhoneBook.ENTRY_TYPE_GROUP:
					LinkedList members;
					ListIterator iterator;

					try
					{
						messageList = new LinkedList();
						members = getGroupMembers(entry);
						iterator = members.listIterator(0);
						while (iterator.hasNext())
						{
							newMessage = new COutgoingMessage(getEntryPhone((String) iterator.next()), message.getText());
							newMessage.setMessageEncoding(message.getMessageEncoding()); 
							messageList.add(newMessage);
						}
					}
					catch (Exception e) { messageList = null; }
					break;
				default:
					messageList = null;
					break;
			}
		}
		else
		{
			messageList = new LinkedList();
			messageList.add(message);
		}
		return messageList;
	}

	protected LinkedList expandPhoneBookEntries(LinkedList inList)
	{
		COutgoingMessage message;
		LinkedList outList, tmpList;

		outList = new LinkedList();
		for (int i = 0; i < inList.size(); i ++)
		{
			message = (COutgoingMessage) inList.get(i);
			tmpList = expandPhoneBookEntries(message);
			if (tmpList != null) for (int j = 0; j < tmpList.size(); j ++) outList.add((COutgoingMessage) tmpList.get(j));
			else return null;
		}
		return outList;
	}

	private int getEntryType(String code)
	{
		if (getEntryName(code) != null) return ENTRY_TYPE_ENTRY;
		else if (getGroupName(code) != null) return ENTRY_TYPE_GROUP;
		else return ENTRY_TYPE_NOTFOUND;
	}

	private String getEntryName(String code)
	{
		CPhoneBookEntry entry = getEntry(code);
		return (entry == null ? null : entry.getName());
	}

	private String getEntryPhone(String code)
	{
		CPhoneBookEntry entry = getEntry(code);
		return (entry == null ? null : entry.getPhone());
	}

	private String getGroupName(String code)
	{
		CPhoneBookGroupEntry entry = getGroupEntry(code);
		return (entry == null ? null : entry.getName());
	}

	private LinkedList getGroupMembers(String code)
	{
		return getGroupEntry(code).getMembers();
	}

	private CPhoneBookEntry getEntry(String code)
	{
		CPhoneBookEntry entry;

		for (int i = 0; i < entries.size(); i ++)
		{
			entry = (CPhoneBookEntry) entries.get(i);
			if (entry.getCode().equalsIgnoreCase(code)) return entry;
		}
		return null;
	}

	private CPhoneBookGroupEntry getGroupEntry(String code)
	{
		CPhoneBookGroupEntry entry;

		for (int i = 0; i < groups.size(); i ++)
		{
			entry = (CPhoneBookGroupEntry) groups.get(i);
			if (entry.getCode().equalsIgnoreCase(code)) return entry;
		}
		return null;
	}

	class CPhoneBookEntry
	{
		private String code, name, phone;

		private CPhoneBookEntry()
		{
			code = null;
			name = null;
			phone = null;
		}

		private CPhoneBookEntry(String code, String name, String phone)
		{
			this.code = code;
			this.name = name;
			this.phone = phone;
		}

		private String getCode() { return code; }
		private String getName() { return name; }
		private String getPhone() { return phone; }
	}

	class CPhoneBookGroupEntry
	{
		private String code, name;
		private LinkedList members;

		private CPhoneBookGroupEntry()
		{
			code = null;
			name = null;
			members = new LinkedList();
		}

		private CPhoneBookGroupEntry(String code, String name)
		{
			this.code = code;
			this.name = name;
			members = new LinkedList();
		}

		private void add(String code) { members.addLast(code); }

		private String getCode() { return code; }
		private String getName() { return name; }
		private LinkedList getMembers() { return members; }
	}

	class CParser extends DefaultHandler
	{
		private static final int WHAT_BOOK = 1;
		private static final int WHAT_ENTRY = 2;
		private static final int WHAT_GROUP = 3;
		private int what = 0;
		private String element = "";
		private String entryCode, entryName, entryPhone;
		private String groupCode, groupName;
		private CPhoneBookGroupEntry group;

		public void startDocument () throws SAXException
		{
		}

		public void endDocument () throws SAXException
		{
		}

		public void startElement (String uri, String lName, String qName, Attributes attrs) throws SAXException
		{
			element = null;
			if (qName.equalsIgnoreCase("phonebook")) what = WHAT_BOOK;
			else if (qName.equalsIgnoreCase("phonebookentry")) what = WHAT_ENTRY;
			else if (qName.equalsIgnoreCase("group")) what = WHAT_GROUP;
			else element = qName;
		}

		public void endElement (String uri, String lName, String qName) throws SAXException
		{
			if (qName.equalsIgnoreCase("phonebookentry")) entries.addLast(new CPhoneBookEntry(entryCode, entryName, entryPhone));
			else if (qName.equalsIgnoreCase("group")) groups.addLast(group);
		}

		public void characters (char buf [], int offset, int len) throws SAXException
		{
			if (new String(buf, offset, len).trim().length() == 0) return;
			switch (what)
			{
				case WHAT_ENTRY:
					if (element.equalsIgnoreCase("code")) entryCode = new String(buf, offset, len).trim();
					else if (element.equalsIgnoreCase("name")) entryName = new String(buf, offset, len).trim();
					else if (element.equalsIgnoreCase("phone")) entryPhone = new String(buf, offset, len).trim();
					else if (element != null) throw(new SAXException("Unknown entry: " + element + "."));
					break;
				case WHAT_GROUP:
					if (element.equalsIgnoreCase("code")) groupCode = new String(buf, offset, len).trim();
					else if (element.equalsIgnoreCase("name"))
					{
						groupName = new String(buf, offset, len).trim();
						group = new CPhoneBookGroupEntry(groupCode, groupName);
					}
					else if (element.equalsIgnoreCase("member")) group.add(new String(buf, offset, len).trim());
					break;
			}
		}
	}
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产欧美日韩综合| 亚洲.国产.中文慕字在线| 日韩经典一区二区| 7878成人国产在线观看| 亚洲午夜免费福利视频| 91久久精品国产91性色tv| 高清在线不卡av| 国产电影一区在线| 国产精品久久久久桃色tv| 成人国产在线观看| 亚洲六月丁香色婷婷综合久久 | 91老师片黄在线观看| 日本v片在线高清不卡在线观看| 欧美日韩国产乱码电影| 无码av中文一区二区三区桃花岛| 欧美电影在哪看比较好| 老汉av免费一区二区三区| 2021国产精品久久精品| 国产成人夜色高潮福利影视| 日本一区二区三级电影在线观看| 日本精品一区二区三区高清| 亚洲精品一二三四区| 欧美视频一二三区| 国产激情偷乱视频一区二区三区| 中文字幕乱码亚洲精品一区| 色综合中文字幕国产| 免费在线观看一区| 中文无字幕一区二区三区| 91丝袜国产在线播放| 麻豆传媒一区二区三区| 日本欧美韩国一区三区| 亚洲欧洲www| 久久亚洲精精品中文字幕早川悠里 | 成人免费毛片a| 天堂久久久久va久久久久| 国产丝袜美腿一区二区三区| 欧美一区二区免费视频| 成人av影视在线观看| 免费观看30秒视频久久| 亚洲综合在线观看视频| 亚洲精品一区二区精华| 在线观看视频一区二区欧美日韩| 懂色av一区二区三区蜜臀| 天天综合日日夜夜精品| 国产精品久久久久久久岛一牛影视 | 国产欧美精品一区二区三区四区| 91亚洲国产成人精品一区二三| 另类小说欧美激情| 奇米色777欧美一区二区| 亚洲国产乱码最新视频| 亚洲女人的天堂| 国产精品丝袜在线| 自拍偷拍亚洲欧美日韩| 亚洲特黄一级片| 亚洲免费观看视频| 一区二区在线观看免费| 亚洲免费在线播放| 亚洲一区二区美女| 日韩极品在线观看| 麻豆91小视频| 国产电影一区二区三区| 岛国一区二区三区| 在线亚洲一区二区| 精品污污网站免费看| 日韩欧美中文字幕一区| 精品久久一二三区| 一区二区三区在线视频免费观看| 亚洲中国最大av网站| 青青国产91久久久久久| 麻豆视频一区二区| www.视频一区| 欧美一区二区三区在线视频| 中文字幕欧美激情一区| 椎名由奈av一区二区三区| 夜夜精品浪潮av一区二区三区| 久久综合狠狠综合久久综合88| 国产色产综合色产在线视频| 亚洲男女一区二区三区| 韩国一区二区视频| 91香蕉视频mp4| 91精品国产入口| 亚洲精品久久久蜜桃| 激情综合亚洲精品| 欧美剧在线免费观看网站| 国产欧美一区二区三区在线老狼| 日本不卡1234视频| 精品视频全国免费看| 亚洲欧美区自拍先锋| 国产精品一区二区久激情瑜伽 | 欧美日韩精品系列| 亚洲综合在线电影| 99国产精品国产精品毛片| 欧美sm极限捆绑bd| 日日夜夜精品免费视频| 色女孩综合影院| 一区二区三区精品视频| 91亚洲男人天堂| 国产精品视频看| 国产成人亚洲精品青草天美| 久久一区二区三区国产精品| 亚洲人成精品久久久久| 色综合久久天天综合网| 亚洲精品少妇30p| 色嗨嗨av一区二区三区| 亚洲欧美日韩国产综合在线| 一本一本大道香蕉久在线精品| 一区免费观看视频| 色综合天天综合给合国产| 亚洲精品视频一区二区| 欧美日韩黄色一区二区| 视频在线观看一区| 欧美成人a∨高清免费观看| 国产成人午夜99999| 亚洲免费在线视频| 欧美一区二区性放荡片| 国产在线精品一区二区夜色| 国产精品天美传媒沈樵| 欧美在线免费视屏| 国产精品一区二区免费不卡| 精品日韩成人av| 95精品视频在线| 色天使色偷偷av一区二区| 日韩有码一区二区三区| 欧美日本韩国一区| jlzzjlzz欧美大全| 视频一区二区三区入口| 国产精品卡一卡二| 91久久国产综合久久| 高清免费成人av| 91丨九色丨黑人外教| 精品一区二区国语对白| 亚洲乱码中文字幕| 国产精品美女久久久久高潮| 欧美老人xxxx18| 欧美吞精做爰啪啪高潮| 99综合电影在线视频| 91传媒视频在线播放| aaa亚洲精品| 国产精品456露脸| 国产精品99精品久久免费| 蜜臀精品久久久久久蜜臀 | 成人av电影在线网| 国产一区二区在线电影| 亚洲免费视频中文字幕| 亚洲五码中文字幕| 日日夜夜一区二区| 韩国av一区二区三区在线观看| 裸体一区二区三区| 国产伦精品一区二区三区免费迷 | 欧美日韩免费电影| 欧美一级片在线看| 精品乱码亚洲一区二区不卡| 亚洲免费在线看| 玉足女爽爽91| 国产欧美一区二区三区在线看蜜臀 | 日韩av一区二区在线影视| 亚洲色欲色欲www| 一区二区三区日韩精品视频| 日本一不卡视频| 99久久精品国产观看| 亚洲成国产人片在线观看| 亚洲综合久久久久| 亚洲精品日韩综合观看成人91| 国产精品成人网| 欧美一区二区在线看| 欧美日韩一卡二卡三卡 | 久久精品国产一区二区三区免费看| 亚洲蜜桃精久久久久久久| 日本一区二区电影| 久久久九九九九| 久久婷婷久久一区二区三区| 国产亚洲成av人在线观看导航| 日韩免费看网站| 综合色中文字幕| 国产成人午夜高潮毛片| 国产亚洲欧美一区在线观看| 久久久三级国产网站| 亚洲美女视频在线观看| 欧美色老头old∨ideo| 日本成人在线不卡视频| 欧美一二三四区在线| 国产91在线观看| 国产精品无圣光一区二区| 色婷婷久久久综合中文字幕| 天涯成人国产亚洲精品一区av| 国产日韩欧美精品在线| 白白色 亚洲乱淫| 久国产精品韩国三级视频| 国产精品国产三级国产普通话蜜臀| 在线精品视频免费播放| 国产精品系列在线播放| 亚洲高清免费视频| 精品日韩99亚洲| 老司机午夜精品| 激情成人综合网| 亚洲与欧洲av电影| 国产欧美一区二区三区沐欲| 欧美裸体bbwbbwbbw| 成人精品小蝌蚪| 麻豆国产一区二区|