Android Open Source - digital-ocean-swimmer Region Service






From Project

Back to project page digital-ocean-swimmer.

License

The source code is released under:

MIT License

If you think the Android project digital-ocean-swimmer 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.yassirh.digitalocean.service;
//  ww w .  j  a  v  a2 s .c o  m
import java.util.ArrayList;
import java.util.List;

import org.apache.http.Header;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;

import android.app.NotificationManager;
import android.app.PendingIntent;
import android.content.Context;
import android.content.Intent;
import android.content.SharedPreferences;
import android.support.v4.app.NotificationCompat;

import com.loopj.android.http.AsyncHttpClient;
import com.loopj.android.http.AsyncHttpResponseHandler;
import com.yassirh.digitalocean.R;
import com.yassirh.digitalocean.data.DatabaseHelper;
import com.yassirh.digitalocean.data.RegionDao;
import com.yassirh.digitalocean.model.Account;
import com.yassirh.digitalocean.model.Region;
import com.yassirh.digitalocean.utils.ApiHelper;

public class RegionService {

  private Context context;
  private boolean isRefreshing;
    
  public RegionService(Context context) {
    this.context = context;
  }

  public void getAllRegionsFromAPI(final boolean showProgress){
    Account currentAccount = ApiHelper.getCurrentAccount(context);
    if(currentAccount == null){
      return;
    }
    isRefreshing = true;
    String url = String.format("%s/regions/", ApiHelper.API_URL);//String url = "https://api.digitalocean.com/regions/?client_id=" + currentAccount.getClientId() + "&api_key=" + currentAccount.getApiKey(); 
    AsyncHttpClient client = new AsyncHttpClient();
    client.addHeader("Authorization", String.format("Bearer %s", currentAccount.getToken()));
    client.get(url, new AsyncHttpResponseHandler() {
      NotificationManager mNotifyManager;
      NotificationCompat.Builder mBuilder;
      
      @Override
      public void onStart() {
        if(showProgress){
          mNotifyManager =
                  (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE);
          mBuilder = new NotificationCompat.Builder(context);
          mBuilder.setContentTitle(context.getResources().getString(R.string.synchronising))
              .setContentText(context.getResources().getString(R.string.synchronising_regions))
              .setSmallIcon(R.drawable.ic_launcher);
          mBuilder.setContentIntent(PendingIntent.getActivity(context,0,new Intent(),PendingIntent.FLAG_UPDATE_CURRENT));
          mNotifyManager.notify(NotificationsIndexes.NOTIFICATION_GET_ALL_REGIONS, mBuilder.build());
        }
      }
      
      @Override
      public void onFinish() {
        isRefreshing = false;
        if(showProgress){
          mNotifyManager.cancel(NotificationsIndexes.NOTIFICATION_GET_ALL_REGIONS);
        }
      }
      
      @Override
      public void onFailure(int statusCode, Header[] headers, byte[] responseBody, Throwable error) {
        if(statusCode == 401){
          ApiHelper.showAccessDenied();
        }
      }
      
      @Override
      public void onProgress(int bytesWritten, int totalSize) {
        if(showProgress){
          mBuilder.setProgress(100, 100*bytesWritten/totalSize, false);
          mNotifyManager.notify(NotificationsIndexes.NOTIFICATION_GET_ALL_REGIONS, mBuilder.build());
        }
      }

            @Override
            public void onSuccess(int statusCode, Header[] headers, byte[] responseBody) {
                try {
                    JSONObject jsonObject = new JSONObject(new String(responseBody));
                    List<Region> regions = new ArrayList<Region>();
                    JSONArray regionJSONArray = jsonObject.getJSONArray("regions");
                    for(int i = 0; i < regionJSONArray.length(); i++){
                        JSONObject regionJSONObject = regionJSONArray.getJSONObject(i);
                        Region region = jsonObjectToRegion(regionJSONObject);
                        regions.add(region);
                    }
                    RegionService.this.deleteAll();
                    RegionService.this.saveAll(regions);
                    RegionService.this.setRequiresRefresh(true);
                } catch (JSONException e) {
                    e.printStackTrace();
                }
            }
        });
  }

  public static Region jsonObjectToRegion(JSONObject regionJSONObject)
      throws JSONException {
    Region region = new Region();
    region.setName(regionJSONObject.getString("name"));
    region.setSlug(regionJSONObject.getString("slug"));
        try {
            region.setAvailable(regionJSONObject.getBoolean("available"));
        }catch (JSONException ignored){
        }
    String features = "";
    for (int i = 0; i < regionJSONObject.getJSONArray("features").length(); i++) {
      features += ";" + regionJSONObject.getJSONArray("features").getString(i);
    }
    region.setFeatures(features.replaceFirst(";", ""));
    return region;
  }
  
  public void deleteAll() {
    RegionDao regionDao = new RegionDao(DatabaseHelper.getInstance(context));
    regionDao.deleteAll();
  }

  protected void saveAll(List<Region> regions) {
    RegionDao regionDao = new RegionDao(DatabaseHelper.getInstance(context));
    for (Region region : regions) {
      regionDao.create(region);
    }
  }
  
  public List<Region> getAllRegions(){
    RegionDao regionDao = new RegionDao(DatabaseHelper.getInstance(context));
        return regionDao.getAll(null);
  }

  public List<Region> getAllRegionsOrderedByName(){
    RegionDao regionDao = new RegionDao(DatabaseHelper.getInstance(context));
        return regionDao.getAllOrderedByName();
  }
  
  public void setRequiresRefresh(Boolean requireRefresh){
    SharedPreferences settings = context.getSharedPreferences("prefrences", 0);
    SharedPreferences.Editor editor = settings.edit();
    editor.putBoolean("region_require_refresh", requireRefresh);
    editor.commit();
  }
  
  public Boolean requiresRefresh(){
    SharedPreferences settings = context.getSharedPreferences("prefrences", 0);
    return settings.getBoolean("region_require_refresh", true);
  }

  public boolean isRefreshing() {
    return isRefreshing;
  }
}




Java Source Code List

android.support.v4.preference.PreferenceFragment.java
android.support.v4.preference.PreferenceManagerCompat.java
com.yassirh.digitalocean.data.AccountDao.java
com.yassirh.digitalocean.data.AccountTable.java
com.yassirh.digitalocean.data.DatabaseHelper.java
com.yassirh.digitalocean.data.DomainDao.java
com.yassirh.digitalocean.data.DomainTable.java
com.yassirh.digitalocean.data.DropletDao.java
com.yassirh.digitalocean.data.DropletTable.java
com.yassirh.digitalocean.data.ImageDao.java
com.yassirh.digitalocean.data.ImageTable.java
com.yassirh.digitalocean.data.NetworkDao.java
com.yassirh.digitalocean.data.NetworkTable.java
com.yassirh.digitalocean.data.RecordDao.java
com.yassirh.digitalocean.data.RecordTable.java
com.yassirh.digitalocean.data.RegionDao.java
com.yassirh.digitalocean.data.RegionTable.java
com.yassirh.digitalocean.data.SSHKeyDao.java
com.yassirh.digitalocean.data.SSHKeyTable.java
com.yassirh.digitalocean.data.SizeDao.java
com.yassirh.digitalocean.data.SizeTable.java
com.yassirh.digitalocean.data.SqlDao.java
com.yassirh.digitalocean.data.TableHelper.java
com.yassirh.digitalocean.model.Account.java
com.yassirh.digitalocean.model.Action.java
com.yassirh.digitalocean.model.Domain.java
com.yassirh.digitalocean.model.Droplet.java
com.yassirh.digitalocean.model.Image.java
com.yassirh.digitalocean.model.Network.java
com.yassirh.digitalocean.model.Record.java
com.yassirh.digitalocean.model.Region.java
com.yassirh.digitalocean.model.SSHKey.java
com.yassirh.digitalocean.model.Size.java
com.yassirh.digitalocean.service.AccountService.java
com.yassirh.digitalocean.service.ActionService.java
com.yassirh.digitalocean.service.DomainService.java
com.yassirh.digitalocean.service.DropletService.java
com.yassirh.digitalocean.service.ImageService.java
com.yassirh.digitalocean.service.NotificationsIndexes.java
com.yassirh.digitalocean.service.RecordService.java
com.yassirh.digitalocean.service.RegionService.java
com.yassirh.digitalocean.service.SSHKeyService.java
com.yassirh.digitalocean.service.SizeService.java
com.yassirh.digitalocean.ui.AccountAdapter.java
com.yassirh.digitalocean.ui.AddAccountActivity.java
com.yassirh.digitalocean.ui.DomainAdapter.java
com.yassirh.digitalocean.ui.DomainDetailsDialogFragment.java
com.yassirh.digitalocean.ui.DomainsFragment.java
com.yassirh.digitalocean.ui.DrawerPositions.java
com.yassirh.digitalocean.ui.DropletAdapter.java
com.yassirh.digitalocean.ui.DropletDetailsDialogFragment.java
com.yassirh.digitalocean.ui.DropletResizeDialogFragment.java
com.yassirh.digitalocean.ui.DropletsFragment.java
com.yassirh.digitalocean.ui.ImageAdapter.java
com.yassirh.digitalocean.ui.ImagesFragment.java
com.yassirh.digitalocean.ui.MainActivity.java
com.yassirh.digitalocean.ui.NavigationDrawerAdapter.java
com.yassirh.digitalocean.ui.NewDropletActivity.java
com.yassirh.digitalocean.ui.PrefsFragment.java
com.yassirh.digitalocean.ui.RecordAdapter.java
com.yassirh.digitalocean.ui.RecordCreateDialogFragment.java
com.yassirh.digitalocean.ui.RecordTypeAdapter.java
com.yassirh.digitalocean.ui.RegionAdapter.java
com.yassirh.digitalocean.ui.RegionsFragment.java
com.yassirh.digitalocean.ui.SSHKeyAdapter.java
com.yassirh.digitalocean.ui.SSHKeyCreateDialogFragment.java
com.yassirh.digitalocean.ui.SSHKeyFragment.java
com.yassirh.digitalocean.ui.SettingsActivity.java
com.yassirh.digitalocean.ui.SizeAdapter.java
com.yassirh.digitalocean.ui.SizesFragment.java
com.yassirh.digitalocean.ui.SwitchAccountDialogFragment.java
com.yassirh.digitalocean.ui.Updatable.java
com.yassirh.digitalocean.ui.widget.MultiSelectSpinner.java
com.yassirh.digitalocean.utils.ApiHelper.java
com.yassirh.digitalocean.utils.AppRater.java
com.yassirh.digitalocean.utils.MyApplication.java
com.yassirh.digitalocean.utils.MyBroadcastReceiver.java
com.yassirh.digitalocean.utils.PreferencesHelper.java