/* Copyright (c) 2011, SaferMobile/MobileActive - https://safermobile.org */
/* See LICENSE for licensing information */
package org.safermobile.clear.micro.sms;
import java.io.IOException;
import java.io.InterruptedIOException;
import java.util.Enumeration;
import java.util.Hashtable;
import java.util.Vector;
import javax.microedition.io.Connector;
import javax.wireless.messaging.Message;
import javax.wireless.messaging.MessageConnection;
import javax.wireless.messaging.TextMessage;
import org.safermobile.micro.utils.Logger;
public class SMSManager implements Runnable {
private MessageConnection connection;
private Vector listeners;
private boolean stop;
private int port;
//private static Hashtable _instances;
private final static String PROTOCOL = "sms://";
/**
* Creates a SMS Server listening on
* the specified port.
*
* @param port server port.
*/
private SMSManager(int port) {
this.listeners = new Vector();
this.port = port;
}
/*
public static synchronized SMSManager getInstance (int port) throws IOException
{
if (_instances == null)
_instances = new Hashtable();
String key = "" + port;
SMSManager smsServer;
if (_instances.containsKey(key))
{
smsServer = (SMSManager)_instances.get(key);
Logger.debug("SMSManager", "found exist SMSManager on port: " + key);
}
else
{
smsServer = new SMSManager (port);
smsServer.start();
Logger.debug("SMSManager", "created new SMSManager on port: " + key);
_instances.put(key, smsServer);
}
return smsServer;
}*/
public static void sendSMSAlert (String phoneNumber, String message) throws InterruptedIOException, IOException
{
/*
MessageConnection sender = (MessageConnection) Connector.open(address);
//creates a new TextMessage
TextMessage textMessage = (TextMessage)connection.newMessage(MessageConnection.TEXT_MESSAGE);
textMessage.setAddress(PROTOCOL + address + ":" + port);
textMessage.setPayloadText(message);
connection.send(textMessage);*/
String url = "sms://" + phoneNumber;
MessageConnection connection =
(MessageConnection) Connector.open(url);
TextMessage msg = (TextMessage) connection.newMessage(
MessageConnection.TEXT_MESSAGE);
msg.setPayloadText(message);
connection.send(msg);
connection.close();
}
/**
* Starts the server.
*
* @throws IOException - Any connection related error.
*/
public void start() throws IOException {
Thread t = new Thread(this);
t.start();
}
/**
* Stops the server.
*/
public void stop() {
this.stop = true;
}
/* (non-Javadoc)
* @see java.lang.Runnable#run()
*/
public void run() {
/*
try {
this.connection = (MessageConnection) Connector.open(PROTOCOL + ':' + this.port);
while (!stop) {
try {
Message message = this.connection.receive();
Enumeration enumeration = this.listeners.elements();
while (enumeration.hasMoreElements()) {
SMSListener listener = (SMSListener) enumeration.nextElement();
listener.messageReceived(message);
}
} catch (Exception e) {
e.printStackTrace();
}
}
this.connection.close();
} catch (Exception e) {
e.printStackTrace();
}*/
}
/**
* Adds a listener for new messages.
*
* @param listener target listener.
*/
public void addListener(SMSListener listener) {
if (!this.listeners.contains(listener)) {
this.listeners.addElement(listener);
}
}
/**
* Removes a listener for new messages.
*
* @param listener target listener.
*/
public void removeListener(SMSListener listener) {
this.listeners.removeElement(listener);
}
}