Android Open Source - digital-ocean-swimmer Record 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;
//from  w w  w .j  a  v  a  2s  .  c o  m
import android.app.NotificationManager;
import android.app.PendingIntent;
import android.content.Context;
import android.content.Intent;
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.RecordDao;
import com.yassirh.digitalocean.model.Account;
import com.yassirh.digitalocean.model.Domain;
import com.yassirh.digitalocean.model.Record;
import com.yassirh.digitalocean.utils.ApiHelper;

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

import java.io.UnsupportedEncodingException;
import java.util.HashMap;
import java.util.List;
import java.util.Locale;

public class RecordService {

  private Context context;
      
  public RecordService(Context context) {
    this.context = context;
  }  
  
  public void deleteAll() {
    RecordDao recordDao = new RecordDao(DatabaseHelper.getInstance(context));
    recordDao.deleteAll();
  }

  private Record jsonObjectToRecord(JSONObject recordJSONObject) throws JSONException {
    Domain domain = new Domain();
    Integer priority = null;
      Integer port = null;
      Integer weight = null;
      if(!recordJSONObject.getString("priority").equals("null")){
        priority = Integer.parseInt(recordJSONObject.getString("priority"));
      }
    if(!recordJSONObject.getString("port").equals("null")){
      port = Integer.parseInt(recordJSONObject.getString("port"));      
      }
    if(!recordJSONObject.getString("weight").equals("null")){
      weight = Integer.parseInt(recordJSONObject.getString("weight"));
    }
      Record record = new Record();
    record.setId(recordJSONObject.getLong("id"));
    record.setName(recordJSONObject.getString("name"));
    record.setData(recordJSONObject.getString("data"));
    record.setRecordType(recordJSONObject.getString("type"));
    record.setPriority(priority);
    record.setPort(port);
    record.setWeight(weight);
    record.setDomain(domain);
    
    return record;
  }

  protected void saveAll(List<Record> records) {
    RecordDao recordDao = new RecordDao(DatabaseHelper.getInstance(context));
    for (Record record : records) {
      recordDao.createOrUpdate(record);
    }
  }
  
  public List<Record> getAllRecords(){
    RecordDao recordDao = new RecordDao(DatabaseHelper.getInstance(context));
        return recordDao.getAll(null);
  }

  public Record findById(long id) {
    RecordDao recordDao = new RecordDao(DatabaseHelper.getInstance(context));
        return recordDao.findById(id);
  }


  public void getRecordsByDomainFromAPI(final String domainName) {
    Account currentAccount = ApiHelper.getCurrentAccount(context);
    final Domain domain = new Domain();
    domain.setName(domainName);
    if(currentAccount == null){
      return;
    } 
    String url = String.format("%s/domains/%s/records", ApiHelper.API_URL, domainName);
    AsyncHttpClient client = new AsyncHttpClient();
    client.addHeader("Authorization", String.format("Bearer %s", currentAccount.getToken()));
    client.get(url, new AsyncHttpResponseHandler() {
            
      @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) {
      }

            @Override
            public void onSuccess(int statusCode, Header[] headers, byte[] responseBody) {
                try {
                    JSONObject jsonObject = new JSONObject(new String(responseBody));
                    RecordService.this.deleteAllRecordsByDomain(domainName);
                    JSONArray recordsJSONArray = jsonObject.getJSONArray("domain_records");
                    for(int i = 0; i < recordsJSONArray.length(); i++){
                        JSONObject recordJSONObject = recordsJSONArray.getJSONObject(i);
                        Record record = jsonObjectToRecord(recordJSONObject);
                        record.setDomain(domain);
                        RecordService.this.update(record);
                    }
                } catch (JSONException e) {
                    e.printStackTrace();
                }
            }
        });
  }

  protected void deleteAllRecordsByDomain(String domainName) {
    RecordDao recordDao = new RecordDao(DatabaseHelper.getInstance(context));
    recordDao.deleteAllRecordsByDomain(domainName);
  }

  protected void update(Record record) {
    RecordDao recordDao = new RecordDao(DatabaseHelper.getInstance(context));
    recordDao.createOrUpdate(record);
  }

  public void createRecord(final String domainName, HashMap<String,String> params, final boolean showProgress) {
    Account currentAccount = ApiHelper.getCurrentAccount(context);
    if(currentAccount == null){
      return;
    }
    String url = String.format(Locale.US, "%s/domains/%s/records", ApiHelper.API_URL, domainName);
    AsyncHttpClient client = new AsyncHttpClient();
    client.addHeader("Authorization", String.format("Bearer %s", currentAccount.getToken()));
    ByteArrayEntity entity;
    JSONObject jsonObject = new JSONObject(params);
    try {
      entity = new ByteArrayEntity(jsonObject.toString().getBytes("UTF-8"));
      client.post(context, url, entity, "application/json", new AsyncHttpResponseHandler() {
        NotificationManager notifyManager;
        NotificationCompat.Builder builder;
        
        @Override
        public void onStart() {
          if(showProgress){
            notifyManager =
                    (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE);
            builder = new NotificationCompat.Builder(context);
            builder.setContentTitle(context.getResources().getString(R.string.creating_record))
                .setContentText("")
                .setSmallIcon(R.drawable.ic_launcher);
            builder.setContentIntent(PendingIntent.getActivity(context,0,new Intent(),PendingIntent.FLAG_UPDATE_CURRENT));
            notifyManager.notify(NotificationsIndexes.NOTIFICATION_CREATE_DOMAIN_RECORD, builder.build());
          }
        }

                @Override
                public void onSuccess(int statusCode, Header[] headers, byte[] responseBody) {
                    RecordService.this.getRecordsByDomainFromAPI(domainName);
                }

                @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){
            builder.setProgress(100, 100*bytesWritten/totalSize, false);
            notifyManager.notify(NotificationsIndexes.NOTIFICATION_CREATE_DOMAIN_RECORD, builder.build());
          }
        }
          
          @Override
          public void onFinish() {
            if(showProgress)
            notifyManager.cancel(NotificationsIndexes.NOTIFICATION_CREATE_DOMAIN_RECORD);
          }
      });
    } catch (UnsupportedEncodingException e1) {
      e1.printStackTrace();
    }
    
  }

  public void updateRecord(final String domainName, HashMap<String,String> params, long recordId, final boolean showProgress) {
    Account currentAccount = ApiHelper.getCurrentAccount(context);
    if(currentAccount == null){
      return;
    }
    String url = String.format(Locale.US, "%s/domains/%s/records/%d", ApiHelper.API_URL, domainName, recordId);
    AsyncHttpClient client = new AsyncHttpClient();
    client.addHeader("Authorization", String.format("Bearer %s", currentAccount.getToken()));
    ByteArrayEntity entity;
    JSONObject jsonObject = new JSONObject(params);
    try {
      entity = new ByteArrayEntity(jsonObject.toString().getBytes("UTF-8"));
      client.put(context, url, entity, "application/json", new AsyncHttpResponseHandler() {
        NotificationManager notifyManager;
        NotificationCompat.Builder builder;
        
        @Override
        public void onStart() {
          if(showProgress){
            notifyManager =
                    (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE);
            builder = new NotificationCompat.Builder(context);
            builder.setContentTitle(context.getResources().getString(R.string.creating_record))
                .setContentText("")
                .setSmallIcon(R.drawable.ic_launcher);
            builder.setContentIntent(PendingIntent.getActivity(context,0,new Intent(),PendingIntent.FLAG_UPDATE_CURRENT));
            notifyManager.notify(NotificationsIndexes.NOTIFICATION_CREATE_DOMAIN_RECORD, builder.build());
          }
        }

                @Override
                public void onSuccess(int statusCode, Header[] headers, byte[] responseBody) {
                    RecordService.this.getRecordsByDomainFromAPI(domainName);
                }

                @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){
            builder.setProgress(100, 100*bytesWritten/totalSize, false);
            notifyManager.notify(NotificationsIndexes.NOTIFICATION_CREATE_DOMAIN_RECORD, builder.build());
          }
        }
          
          @Override
          public void onFinish() {
            if(showProgress)
            notifyManager.cancel(NotificationsIndexes.NOTIFICATION_CREATE_DOMAIN_RECORD);
          }
      });
    } catch (UnsupportedEncodingException e1) {
      e1.printStackTrace();
    }
    
  }
  
  public void deleteDomainRecord(final String domainName, final long recordId, final boolean showProgress) {
    Account currentAccount = ApiHelper.getCurrentAccount(context);
    if(currentAccount == null){
      return;
    }
    String url = String.format(Locale.US, "%s/domains/%s/records/%d", ApiHelper.API_URL, domainName, recordId);
    AsyncHttpClient client = new AsyncHttpClient();
    client.addHeader("Authorization", String.format("Bearer %s", currentAccount.getToken()));
    client.delete(url, new AsyncHttpResponseHandler() {
      NotificationManager notifyManager;
      NotificationCompat.Builder builder;
      
      @Override
      public void onStart() {
        if(showProgress){
          notifyManager =
                  (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE);
          builder = new NotificationCompat.Builder(context);
          builder.setContentTitle(context.getResources().getString(R.string.destroying_record))
              .setContentText("")
              .setSmallIcon(R.drawable.ic_launcher);

          notifyManager.notify(NotificationsIndexes.NOTIFICATION_DESTROY_RECORD, builder.build());
        }
      }

            @Override
            public void onSuccess(int statusCode, Header[] headers, byte[] responseBody) {

            }

            @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){
          builder.setProgress(100, 100*bytesWritten/totalSize, false);
          notifyManager.notify(NotificationsIndexes.NOTIFICATION_DESTROY_RECORD, builder.build());
        }
      }
        
        @Override
        public void onFinish() {
          if(showProgress)
          notifyManager.cancel(NotificationsIndexes.NOTIFICATION_DESTROY_RECORD);
          RecordDao recordDao = new RecordDao(DatabaseHelper.getInstance(context));
          recordDao.delete(recordId);
        }
    });
  }
}




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