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

📄 cmainthread.java

📁 SMSLib一个很有用的程序
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
							}
							catch (Exception e)
							{
								e.printStackTrace();
							}
							if (database.isOpen()) try
							{
								database.checkForOutgoingMessages();
							}
							catch (Exception e)
							{
								e.printStackTrace();
							}
							if (mainWindow != null)
							{
								mainWindow.setTrafficIn(service.getDeviceInfo().getStatistics().getTotalIn());
								mainWindow.setTrafficOut(service.getDeviceInfo().getStatistics().getTotalOut());
							}
							else
							{
								System.out.println(CConstants.LABEL_TRAFFIC + " " + CConstants.LABEL_TRAFFIC_IN + service.getDeviceInfo().getStatistics().getTotalIn() + "   "
								        + CConstants.LABEL_TRAFFIC_OUT + service.getDeviceInfo().getStatistics().getTotalOut());
							}
							if (mainWindow != null) mainWindow.setStatusText(CConstants.STATUS_IDLE);
							else System.out.println(CConstants.LABEL_STATUS + CConstants.STATUS_IDLE);
						}
						catch (Exception e)
						{
							disconnect(false);
						}
					}
				}
			}
		}
		disconnect(false);
		exitFinished = true;
	}

	public void exitRequest()
	{
		exitRequest = true;
		interrupt();
	}

	public boolean exitFinished()
	{
		return exitFinished;
	}

	protected void sendMessage(COutgoingMessage message) throws Exception
	{
		service.sendMessage(message);
		settings.getGeneralSettings().rawOutLog(message);
		database.saveSentMessage(message);
		if (mainWindow != null)
		{
			mainWindow.setOutTo(message.getRecipient());
			mainWindow.setOutDate(message.getDispatchDate().toString());
			mainWindow.setOutText(message.getText());
		}
		else
		{
			System.out.println(CConstants.TEXT_OUTMSG);
			System.out.println("\t" + CConstants.LABEL_OUTGOING_TO + message.getRecipient());
			System.out.println("\t" + CConstants.LABEL_OUTGOING_DATE + message.getDate());
			System.out.println("\t" + CConstants.LABEL_OUTGOING_TEXT + message.getText());
		}
	}

	private synchronized void processStoredMessages() throws Exception
	{
		LinkedList messageList;
		int batchLimit;

		batchLimit = settings.getPhoneSettings().getBatchIncoming();
		messageList = new LinkedList();
		service.readMessages(messageList, CIncomingMessage.MessageClass.All);
		for (int i = 0; i < messageList.size(); i++)
		{
			if ((i + 1) > batchLimit) break;
			CIncomingMessage message = (CIncomingMessage) messageList.get(i);
			if ((processMessage(message)) && (settings.getPhoneSettings().getDeleteAfterProcessing())) service.deleteMessage(message);
		}
	}

	private void saveToXmlInQueue(CIncomingMessage message) throws Exception
	{
		File xmlFile;
		PrintWriter out;

		xmlFile = File.createTempFile("Recv", ".xml", new File(settings.getPhoneSettings().getXmlInQueue()));
		out = new PrintWriter(new FileWriter(xmlFile.getCanonicalPath()));
		out.println("<?xml version='1.0' encoding='iso-8859-7'?>");
		out.println("<message>");
		out.println("	<originator>" + message.getOriginator() + "</originator>");
		out.println("	<date>" + textDate(message.getDate(), true) + "</date>");
		out.println("	<text> <![CDATA[" + message.getText() + "]]> </text>");
		out.println("</message>");
		out.close();
	}

	private void saveToXmlOutQueue(CIncomingMessage message) throws Exception
	{
		File xmlFile;
		PrintWriter out;

		xmlFile = File.createTempFile("Fwd", ".xml", new File(settings.getPhoneSettings().getXmlOutQueue()));
		out = new PrintWriter(new FileWriter(xmlFile.getCanonicalPath()));
		out.println("<?xml version='1.0' encoding='iso-8859-7'?>");
		out.println("<message>");
		out.println("	<recipient>" + settings.getPhoneSettings().getForwardNumber() + "</recipient>");
		out.println("	<text> <![CDATA[FW:" + message.getOriginator() + ": " + message.getText() + "]]> </text>");
		out.println("</message>");
		out.close();
	}

	private String textDate(java.util.Date date, boolean includeTime)
	{
		String dateStr = "";
		Calendar calendar = Calendar.getInstance();
		String day, month, year, hour, min, sec;

		if (date == null) return "* N/A *";
		calendar.setTime(date);
		day = "" + calendar.get(Calendar.DAY_OF_MONTH);
		if (day.length() != 2) day = "0" + day;
		month = "" + (calendar.get(Calendar.MONTH) + 1);
		if (month.length() != 2) month = "0" + month;
		year = "" + calendar.get(Calendar.YEAR);
		hour = "" + calendar.get(Calendar.HOUR_OF_DAY);
		if (hour.length() != 2) hour = "0" + hour;
		min = "" + calendar.get(Calendar.MINUTE);
		if (min.length() != 2) min = "0" + min;
		sec = "" + calendar.get(Calendar.SECOND);
		if (sec.length() != 2) sec = "0" + sec;
		dateStr = year + "/" + month + "/" + day;
		if (includeTime) dateStr += " " + hour + ":" + min + ":" + sec;
		return dateStr;
	}

	@SuppressWarnings("unchecked")
	private void checkXmlOutQueue() throws Exception
	{
		COutgoingMessage message;
		LinkedList messageList;
		File outDir;
		File[] files;
		int batchLimit;

		batchLimit = settings.getPhoneSettings().getBatchOutgoing();
		outDir = new File(settings.getPhoneSettings().getXmlOutQueue());
		files = outDir.listFiles(new CXmlInFilter());
		if (files.length > 0)
		{
			messageList = new LinkedList();
			for (int i = 0; i < files.length; i++)
			{
				if ((i + 1) > batchLimit) break;
				message = new COutgoingMessage();
				try
				{
					parseXmlMessageFile(message, files[i].toString());
				}
				catch (Exception e)
				{
					e.printStackTrace();
					message = null;
				}
				if (message != null)
				{
					message.setId(files[i].toString());
					if (settings.getPhoneSettings().getMessageEncoding().equalsIgnoreCase("7bit")) message.setMessageEncoding(CMessage.MessageEncoding.Enc7Bit);
					else if (settings.getPhoneSettings().getMessageEncoding().equalsIgnoreCase("8bit")) message.setMessageEncoding(CMessage.MessageEncoding.Enc8Bit);
					else if (settings.getPhoneSettings().getMessageEncoding().equalsIgnoreCase("unicode")) message.setMessageEncoding(CMessage.MessageEncoding.EncUcs2);
					else message.setMessageEncoding(CMessage.MessageEncoding.Enc7Bit);
					messageList.add(message);
				}
			}
			service.sendMessage(messageList);
			for (int i = 0; i < messageList.size(); i++)
			{
				message = (COutgoingMessage) messageList.get(i);
				if (message.getDispatchDate() != null)
				{
					settings.getGeneralSettings().rawOutLog(message);
					if (mainWindow != null)
					{
						mainWindow.setOutTo(message.getRecipient());
						mainWindow.setOutDate(message.getDispatchDate().toString());
						mainWindow.setOutText(message.getText());
					}
					else
					{
						System.out.println(CConstants.TEXT_OUTMSG);
						System.out.println("\t" + CConstants.LABEL_OUTGOING_TO + message.getRecipient());
						System.out.println("\t" + CConstants.LABEL_OUTGOING_DATE + message.getDate());
						System.out.println("\t" + CConstants.LABEL_OUTGOING_TEXT + message.getText());
					}
					File file = new File(message.getId());
					file.delete();
				}
			}
		}
	}

	private void parseXmlMessageFile(COutgoingMessage message, String file) throws Exception
	{
		SAXParserFactory factory;
		SAXParser parser;
		CXMLMessageParser myParser;

		factory = SAXParserFactory.newInstance();
		parser = factory.newSAXParser();
		myParser = new CXMLMessageParser();
		myParser.setMessage(message);
		parser.parse(new File(file), myParser);
	}

	static class CXmlInFilter implements FilenameFilter
	{
		public boolean accept(File dir, String name)
		{
			return name.endsWith(".xml");
		}
	}

	static class CXMLMessageParser extends DefaultHandler
	{
		String level = "";

		String info = "";

		COutgoingMessage message = null;

		public void setMessage(COutgoingMessage message)
		{
			this.message = message;
		}

		public void startElement(String uri, String lName, String qName, Attributes attrs) throws SAXException
		{
			level = level + "/" + qName;
			info = "";
		}

		public void endElement(String uri, String lName, String qName) throws SAXException
		{
			if (level.equalsIgnoreCase("/message/recipient")) message.setRecipient(info.trim());
			if (level.equalsIgnoreCase("/message/text")) message.setText(info.trim());
			if (level.equalsIgnoreCase("/message/validity")) message.setValidityPeriod(Integer.parseInt(info.trim()));
			if (level.equalsIgnoreCase("/message/source_port")) message.setSourcePort(Integer.parseInt(info.trim()));
			if (level.equalsIgnoreCase("/message/destination_port")) message.setDestinationPort(Integer.parseInt(info.trim()));
			if (level.equalsIgnoreCase("/message/flash_sms")) message.setFlashSms(true);
			level = level.substring(0, level.lastIndexOf("/"));
		}

		public void characters(char buf[], int offset, int len) throws SAXException
		{
			String token;

			token = new String(buf, offset, len).trim();
			if (token.length() == 0) return;
			info = info + token;
		}
	}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -