package org.safermobile.clear.micro.apps.controllers;
import java.util.Date;
import org.safermobile.clear.micro.L10nConstants;
import org.safermobile.clear.micro.L10nResources;
import org.safermobile.clear.micro.apps.ITCConstants;
import org.safermobile.clear.micro.apps.LocaleManager;
import org.safermobile.clear.micro.data.PhoneInfo;
import org.safermobile.clear.micro.sms.SMSManager;
import org.safermobile.micro.utils.Preferences;
import org.safermobile.micro.utils.StringTokenizer;
public class ShoutController {
/*
* localized resources
*/
L10nResources l10n = LocaleManager.getResources();
public String buildShoutMessage (String userName, String userMessage, String userLocation)
{
StringBuffer sbPanicMsg = new StringBuffer();
sbPanicMsg.append(l10n.getString(L10nConstants.keys.PANIC_MSG_PRE));
if (userName != null)
{
sbPanicMsg.append(l10n.getString(L10nConstants.keys.PANIC_MSG_FROM));
sbPanicMsg.append(':');
sbPanicMsg.append(userName);
}
sbPanicMsg.append(userMessage);
if (userLocation != null)
{
sbPanicMsg.append(' ');
sbPanicMsg.append(l10n.getString(L10nConstants.keys.PANIC_MSG_LOCATION));
sbPanicMsg.append(userLocation);
}
//append timestamp
sbPanicMsg.append(' ');
sbPanicMsg.append(l10n.getString(L10nConstants.keys.PANIC_MSG_TIMESTAMP));
sbPanicMsg.append(new Date().toString());
return sbPanicMsg.toString();
}
public String buildDataMessage (String userName)
{
StringBuffer sbPanicMsg = new StringBuffer();
sbPanicMsg.append(l10n.getString(L10nConstants.keys.PANIC_MSG_FROM));
sbPanicMsg.append(' ');
sbPanicMsg.append(userName);
sbPanicMsg.append(':');
boolean gotData = false;
String IMEI = PhoneInfo.getIMEI();
if (IMEI != null && IMEI.length() > 0)
{
gotData = true;
sbPanicMsg.append(" ");
sbPanicMsg.append("IMEI:");
sbPanicMsg.append(IMEI);
}
String IMSI = PhoneInfo.getIMSI();
if (IMSI != null && IMSI.length() > 0)
{
gotData = true;
sbPanicMsg.append(" ");
sbPanicMsg.append("IMSI:");
sbPanicMsg.append(IMSI);
}
//append loc info
String cid = PhoneInfo.getCellId();
if (cid != null && cid.length() > 0)
{
gotData = true;
sbPanicMsg.append(" ");
sbPanicMsg.append(l10n.getString(L10nConstants.keys.PANIC_MSG_CID));
sbPanicMsg.append(cid);
}
String lac = PhoneInfo.getLAC();
if (lac != null && lac.length() > 0)
{
gotData = true;
sbPanicMsg.append(" ");
sbPanicMsg.append(l10n.getString(L10nConstants.keys.PANIC_MSG_LAC));
sbPanicMsg.append(lac);
}
/*
if (_useGPS)
{
// #if hasLocationCapability
if (_lastLocation != null)
{
sbPanicMsg.append(" GPS:");
sbPanicMsg.append(_lastLocation.getQualifiedCoordinates().getLatitude());
sbPanicMsg.append(",");
sbPanicMsg.append(_lastLocation.getQualifiedCoordinates().getLongitude());
sbPanicMsg.append(' ');
}
// #endif
}*/
//append timestamp
sbPanicMsg.append(" ");
sbPanicMsg.append(l10n.getString(L10nConstants.keys.PANIC_MSG_TIMESTAMP));
sbPanicMsg.append(new Date().toString());
if (gotData)
return sbPanicMsg.toString();
else
return null;
}
public void sendAutoSMSShout (Preferences prefs) throws Exception
{
String recipients = prefs.get(ITCConstants.PREFS_KEY_RECIPIENT);
String userName = prefs.get(ITCConstants.PREFS_KEY_NAME);
String userMessage = prefs.get(ITCConstants.PREFS_KEY_MESSAGE);
String userLocation = prefs.get(ITCConstants.PREFS_KEY_LOCATION);
String shoutMsg = buildShoutMessage(userName, userMessage, userLocation);
String shoutData = buildDataMessage (userName);
sendSMSShout (recipients, shoutMsg, shoutData);
}
public void sendSMSShout (String recipients, String panicMsg, String panicData) throws Exception
{
StringTokenizer st = new StringTokenizer(recipients,",");
while (st.hasMoreTokens())
{
String recp = st.nextToken().trim();
SMSManager.sendSMSAlert(recp, panicMsg);
if (panicData != null)
SMSManager.sendSMSAlert(recp, panicData);
}
}
}