Android Open Source - SurveySDK_android Geo Push






From Project

Back to project page SurveySDK_android.

License

The source code is released under:

Apache License

If you think the Android project SurveySDK_android listed in this page is inappropriate, such as containing malicious code/tools or violating the copyright, please email info at java2s dot com, thanks.

Java Source Code

package com.survey.android.util;
/*from w w  w . j ava 2  s  . co m*/
import java.io.IOException;
import java.util.Collections;
import java.util.Map;
import java.util.HashMap;

import android.content.Context;

import com.survey.android.session.Configuration;
import com.survey.android.util.ConstantData;
import com.survey.android.util.Log;
import com.survey.android.util.GeoPush;
import com.survey.android.webclient.RestClient;

import org.json.JSONException;

public class GeoPush {
  private static final String TAG = "GeoPush";
  private static Map<String, GeoPush> synchronizedPushes = Collections.synchronizedMap(new HashMap<String, GeoPush>());   
  private static long synchronizedPushesRefreshedAt;
  public static final long REFRESH_INTERVAL = 1000 * 60 * 120; // 2 HOURS
  
  private String token;
  private String geo_trigger_id;
  private long pushtimemillis;
  
  public String getToken() {
    return this.token;
  }  
  
  public String getGeoTriggerId() {
    return this.geo_trigger_id;
  }  
  
  public long getPushTimeMillis() {
    return this.pushtimemillis;
  }  
  
  public GeoPush(String token, String geo_trigger_id, long pushtimemillis)  {
    this.token = token;
    this.geo_trigger_id = geo_trigger_id;
    this.pushtimemillis = pushtimemillis;
  }
  
  public static void SendPush(String token, String geo_trigger_id,Context context) {
    //com.survey.android.session.Configuration 
       //configuration = new com.survey.android.session.Configuration(context);
    
    if(Configuration.isGeoPushEnabled()){
      GeoPush p = null;
      boolean push = false;
      Log.d(TAG, "(usertoken, geo_trigger_id) : " + "(" + token + "," + geo_trigger_id + ")");  
      Log.d(TAG, "synchronizedPushes: " + synchronizedPushes);    
      
      try {
        // check if list/hashmap of GeoPush exists 
        if (synchronizedPushes == null) {
          // create new list/hashmap of GeoPush objects
          synchronized (synchronizedPushes) {
            synchronizedPushes = Collections.synchronizedMap(new HashMap<String, GeoPush>());
            synchronizedPushesRefreshedAt = System.currentTimeMillis();
          }
        }

        synchronized (synchronizedPushes) {
          // check last refresh time and create new collection if over the configured amount of time
          if (System.currentTimeMillis() - synchronizedPushesRefreshedAt > REFRESH_INTERVAL) {
            // create new list/hashmap of GeoPush objects
            synchronizedPushes = Collections.synchronizedMap(new HashMap<String, GeoPush>());
            synchronizedPushesRefreshedAt = System.currentTimeMillis();
          }
        
          // check if current geo_trigger_id is already present in the hashmap
          if (synchronizedPushes.containsKey(geo_trigger_id)) {
            p = (GeoPush)synchronizedPushes.get(geo_trigger_id);
            long currenttimemillis = System.currentTimeMillis();
            // check if this geotrigger has been pushed within the configured interval, 
            // then do nothing
            if (currenttimemillis - p.getPushTimeMillis() < ConstantData.PUSH_CHECK_INTERVAL) {
              Log.d(TAG, "GeoTrigger Push already Called in last 30 min, Do Nothing");  
              return;
            }
            else
              push = true;
          }
          else {
            // add new GeoPush object to hashmap
            synchronized (synchronizedPushes) {          
              p = new GeoPush(token, geo_trigger_id, System.currentTimeMillis());
              synchronizedPushes.put(geo_trigger_id, p);
              push = true;
            }
          }
        }
        
        // check if geopush needs to be called
        if (push) {
          Log.d(TAG, "Calling GeoTrigger Push");
          RestClient.getGeoPush(token, geo_trigger_id);
        }
      } catch (JSONException e) {
        e.printStackTrace();
      } catch (IOException e) {
        e.printStackTrace();
      }
    }
  }
}




Java Source Code List

android.UnusedStub.java
com.google.android.gms.BuildConfig.java
com.google.android.gms.BuildConfig.java
com.survey.android.UnusedStub.java
com.survey.android.c2dm.C2DMRegistrationReceiver.java
com.survey.android.c2dm.C2DMTokenRefresher.java
com.survey.android.c2dm.GcmBroadcastReceiver.java
com.survey.android.c2dm.GcmNotificationReceiver.java
com.survey.android.c2dm.GcmRegistrationService.java
com.survey.android.c2dm.RegService.java
com.survey.android.common.PlacesAutoCompleteAdapter.java
com.survey.android.common.Themes.java
com.survey.android.containers.AppContainer.java
com.survey.android.containers.PollContainer.java
com.survey.android.custom_widgets.FontTextView.java
com.survey.android.custom_widgets.PollRatingsScaleLabeled.java
com.survey.android.custom_widgets.PollRatings.java
com.survey.android.custom_widgets.PollSelectionTable.java
com.survey.android.db.SerializationHelper.java
com.survey.android.db.SerializationManager.java
com.survey.android.fragment.AudioRecorderFragment.java
com.survey.android.geofence.GeofenceRemover.java
com.survey.android.geofence.GeofenceRequester.java
com.survey.android.geofence.GeofenceUtils.java
com.survey.android.geofence.LocationServiceErrorMessages.java
com.survey.android.geofence.ReceiveTransitionsIntentService.java
com.survey.android.geofence.SimpleGeofenceStore.java
com.survey.android.geofence.SimpleGeofence.java
com.survey.android.model.AnswerModel.java
com.survey.android.model.CategoryModel.java
com.survey.android.model.CurrentSectionModel.java
com.survey.android.model.Prefs.java
com.survey.android.model.QuestionModel.java
com.survey.android.model.ResponseModel.java
com.survey.android.model.SurveyModel.java
com.survey.android.model.UserModel.java
com.survey.android.services.BackgroundUploader.java
com.survey.android.services.DataBroadcastReceiver.java
com.survey.android.services.DeviceStartUpReceiver.java
com.survey.android.services.GeoSurveyPollService.java
com.survey.android.services.LocationTesterService.java
com.survey.android.services.ReferrerCatcher.java
com.survey.android.session.Configuration.java
com.survey.android.session.Session.java
com.survey.android.util.Base64.java
com.survey.android.util.ConstantData.java
com.survey.android.util.GeoPush.java
com.survey.android.util.GeoTriggerBroadcastReceiver.java
com.survey.android.util.GeoTrigger.java
com.survey.android.util.LocationLog.java
com.survey.android.util.Log.java
com.survey.android.util.StrToIntMap.java
com.survey.android.util.StrToStrMap.java
com.survey.android.util.Toiler.java
com.survey.android.util.WhiteLabel.java
com.survey.android.view.Dashboard.java
com.survey.android.view.Gallery.java
com.survey.android.view.LocalizedFragmentActivity.java
com.survey.android.view.Main.java
com.survey.android.view.Notification.java
com.survey.android.view.Question.java
com.survey.android.view.Survey.java
com.survey.android.view.ThemeCustomizer.java
com.survey.android.view.themed.DashboardThemed.java
com.survey.android.view.themed.MainThemed.java
com.survey.android.view.themed.NotificationThemed.java
com.survey.android.view.themed.QuestionThemed.java
com.survey.android.view.themed.SurveyThemed.java
com.survey.android.webclient.HttpRequest.java
com.survey.android.webclient.HttpsClient.java
com.survey.android.webclient.RestClient.java
com.survey.android.webclient.SurveyHttpClient.java
com.survey.android.webclient.SurveyRequest.java
com.survey.android.webclient.SurveySSLSocketFactory.java
com.survey.android.webclient.SurveyX509TrustManager.java
com.survey.android.widget.Widget.java
com.survey.androiddemo.AppContainer.java
com.survey.androiddemo.LoginActivity.java
com.survey.androiddemo.MainActivity.java
com.survey.androiddemo.SDKConfigSettings.java