📄 csettings.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 + -