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

📄 csettings.java

📁 开源的手机短信开发包!包括例子程序和比较详细的文档
💻 JAVA
字号:
//
//	jSMSEngine API.
//	An open-source API package for sending and receiving SMS via a GSM device.
//	Copyright (C) 2002-2005, 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
//

//
//	jSMSServer GUI Application.
//	This application is based on the old jSMSServer GUI, and provides a general purpose
//		graphical interface. It can be used for a quick-start, if you don't want
//		to mess around with the API itself.
//	Please read jSMSServer.txt for further information.
//

import java.io.*;
import java.util.*;
import java.net.*;
import java.sql.*;
import javax.comm.*;

import org.jsmsengine.*;

class CSettings
{
	private static final String CONFIG_FILE = "jSMSServer.conf";

	private CMainWindow mainWindow;

	private CGeneralSettings generalSettings;
	private CPhoneSettings phoneSettings;
	private CDatabaseSettings databaseSettings;
	private CSerialDriverSettings serialDriverSettings;

	public CSettings()
	{
		generalSettings = new CGeneralSettings();
		phoneSettings = new CPhoneSettings();
		databaseSettings = new CDatabaseSettings();
		serialDriverSettings = new CSerialDriverSettings();
	}

	public void setMainWindow(CMainWindow mainWindow) { this.mainWindow = mainWindow; }

	public boolean loadConfiguration() { return loadConfiguration(CONFIG_FILE); }
	public boolean loadConfiguration(String configFile)
	{
		BufferedReader file;
		String inLine = "";
		String token;
		StringTokenizer tokenizer;
		boolean result = true;

		try
		{
			file = new BufferedReader(new FileReader(configFile));
			inLine = file.readLine();
			while (inLine != null)
			{
				if ((inLine.length() < 5) || (inLine.charAt(0) == '#'))
				{
					inLine = file.readLine();
					continue;
				}
				tokenizer = new StringTokenizer(inLine, "=");
				token = tokenizer.nextToken();
				if (token.equalsIgnoreCase("general.raw_in_log"))
				{
					generalSettings.setRawInLog(tokenizer.hasMoreTokens() ? tokenizer.nextToken() : null);
				}
				else if (token.equalsIgnoreCase("general.raw_out_log"))
				{
					generalSettings.setRawOutLog(tokenizer.hasMoreTokens() ? tokenizer.nextToken() : null);
				}
				else if (token.equalsIgnoreCase("general.cache"))
				{
					generalSettings.setCacheDir(tokenizer.hasMoreTokens() ? tokenizer.nextToken() : null);
				}
				else if (token.equalsIgnoreCase("phone.interval")) phoneSettings.setPeriodInterval(Integer.parseInt(tokenizer.nextToken().trim()));
				else if (token.equalsIgnoreCase("phone.delete_after_processing"))
				{
					token = tokenizer.nextToken();
					phoneSettings.setDeleteAfterProcessing(token.equalsIgnoreCase("yes"));
				}
				else if (token.equalsIgnoreCase("phone.phone_book"))
				{
					phoneSettings.setPhoneBookFile(tokenizer.hasMoreTokens() ? tokenizer.nextToken() : null);
				}
				else if (token.equalsIgnoreCase("phone.xml_in_queue"))
				{
					phoneSettings.setXmlInQueue(tokenizer.hasMoreTokens() ? tokenizer.nextToken() : null);
				}
				else if (token.equalsIgnoreCase("phone.xml_out_queue"))
				{
					phoneSettings.setXmlOutQueue(tokenizer.hasMoreTokens() ? tokenizer.nextToken() : null);
				}
				else if (token.equalsIgnoreCase("phone.operation_mode"))
				{
					phoneSettings.setOperationMode(tokenizer.hasMoreTokens() ? tokenizer.nextToken() : "ascii");
				}
				else if (token.equalsIgnoreCase("phone.smsc_number"))
				{
					phoneSettings.setSmscNumber(tokenizer.hasMoreTokens() ? tokenizer.nextToken() : "");
				}
				else if (token.equalsIgnoreCase("phone.message_encoding"))
				{
					phoneSettings.setMessageEncoding(tokenizer.hasMoreTokens() ? tokenizer.nextToken() : null);
				}
				else if (token.equalsIgnoreCase("phone.sim_pin"))
				{
					phoneSettings.setSimPin(tokenizer.hasMoreTokens() ? tokenizer.nextToken() : null);
				}
				else if (token.equalsIgnoreCase("phone.forward_number"))
				{
					phoneSettings.setForwardNumber(tokenizer.hasMoreTokens() ? tokenizer.nextToken() : null);
				}
				else if (token.equalsIgnoreCase("database.enabled"))
				{
					token = tokenizer.nextToken();
					databaseSettings.setEnabled(token.equalsIgnoreCase("yes"));
				}
				else if (token.equalsIgnoreCase("database.type"))
				{
					if (databaseSettings.getEnabled())
					{
						token = tokenizer.nextToken();
						if (token.equalsIgnoreCase("sql92")) databaseSettings.setType(CDatabaseSettings.DB_TYPE_SQL92);
						else if (token.equalsIgnoreCase("foxpro")) databaseSettings.setType(CDatabaseSettings.DB_TYPE_FOXPRO);
						else if (token.equalsIgnoreCase("mysql")) databaseSettings.setType(CDatabaseSettings.DB_TYPE_MYSQL);
						else databaseSettings.setType(CDatabaseSettings.DB_TYPE_SQL92);
					}
				}
				else if (token.equalsIgnoreCase("database.url"))
				{
					if (databaseSettings.getEnabled())
					{
						String url = "";
	
						url = tokenizer.nextToken();
						while (tokenizer.hasMoreTokens()) url += tokenizer.nextToken();
						databaseSettings.setUrl(url);
					}
				}
				else if (token.equalsIgnoreCase("database.driver"))
				{
					if (databaseSettings.getEnabled())
					{
						String driver = "";
	
						driver = tokenizer.nextToken();
						while (tokenizer.hasMoreTokens()) driver += tokenizer.nextToken();
						databaseSettings.setDriver(driver);
					}
				}
				else if (token.equalsIgnoreCase("database.username"))
				{
					if (databaseSettings.getEnabled()) databaseSettings.setUsername(tokenizer.nextToken());
				}
				else if (token.equalsIgnoreCase("database.password"))
				{
					if (databaseSettings.getEnabled()) databaseSettings.setPassword(tokenizer.nextToken());
				}
				else if (token.equalsIgnoreCase("serial.port"))  serialDriverSettings.setPort(tokenizer.nextToken());
				else if (token.equalsIgnoreCase("serial.baud"))  serialDriverSettings.setBaud(Integer.parseInt(tokenizer.nextToken()));
				else System.out.println("Ignoring configuration item: " + token);
				inLine = file.readLine();
			}
			file.close();
		}
		catch (Exception e)
		{
			System.out.println("Error reading configuration file, exiting...");
			System.exit(1);
		}
		return result;
	}

	public CGeneralSettings getGeneralSettings() { return generalSettings; }
	public CPhoneSettings getPhoneSettings() { return phoneSettings; }
	public CDatabaseSettings getDatabaseSettings() { return databaseSettings; }
	public CSerialDriverSettings getSerialDriverSettings() { return serialDriverSettings; }

	class CGeneralSettings
	{
		private boolean logEnabled = false;
		private RandomAccessFile rawInLog = null, rawOutLog = null;
		private String cacheDir = null;

		public CGeneralSettings()
		{
		}

		public void setRawInLog(String filename)
		{
			if (filename != null)
			{
				try
				{
					rawInLog = new RandomAccessFile(filename, "rw");
					rawInLog.seek(rawInLog.length());
				}
				catch (Exception e)
				{
					rawInLog = null;
				}
			}
			else rawInLog = null;
			mainWindow.setRawInLog(rawInLog == null ? false : true);
		}

		public void setRawOutLog(String filename)
		{
			if (filename != null)
			{
				try
				{
					rawOutLog = new RandomAccessFile(filename, "rw");
					rawOutLog.seek(rawOutLog.length());
				}
				catch (Exception e)
				{
					rawOutLog = null;
				}
			}
			else rawOutLog = null;
			mainWindow.setRawOutLog(rawOutLog == null ? false : true);
		}

		public void rawInLog(CIncomingMessage message)
		{
			if (rawInLog != null)
			{
				try
				{
					rawInLog.writeBytes(message.getOriginator());
					rawInLog.writeBytes("\t");
					rawInLog.writeBytes(date2LogString(message.getDate()));
					rawInLog.writeBytes("\t");
					rawInLog.writeBytes(message.getText());
					rawInLog.writeBytes("\n");
				}
				catch (Exception e) {e.printStackTrace();}
			}
		}

		public void rawOutLog(COutgoingMessage message)
		{
			if (rawOutLog != null)
			{
				try
				{
					rawOutLog.writeBytes(message.getRecipient());
					rawOutLog.writeBytes("\t");
					rawOutLog.writeBytes(date2LogString(message.getDispatchDate()));
					rawOutLog.writeBytes("\t");
					rawOutLog.writeBytes(message.getText());
					rawOutLog.writeBytes("\n");
				}
				catch (Exception e) {e.printStackTrace();}
			}
		}

		public void setCacheDir(String dir) { cacheDir = dir; }
		public String getCacheDir() { return cacheDir; }

		private String date2LogString(java.util.Date date)
		{
			String line="";
			Calendar cal = Calendar.getInstance();

			if (date == null) return "* N/A *";
			cal.setTime(date);
			line = line + cal.get(Calendar.YEAR);
			line = line + (((cal.get(Calendar.MONTH) + 1) <= 9) ? "0" + (cal.get(Calendar.MONTH) + 1) : "" + (cal.get(Calendar.MONTH) + 1));
			line = line + ((cal.get(Calendar.DAY_OF_MONTH) <= 9) ? "0" + cal.get(Calendar.DAY_OF_MONTH) : "" + cal.get(Calendar.DAY_OF_MONTH));
			line = line + ((cal.get(Calendar.HOUR_OF_DAY) <= 9) ? "0" + cal.get(Calendar.HOUR_OF_DAY) : "" + cal.get(Calendar.HOUR_OF_DAY));
			line = line + ((cal.get(Calendar.MINUTE) <= 9) ? "0" + cal.get(Calendar.MINUTE) : "" + cal.get(Calendar.MINUTE));
			line = line + ((cal.get(Calendar.SECOND) <= 9) ? "0" + cal.get(Calendar.SECOND) : "" + cal.get(Calendar.SECOND));
			return line;
		}
	}

	class CPhoneSettings
	{
		private int periodInterval = 30;
		private boolean deleteAfterProcessing = false;
		private String phoneBookFile = null;
		private String xmlInQueue = null;
		private String xmlOutQueue = null;
		private String operationMode = null;
		private String smscNumber = null;
		private String messageEncoding = null;
		private String simPin = null;
		private String forwardNumber = null;

		public CPhoneSettings()
		{
		}

		public void setPeriodInterval(int interval) { periodInterval = interval; }
		public void setDeleteAfterProcessing(boolean deleteAfterProcessing) { this.deleteAfterProcessing = deleteAfterProcessing; }
		public void setPhoneBookFile(String file) { this.phoneBookFile = file; }
		public void setXmlInQueue(String xmlInQueue)
		{
			this.xmlInQueue = xmlInQueue;
			mainWindow.setInterfaceXML((getXmlInQueue() != null) || (getXmlOutQueue() != null));
		}
		public void setXmlOutQueue(String xmlOutQueue)
		{
			this.xmlOutQueue = xmlOutQueue;
			mainWindow.setInterfaceXML((getXmlInQueue() != null) || (getXmlOutQueue() != null));
		}
		public void setOperationMode(String mode) { this.operationMode = mode; }
		public void setSmscNumber(String number) { this.smscNumber = number; }
		public void setMessageEncoding(String messageEncoding) { this.messageEncoding = messageEncoding; }
		public void setSimPin(String simPin) { this.simPin = simPin; }
		public void setForwardNumber(String forwardNumber) { this.forwardNumber = forwardNumber; }

		public int getPeriodInterval() { return periodInterval * 1000; }
		public boolean getDeleteAfterProcessing() { return deleteAfterProcessing; }
		public String getPhoneBookFile() { return phoneBookFile; }
		public String getXmlInQueue() { return xmlInQueue; }
		public String getXmlOutQueue() { return xmlOutQueue; }
		public String getOperationMode() { return operationMode; }
		public String getSmscNumber() { return smscNumber; }
		public String getMessageEncoding() { return messageEncoding; }
		public String getSimPin() { return simPin; }
		public String getForwardNumber() { return forwardNumber; }
	}

	class CDatabaseSettings
	{
		public static final int DB_TYPE_SQL92	 = 1;
		public static final int DB_TYPE_FOXPRO = 10;
		public static final int DB_TYPE_MYSQL = 20;

		private boolean enabled = false;
		private int type = 0;
		private String url = "";
		private String driver = "";
		private String username = "";
		private String password = "";

		public CDatabaseSettings()
		{
			enabled = false;
		}

		public void setEnabled(boolean enabled)
		{
			this.enabled = enabled;
			mainWindow.setInterfaceDB(enabled);
		}
		public void setType(int type) { this.type = type; }
		public void setUrl(String url) { this.url = url; }
		public void setDriver(String driver) { this.driver = driver; }
		public void setUsername(String username) { this.username = username; }
		public void setPassword(String password) { this.password = password; }

		public boolean getEnabled() { return enabled; }
		public int getType() { return type; }
		public String getUrl() { return url; }
		public String getDriver() { return driver; }
		public String getUsername() { return username; }
		public String getPassword() { return password; }
	}

	class CSerialDriverSettings
	{
		private String port = "com1";
		private int baud = 19200;

		public void setPort(String port) { this.port = port;}
		public void setBaud(int baud) { this.baud = baud; }

		public String getPort() { return port; }
		public int getBaud() { return baud; }
	}
}

⌨️ 快捷键说明

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