📄 smsservice.java
字号:
/* ====================================================================
* The Apache Software License, Version 1.1
*
* Copyright (c) 2003 Melvin Dave P. Vivas. All rights
* reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
*
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
*
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in
* the documentation and/or other materials provided with the
* distribution.
*
* 3. The end-user documentation included with the redistribution,
* if any, must include the following acknowledgment:
* "This product includes software developed by Melvin Dave P. Vivas."
* Alternately, this acknowledgment may appear in the software
* itself, if and wherever such third-party acknowledgments
* normally appear.
*
* 4. The names "LemonSMS", and "Melvin Dave P. Vivas"
* must not be used to endorse or promote products derived from this
* software without prior written permission. For written
* permission, please contact don_vito@hotpop.com.
*
* 5. Products derived from this software may not be called "LemonSMS",
* nor may "LemonSMS" appear in their name, without prior written
* permission of Melvin Dave P. Vivas.
*
* THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
* OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
* DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
* ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
* USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
* OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
* OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
* ====================================================================
*
* This software consists of voluntary contributions made by
* individuals on behalf of the LemonSMS project. For more
* information , please see <http://www.sourceforge.net/projects/lemonsms>.
*/
package net.lemongreen.mobile.smslibrary;
import java.util.List;
/**
* @author Melvin Dave P. Vivas
*
*/
public class SMSService implements Loggable{
private static SettingsLoader sl = null;
protected static CommandUtility cmdutil = null;
protected static SMSMessageSender msgS = null;
protected static SMSMessageCleaner msgC = null;
private static SMSRetrievalHandler msgB = null;
private static String portID = null;
private static SMSService smsS;
public static final void startService(String portID) throws LemonSMSException{
logger.info("Starting SMS Service");
logger.info("Using port : " + portID);
if (sl == null) {
sl = new SettingsLoader(portID);
}
if (cmdutil == null) {
try {
cmdutil = new CommandUtility(sl.portUsed);
} catch (LemonSMSException e) {
throw new LemonSMSException("SMSService : () " + e.getCause());
}
}
if (msgS == null) {
msgS = SMSMessageSender.getInstance();
}
if (msgC == null) {
msgC = SMSMessageCleaner.getInstance();
}
if (msgB == null) {
msgB = SMSRetrievalHandler.getInstance();
}
try {
cmdutil.executeCommand(cmdutil.getCMD_AT());
checkIfATOK();
Thread.sleep(2000);
cmdutil.executeCommand(cmdutil.getSET_SMSMODE_TO_TEXT());
checkIfSetModeToTextOK();
Thread.sleep(2000);
} catch (InterruptedException e) {
logger.error(e);
throw new LemonSMSException("SMSService : () " + e.getCause());
} catch (LemonSMSException e){
throw new LemonSMSException("SMSService : () " + e.getCause());
}
}
private final static void checkIfATOK() throws LemonSMSException{
String tmp = null;
try {
tmp = cmdutil.getCommandResponse();
} catch (LemonSMSException e) {
logger.error(e);
throw new LemonSMSException("SMSService : () " + e.getCause());
}
if (tmp == null || tmp.equals("")) {
logger.error("Error.");
logger.error(
"Cannot establish connection to Communications Port "
+ sl.portUsed
+ ". Check your cable.");
logger.error("Be sure your cable is connected properly.");
logger.error(
"You can try to unplug and replug your cable and try to run the application again.");
System.exit(0);
}
if (tmp.indexOf("ERROR") > -1) {
logger.debug(tmp);
logger.error("Error Encountered.Check your cable connection.");
} else if (tmp.indexOf("OK") > -1) {
logger.info(
"Connection to Communications Port \""
+ sl.portUsed
+ "\" successful");
logger.info("SMS Service started.");
} else {
logger.error(
"Cannot establish connection to Communications Port "
+ sl.portUsed
+ ". Check your cable.");
logger.error("Be sure your cable is connected properly.");
logger.error(
"You can try to unplug and replug your cable and try to run the application again.");
System.exit(0);
}
}
private final static void checkIfSetModeToTextOK() throws LemonSMSException{
String tmp = null;
try {
tmp = cmdutil.getCommandResponse();
} catch (LemonSMSException e) {
throw new LemonSMSException("SMSService : () " + e.getCause());
}
if (tmp.indexOf("ERROR") > -1) {
logger.debug(tmp);
logger.error("Error in setting mode to text.");
} else if (tmp.indexOf("OK") > -1) {
//logger.info("Setting mode to text ok.");
} else {
logger.error("Check your cable connection");
throw new LemonSMSException("Error in connecting : Check your cable connection");
}
}
public final static void shutdownService() throws LemonSMSException{
logger.info("Shutting Down SMS Service...");
if (cmdutil != null) {
try {
cmdutil.destroy();
} catch (LemonSMSException e) {
throw new LemonSMSException("SMSService : () " + e.getCause());
}
cmdutil = null;
}
if (msgS != null) {
msgS = null;
}
if (msgC != null) {
msgC = null;
}
if (msgB != null) {
msgB = null;
}
logger.info("SMS Service successfully stopped.");
}
public final static List retrieveMessages() {
return msgB.getMessagesList();
}
public final static void processMessagesToFile(String inboxFile) {
msgB.processMessageListToFile(inboxFile);
}
public final static void sendMessage(String number, String message) {
msgS.sendSMS(number, message);
}
public final static void deleteMessage(String msgIndex) {
msgC.deleteSMS(msgIndex);
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -