CSettings.java
上传用户:shunchung
上传日期:2013-04-07
资源大小:438k
文件大小:12k
源码类别:

手机短信编程

开发平台:

Java

  1. // jSMSEngine API.
  2. // An open-source API package for sending and receiving SMS via a GSM device.
  3. // Copyright (C) 2002-2006, Thanasis Delenikas, Athens/GREECE
  4. // Web Site: http://www.jsmsengine.org
  5. //
  6. // jSMSEngine is a package which can be used in order to add SMS processing
  7. // capabilities in an application. jSMSEngine is written in Java. It allows you
  8. // to communicate with a compatible mobile phone or GSM Modem, and
  9. // send / receive SMS messages.
  10. //
  11. // jSMSEngine is distributed under the LGPL license.
  12. //
  13. // This library is free software; you can redistribute it and/or
  14. // modify it under the terms of the GNU Lesser General Public
  15. // License as published by the Free Software Foundation; either
  16. // version 2.1 of the License, or (at your option) any later version.
  17. // This library is distributed in the hope that it will be useful,
  18. // but WITHOUT ANY WARRANTY; without even the implied warranty of
  19. // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  20. // Lesser General Public License for more details.
  21. // You should have received a copy of the GNU Lesser General Public
  22. // License along with this library; if not, write to the Free Software
  23. // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
  24. //
  25. //
  26. // jSMSServer GUI Application.
  27. // This application is based on the old jSMSServer GUI, and provides a general purpose
  28. // graphical interface. It can be used for a quick-start, if you don't want
  29. // to mess around with the API itself.
  30. // Please read jSMSServer.txt for further information.
  31. //
  32. import java.io.*;
  33. import java.util.*;
  34. import java.net.*;
  35. import java.sql.*;
  36. import org.jsmsengine.*;
  37. class CSettings
  38. {
  39. private static final String CONFIG_FILE = "jSMSServer.conf";
  40. private CMainWindow mainWindow;
  41. private CGeneralSettings generalSettings;
  42. private CPhoneSettings phoneSettings;
  43. private CDatabaseSettings databaseSettings;
  44. private CSerialDriverSettings serialDriverSettings;
  45. public CSettings()
  46. {
  47. generalSettings = new CGeneralSettings();
  48. phoneSettings = new CPhoneSettings();
  49. databaseSettings = new CDatabaseSettings();
  50. serialDriverSettings = new CSerialDriverSettings();
  51. }
  52. public void setMainWindow(CMainWindow mainWindow) { this.mainWindow = mainWindow; }
  53. public void loadConfiguration() throws Exception { loadConfiguration(CONFIG_FILE); } 
  54. public void loadConfiguration(String configFile) throws Exception
  55. {
  56. Properties props = new Properties();
  57. props.load(new FileInputStream(configFile));
  58. generalSettings.setGui(props.getProperty("general.gui", "yes").equalsIgnoreCase("yes"));
  59. generalSettings.setRawInLog(props.getProperty("general.raw_in_log", null));
  60. generalSettings.setRawOutLog(props.getProperty("general.raw_out_log", null));
  61. phoneSettings.setManufacturer(props.getProperty("phone.manufacturer", "generic"));
  62. phoneSettings.setModel(props.getProperty("phone.model", "generic"));
  63. phoneSettings.setPeriodInterval(Integer.parseInt(props.getProperty("phone.interval", "15")));
  64. phoneSettings.setDeleteAfterProcessing(props.getProperty("phone.delete_after_processing", "no").equalsIgnoreCase("yes"));
  65. phoneSettings.setPhoneBookFile(props.getProperty("phone.phone_book", null));
  66. phoneSettings.setXmlInQueue(props.getProperty("phone.xml_in_queue", null));
  67. phoneSettings.setXmlOutQueue(props.getProperty("phone.xml_out_queue", null));
  68. phoneSettings.setBatchIncoming(Integer.parseInt(props.getProperty("phone.batch_incoming", "-1")));
  69. phoneSettings.setBatchOutgoing(Integer.parseInt(props.getProperty("phone.batch_outgoing", "-1")));
  70. phoneSettings.setSmscNumber(props.getProperty("phone.smsc_number", null));
  71. phoneSettings.setMessageEncoding(props.getProperty("phone.message_encoding", "7bit"));
  72. phoneSettings.setSimPin(props.getProperty("phone.sim_pin", null));
  73. phoneSettings.setForwardNumber(props.getProperty("props.forward_number", null));
  74. databaseSettings.setEnabled(props.getProperty("database.enabled", "no").equalsIgnoreCase("yes"));
  75. if (databaseSettings.getEnabled())
  76. {
  77. if (props.getProperty("database.type", "").equalsIgnoreCase("sql92")) databaseSettings.setType(CDatabaseSettings.DB_TYPE_SQL92);
  78. else if (props.getProperty("database.type", "").equalsIgnoreCase("mysql")) databaseSettings.setType(CDatabaseSettings.DB_TYPE_MYSQL);
  79. else if (props.getProperty("database.type", "").equalsIgnoreCase("mssql")) databaseSettings.setType(CDatabaseSettings.DB_TYPE_MSSQL);
  80. else databaseSettings.setType(CDatabaseSettings.DB_TYPE_SQL92);
  81. databaseSettings.setUrl(props.getProperty("database.url", "url"));
  82. databaseSettings.setDriver(props.getProperty("database.driver", "driver"));
  83. databaseSettings.setUsername(props.getProperty("database.username", "username"));
  84. databaseSettings.setPassword(props.getProperty("database.password", "password"));
  85. }
  86. serialDriverSettings.setPort(props.getProperty("serial.port", "com1"));
  87. serialDriverSettings.setBaud(Integer.parseInt(props.getProperty("serial.baud", "19200")));
  88. }
  89. public CGeneralSettings getGeneralSettings() { return generalSettings; }
  90. public CPhoneSettings getPhoneSettings() { return phoneSettings; }
  91. public CDatabaseSettings getDatabaseSettings() { return databaseSettings; }
  92. public CSerialDriverSettings getSerialDriverSettings() { return serialDriverSettings; }
  93. class CGeneralSettings
  94. {
  95. private boolean guiEnabled = true;
  96. private boolean logEnabled = false;
  97. private RandomAccessFile rawInLog = null, rawOutLog = null;
  98. public CGeneralSettings()
  99. {
  100. }
  101. public void setGui(boolean guiOn) { this.guiEnabled = guiOn; }
  102. public void setRawInLog(String filename)
  103. {
  104. if (filename != null)
  105. {
  106. try
  107. {
  108. rawInLog = new RandomAccessFile(filename, "rw");
  109. rawInLog.seek(rawInLog.length());
  110. }
  111. catch (Exception e)
  112. {
  113. rawInLog = null;
  114. }
  115. }
  116. else rawInLog = null;
  117. }
  118. public void setRawOutLog(String filename)
  119. {
  120. if (filename != null)
  121. {
  122. try
  123. {
  124. rawOutLog = new RandomAccessFile(filename, "rw");
  125. rawOutLog.seek(rawOutLog.length());
  126. }
  127. catch (Exception e)
  128. {
  129. rawOutLog = null;
  130. }
  131. }
  132. else rawOutLog = null;
  133. }
  134. public boolean getGui() { return guiEnabled; }
  135. public boolean isRawInLogEnabled() { return (rawInLog != null); }
  136. public boolean isRawOutLogEnabled() { return (rawOutLog != null); }
  137. public void rawInLog(CIncomingMessage message)
  138. {
  139. if (rawInLog != null)
  140. {
  141. try
  142. {
  143. rawInLog.writeBytes(message.getOriginator());
  144. rawInLog.writeBytes("t");
  145. rawInLog.writeBytes(date2LogString(message.getDate()));
  146. rawInLog.writeBytes("t");
  147. rawInLog.writeBytes(message.getText());
  148. rawInLog.writeBytes("n");
  149. }
  150. catch (Exception e) {e.printStackTrace();}
  151. }
  152. }
  153. public void rawOutLog(COutgoingMessage message)
  154. {
  155. if (rawOutLog != null)
  156. {
  157. try
  158. {
  159. rawOutLog.writeBytes(message.getRecipient());
  160. rawOutLog.writeBytes("t");
  161. rawOutLog.writeBytes(date2LogString(message.getDispatchDate()));
  162. rawOutLog.writeBytes("t");
  163. rawOutLog.writeBytes(message.getText());
  164. rawOutLog.writeBytes("n");
  165. }
  166. catch (Exception e) {e.printStackTrace();}
  167. }
  168. }
  169. private String date2LogString(java.util.Date date)
  170. {
  171. String line="";
  172. Calendar cal = Calendar.getInstance();
  173. if (date == null) return "* N/A *";
  174. cal.setTime(date);
  175. line = line + cal.get(Calendar.YEAR);
  176. line = line + (((cal.get(Calendar.MONTH) + 1) <= 9) ? "0" + (cal.get(Calendar.MONTH) + 1) : "" + (cal.get(Calendar.MONTH) + 1));
  177. line = line + ((cal.get(Calendar.DAY_OF_MONTH) <= 9) ? "0" + cal.get(Calendar.DAY_OF_MONTH) : "" + cal.get(Calendar.DAY_OF_MONTH));
  178. line = line + ((cal.get(Calendar.HOUR_OF_DAY) <= 9) ? "0" + cal.get(Calendar.HOUR_OF_DAY) : "" + cal.get(Calendar.HOUR_OF_DAY));
  179. line = line + ((cal.get(Calendar.MINUTE) <= 9) ? "0" + cal.get(Calendar.MINUTE) : "" + cal.get(Calendar.MINUTE));
  180. line = line + ((cal.get(Calendar.SECOND) <= 9) ? "0" + cal.get(Calendar.SECOND) : "" + cal.get(Calendar.SECOND));
  181. return line;
  182. }
  183. }
  184. class CPhoneSettings
  185. {
  186. private String manufacturer;
  187. private String model;
  188. private int periodInterval;
  189. private boolean deleteAfterProcessing;
  190. private String phoneBookFile;
  191. private String xmlInQueue;
  192. private String xmlOutQueue;
  193. private int batchIncoming;
  194. private int batchOutgoing;
  195. private String smscNumber;
  196. private String messageEncoding;
  197. private String simPin;
  198. private String forwardNumber;
  199. public CPhoneSettings()
  200. {
  201. }
  202. public void setManufacturer(String manufacturer) { this.manufacturer = manufacturer; }
  203. public void setModel(String model) { this.model = model; }
  204. public void setPeriodInterval(int interval) { periodInterval = interval; }
  205. public void setDeleteAfterProcessing(boolean deleteAfterProcessing) { this.deleteAfterProcessing = deleteAfterProcessing; }
  206. public void setPhoneBookFile(String file) { this.phoneBookFile = file; }
  207. public void setXmlInQueue(String xmlInQueue) { this.xmlInQueue = xmlInQueue; }
  208. public void setXmlOutQueue(String xmlOutQueue) { this.xmlOutQueue = xmlOutQueue; }
  209. public void setBatchIncoming(int batchIncoming) { this.batchIncoming = batchIncoming; }
  210. public void setBatchOutgoing(int batchOutgoing) { this.batchOutgoing = batchOutgoing; }
  211. public void setSmscNumber(String number) { this.smscNumber = number; }
  212. public void setMessageEncoding(String messageEncoding) { this.messageEncoding = messageEncoding; }
  213. public void setSimPin(String simPin) { this.simPin = simPin; }
  214. public void setForwardNumber(String forwardNumber) { this.forwardNumber = forwardNumber; }
  215. public String getManufacturer() { return manufacturer; }
  216. public String getModel() { return model; }
  217. public int getPeriodInterval() { return periodInterval * 1000; }
  218. public boolean getDeleteAfterProcessing() { return deleteAfterProcessing; }
  219. public String getPhoneBookFile() { return phoneBookFile; }
  220. public String getXmlInQueue() { return xmlInQueue; }
  221. public String getXmlOutQueue() { return xmlOutQueue; }
  222. public int getBatchIncoming() { return (batchIncoming == -1 ? 32 : batchIncoming); }
  223. public int getBatchOutgoing() { return (batchOutgoing == -1 ? 32 : batchOutgoing); }
  224. public String getSmscNumber() { return smscNumber; }
  225. public String getMessageEncoding() { return messageEncoding; }
  226. public String getSimPin() { return simPin; }
  227. public String getForwardNumber() { return forwardNumber; }
  228. }
  229. class CDatabaseSettings
  230. {
  231. public static final int DB_TYPE_SQL92 = 1;
  232. public static final int DB_TYPE_MYSQL = 2;
  233. public static final int DB_TYPE_MSSQL = 3;
  234. private boolean enabled;
  235. private int type;
  236. private String url;
  237. private String driver;
  238. private String username;
  239. private String password;
  240. public CDatabaseSettings()
  241. {
  242. enabled = false;
  243. }
  244. public void setEnabled(boolean enabled) { this.enabled = enabled; }
  245. public void setType(int type) { this.type = type; }
  246. public void setUrl(String url) { this.url = url; }
  247. public void setDriver(String driver) { this.driver = driver; }
  248. public void setUsername(String username) { this.username = username; }
  249. public void setPassword(String password) { this.password = password; }
  250. public boolean getEnabled() { return enabled; }
  251. public int getType() { return type; }
  252. public String getUrl() { return url; }
  253. public String getDriver() { return driver; }
  254. public String getUsername() { return username; }
  255. public String getPassword() { return password; }
  256. }
  257. class CSerialDriverSettings
  258. {
  259. private String port;
  260. private int baud;
  261. public void setPort(String port) { this.port = port;}
  262. public void setBaud(int baud) { this.baud = baud; }
  263. public String getPort() { return port; }
  264. public int getBaud() { return baud; }
  265. }
  266. }