Advertisement
Guest User

ActivationService

a guest
May 29th, 2018
25
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 5.65 KB | None | 0 0
  1. public class ActivationService extends Service {
  2.  
  3.     public static final String STATUS_NEW = "0";
  4.     public static final String STATUS_IDLE = "1";
  5.     public static final String STATUS_SERVICE_DESTROY = "2";
  6.     public static final String STATUS_OK = "3";
  7.     public static final String STATUS_EMERGENCY = "4";
  8.  
  9.     private DatabaseReference databaseReference;
  10.     private static String loggedUserId;
  11.     private Context context;
  12.     private ValueEventListener valueEventListenerContatos;
  13.     private Preferences preferences;
  14.  
  15.     public ActivationService() {
  16.     }
  17.  
  18.     @Override
  19.     public IBinder onBind(Intent intent) {
  20.         return null;
  21.     }
  22.  
  23.     @Override
  24.     public void onCreate() {
  25.         super.onCreate();
  26.         Log.d("TAG", "onCreate - ActivationService");
  27.         context = getApplicationContext();
  28.         preferences = new Preferences(context);
  29.         loggedUserId = preferences.getLoggedUserId();
  30.         if (TextUtils.isEmpty(loggedUserId)) {
  31.             stopSelf();
  32.         }
  33.     }
  34.  
  35.     @Override
  36.     public int onStartCommand(final Intent intent, int flags, int startId) {
  37.         Log.d("TAG", "onStartCommand - ActivationService");
  38.         databaseReference = FirebaseConfig.getFirebaseReference();
  39.         databaseReference = databaseReference.child("users");
  40.         valueEventListenerContatos = new ValueEventListener() {
  41.             @Override
  42.             public void onDataChange(DataSnapshot dataSnapshot) {
  43.                 if (dataSnapshot.getValue() != null) {
  44.                     for (DataSnapshot users : dataSnapshot.getChildren()) {
  45.                         User user = users.getValue(User.class);
  46.                         if (isActive(user)) {
  47.                             pushEmergency(user);
  48.                         } else if (isCurrentInEmergency(user)) {
  49.                             pushSelfEmergency(user);
  50.                         } else if (wasActive(user)) {
  51.                             removeEmergency(user);
  52.                         }
  53.                     }
  54.                 }
  55.             }
  56.  
  57.             private boolean isActive(User user) {
  58.                 return !isLoggedUser(user) && isInContats(user) &&
  59.                         isInEmergency(user);
  60.             }
  61.  
  62.             private boolean isCurrentInEmergency(User user) {
  63.                 return isLoggedUser(user) && isInEmergency(user);
  64.             }
  65.  
  66.             private boolean wasActive(User user) {
  67.                 String emergencyUserId = preferences.getEmergencyUserId();
  68.                 return !TextUtils.isEmpty(emergencyUserId) && isEmergencyUser(emergencyUserId, user)
  69.                         && isUserStatusOK(emergencyUserId) && !isLoggedUser(user);
  70.             }
  71.  
  72.             @Override
  73.             public void onCancelled(DatabaseError databaseError) {
  74.             }
  75.         };
  76.         databaseReference.addValueEventListener(valueEventListenerContatos);
  77.         return super.onStartCommand(intent, flags, startId);
  78.     }
  79.  
  80.     @Override
  81.     public void onDestroy() {
  82.         super.onDestroy();
  83.         Log.d("TAG", "onDestroy - ActivationService");
  84.         if(!TextUtils.isEmpty(loggedUserId)){
  85.             UserHelper.changeStatus(loggedUserId, STATUS_SERVICE_DESTROY);
  86.         }
  87.         if (databaseReference != null && valueEventListenerContatos != null) {
  88.             databaseReference.removeEventListener(valueEventListenerContatos);
  89.         }
  90.         NotificationHelper.cancelNotification(context, NotificationHelper.NOTIFICATION_ID_ALARM);
  91.         NotificationHelper.cancelNotification(context, NotificationHelper.NOTIFICATION_ID_EMERGENCY);
  92.         NotificationHelper.cancelNotification(context, NotificationHelper.NOTIFICATION_ID_SELFEMERGENCY);
  93.     }
  94.  
  95.     private void pushEmergency(User user) {
  96.         Log.d("TAG", "pushEmergency " + user.getName());
  97.         preferences.setEmergencyUserId(user.getId());
  98.         preferences.setEmergencyUserName(user.getName());
  99.         Intent intentEmergency = new Intent(context, NotificationEmergencyService.class);
  100.         startService(intentEmergency);
  101.     }
  102.  
  103.     private void removeEmergency(User user) {
  104.         Log.d("TAG", "removeEmergency " + user.getName());
  105.         preferences.setEmergencyUserId("");
  106.         preferences.setEmergencyUserName("");
  107.         Intent intentEmergency = new Intent(context, NotificationEmergencyService.class);
  108.         stopService(intentEmergency);
  109.         NotificationHelper.cancelNotification(context, NotificationHelper.NOTIFICATION_ID_EMERGENCY);
  110.     }
  111.  
  112.     private void pushSelfEmergency(User user) {
  113.         Log.d("TAG", "pushSelfEmergency " + user.getName());
  114.         Intent intentSelfEmergency = new Intent(context, NotificationSelfEmergencyService.class);
  115.         startService(intentSelfEmergency);
  116.     }
  117.  
  118.     private boolean isLoggedUser(User user) {
  119.         return !TextUtils.isEmpty(loggedUserId) && user.getId().equals(loggedUserId);
  120.     }
  121.  
  122.     private boolean isInEmergency(User user) {
  123.         return user.getStatus().equals(STATUS_EMERGENCY);
  124.     }
  125.  
  126.     private boolean isInContats(User user) {
  127.         ArrayList<Contat> contatsArray = ContatsHelper.getContats(context, user);
  128.         for (Contat contat : contatsArray) {
  129.             if (contat.getId().equals(user.getId())) {
  130.                 return true;
  131.             }
  132.         }
  133.         return false;
  134.     }
  135.  
  136.     private boolean isEmergencyUser(String id, User user) {
  137.         return id.equals(user.getId());
  138.     }
  139.  
  140.     private boolean isUserStatusOK(String userId) {
  141.         String status = UserHelper.getStatus(userId);
  142.         return status.equals(STATUS_OK)
  143.                 || status.equals(STATUS_IDLE)
  144.                 || status.equals(STATUS_SERVICE_DESTROY);
  145.     }
  146.  
  147. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement