/*******************************************************************************
* Created by Orlando Aliaga
* Copyright 2015 Prey Inc. All rights reserved.
* License: GPLv3
* Full license at "/LICENSE"
******************************************************************************/
package com.prey.events.manager;
import org.json.JSONObject;
import android.content.Context;
import com.prey.PreyConfig;
import com.prey.PreyLogger;
import com.prey.events.Event;
import com.prey.events.retrieves.EventRetrieveDataBattery;
import com.prey.events.retrieves.EventRetrieveDataPrivateIp;
import com.prey.events.retrieves.EventRetrieveDataUptime;
import com.prey.events.retrieves.EventRetrieveDataWifi;
import com.prey.managers.PreyWifiManager;
public class EventManager {
private EventMap<String, JSONObject> mapData = null;
private Context ctx = null;
public Event event = null;
public final static String WIFI = "wifi";
public final static String UPTIME = "uptime";
public final static String PRIVATE_IP = "privateip";
public final static String BATTERY = "battery";
public EventManager(Context ctx) {
this.ctx = ctx;
}
public void execute(Event event) {
boolean isDeviceRegistered = isThisDeviceAlreadyRegisteredWithPrey(ctx);
boolean isConnectionExists = false;
boolean isOnline = false;
PreyConfig.getPreyConfig(ctx).registerC2dm();
String ssid = PreyWifiManager.getInstance(ctx).getSSID();
String previousSsid = PreyConfig.getPreyConfig(ctx).getPreviousSsid();
boolean validation = true;
if (Event.WIFI_CHANGED.equals(event.getName())) {
if (ssid != null && !"".equals(ssid) && !ssid.equals(previousSsid) && !"<unknown ssid>".equals(ssid) && !"0x".equals(ssid)) {
validation = true;
} else {
validation = false;
}
}
if (validation) {
PreyLogger.i("name:" + event.getName() + " info:" + event.getInfo() + " ssid[" + ssid + "] previousSsid[" + previousSsid + "]");
PreyLogger.i("change PreviousSsid:" + ssid);
PreyConfig.getPreyConfig(ctx).setPreviousSsid(ssid);
try {
isConnectionExists = PreyConfig.getPreyConfig(ctx).isConnectionExists();
isOnline = PreyWifiManager.getInstance(ctx).isOnline();
} catch (Exception e) {
}
// if This Device Already Registered With Prey
if (isDeviceRegistered) {
// if connection exists
if (isConnectionExists) {
// if there is connection, verify if online
if (isOnline) {
this.mapData = new EventMap<String, JSONObject>();
this.event = event;
this.mapData.put(EventManager.UPTIME, null);
this.mapData.put(EventManager.WIFI, null);
this.mapData.put(EventManager.PRIVATE_IP, null);
this.mapData.put(EventManager.BATTERY, null);
new EventRetrieveDataUptime().execute(ctx, this);
new EventRetrieveDataWifi().execute(ctx, this);
new EventRetrieveDataPrivateIp().execute(ctx, this);
new EventRetrieveDataBattery().execute(ctx, this);
//new Thread(new PreyBetaActionsRunner(ctx)).start();
}
}
}
}
}
public void receivesData(String key, JSONObject data) {
mapData.put(key, data);
if (mapData.isCompleteData()) {
sendEvents();
}
}
private void sendEvents() {
if (mapData != null) {
JSONObject jsonObjectStatus = mapData.toJSONObject();
PreyLogger.d("jsonObjectStatus: " + jsonObjectStatus.toString());
if (event != null) {
if (PreyWifiManager.getInstance(ctx).isOnline()) {
String lastEvent = PreyConfig.getPreyConfig(ctx).getLastEvent();
PreyLogger.d("lastEvent:"+lastEvent);
if (Event.BATTERY_LOW.equals(event.getName())) {
if(PreyConfig.getPreyConfig(ctx).isLocationLowBattery()) {
PreyLogger.d("LocationLowBatteryRunner.isValid(ctx):"+ LocationLowBatteryRunner.isValid(ctx));
if (LocationLowBatteryRunner.isValid(ctx)) {
new Thread(new LocationLowBatteryRunner(ctx)).start();
try{
jsonObjectStatus.put("locationLowBattery",true);
}catch(Exception e){}
}
}
}
if (!Event.WIFI_CHANGED.equals(event.getName()) || !event.getName().equals(lastEvent)) {
PreyConfig.getPreyConfig(ctx).setLastEvent(event.getName());
PreyLogger.d("event name[" + this.event.getName() + "], info[" + this.event.getInfo() + "]");
new EventThread(ctx, event, jsonObjectStatus).start();
}
}
}
}
}
private boolean isThisDeviceAlreadyRegisteredWithPrey(Context ctx) {
return PreyConfig.getPreyConfig(ctx).isThisDeviceAlreadyRegisteredWithPrey();
}
}