Android Open Source - fh-android-sdk Sync Collisions List Activity






From Project

Back to project page fh-android-sdk.

License

The source code is released under:

Copyright (c) 2014 FeedHenry Ltd, All Rights Reserved. Please refer to your contract with FeedHenry for the software license agreement. If you do not have a contract, you do not have a license to use...

If you think the Android project fh-android-sdk 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.feedhenry.fhandroidexampleapp;
/*from  www  .  j  a  v  a  2s  .c  o m*/
import java.util.Iterator;

import org.json.fh.JSONObject;

import com.feedhenry.sdk.FHActCallback;
import com.feedhenry.sdk.FHResponse;
import com.feedhenry.sdk.sync.FHSyncClient;

import android.app.ListActivity;
import android.app.ProgressDialog;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Adapter;
import android.widget.ArrayAdapter;
import android.widget.ListView;

public class SyncCollisionsListActivity extends ListActivity {

  private ProgressDialog mDialog = null;
  private FHSyncClient mSyncClient = FHSyncClient.getInstance();
  private ArrayAdapter adapter = null;
  private SyncCollisionRecord selectedCollison = null;
  
  private static final String TAG = "SyncCollisionsListActivity";
  
  public void onCreate(Bundle savedInstance){
    super.onCreate(savedInstance);
    adapter = new ArrayAdapter<SyncCollisionRecord>(this, R.layout.activity_collision_list);
    getListView().setAdapter(adapter);
    loadCollisions();
  }
  
  private void loadCollisions(){
    final Context that = this;
    mDialog = ProgressDialog.show(this, "Loading", "Please wait...");
    try {
      mSyncClient.listCollisions(FHSyncActivity.DATAID, new FHActCallback() {
        
        @Override
        public void success(FHResponse pResponse) {
          adapter.clear();
          mDialog.dismiss();
          JSONObject collisionList = pResponse.getJson();
          if(collisionList.length() == 0){
            runOnUiThread(new Runnable() {
              @Override
              public void run() {
                FhUtil.showMessage(that, "Message", "No Collisions Found!");
              }
            });
          } else {
            Iterator<String> it = collisionList.keys();
            while(it.hasNext()){
              String key = it.next();
              SyncCollisionRecord record = new SyncCollisionRecord(collisionList.getJSONObject(key));
              adapter.add(record);
            }
          }
        }
        
        @Override
        public void fail(FHResponse pResponse) {
          mDialog.dismiss();
          Log.e(TAG, "listCollision request failed: " +  pResponse.getRawResponse().toString(), pResponse.getError());
          runOnUiThread(new Runnable() {
            @Override
            public void run() {
              FhUtil.showMessage(that, "Error", "Failed to list collisions!");
            }
          });
        }
      });
    } catch (Exception e) {
      mDialog.dismiss();
      Log.e(TAG, e.getMessage(), e);
      FhUtil.showMessage(that, "Error", "Failed to list collisions!");
    }
  }
  
  @Override
  protected void onListItemClick(ListView l, View v, int position, long id) {
    selectedCollison = (SyncCollisionRecord) adapter.getItem(position);
    Bundle b = new Bundle();
    b.putString("uid", selectedCollison.getUid());
    b.putString("hash", selectedCollison.getHash());
    b.putString("pre", selectedCollison.getPreData().getString("name"));
    b.putString("post", selectedCollison.getPostData().getString("name"));
    b.putString("current", selectedCollison.getCurrentData().getString("name"));
    Intent i = new Intent(this, SyncCollisionResolveActivity.class);
    i.putExtra("collision", b);
    startActivityForResult(i, 1);
  }
  
  @Override
  protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    if(resultCode == RESULT_OK){
      if(requestCode == 1){
        String action = data.getStringExtra("com.feedhenry.collision.action");
        if("delete".equalsIgnoreCase(action)){
          final String hash = data.getStringExtra("com.feedhenry.collision.hash");
          deleteCollision(hash);
        } else if("resolved".equalsIgnoreCase(action)){
          final String hash = data.getStringExtra("com.feedhenry.collision.hash");
          String uid = data.getStringExtra("com.feedhenry.collision.uid");
          String resolvedData = data.getStringExtra("com.feedhenry.collision.value");
          JSONObject currentData = selectedCollison.getCurrentData();
          currentData.put("name", resolvedData);
          try {
            mSyncClient.update(FHSyncActivity.DATAID, uid, currentData);
            deleteCollision(hash);
          } catch (Exception e) {
            // TODO Auto-generated catch block
            Log.e(TAG, "failed to update data", e);
          }
          
        }
      }
    }
  }
  
  private void deleteCollision(final String pHash){
    try {
      mSyncClient.removeCollision(FHSyncActivity.DATAID, pHash, new FHActCallback() {
        
        @Override
        public void success(FHResponse pResponse) {
          Log.d(TAG, "collision deleted: " + pHash);
          loadCollisions();
        }
        
        @Override
        public void fail(FHResponse pResponse) {
          // TODO Auto-generated method stub
          Log.e(TAG, "failed to delete collision: " + pResponse.getRawResponse(), pResponse.getError());
        }
      });
    } catch (Exception e) {
      Log.e(TAG, "failed to delete collision: " + pHash, e);
    }
  }
  
  private class SyncCollisionRecord {
    private String hashValue = null;
    private String uid = null;
    private JSONObject postData;
    private JSONObject preData;
    private JSONObject currentData;
    
    public SyncCollisionRecord(JSONObject pCollision){
      uid = pCollision.getString("uid");
      hashValue = pCollision.getString("hash");
      preData = pCollision.getJSONObject("pre");
      postData = pCollision.getJSONObject("post");
      
      FHSyncClient syncCli = FHSyncClient.getInstance();
      JSONObject cd = syncCli.read(FHSyncActivity.DATAID, uid);
      currentData = cd.getJSONObject("data");
    }
    
    public JSONObject getPreData(){
      return preData;
    }
    
    public JSONObject getPostData(){
      return postData;
    }
    
    public String getHash(){
      return hashValue;
    }
    
    public JSONObject getCurrentData(){
      return currentData;
    }
    
    public String getUid(){
      return uid;
    }
    
    public String toString(){
      return preData.getString("name") + " -> " + currentData.getString("name");
    }
  }
}




Java Source Code List

com.feedhenry.fhandroidexampleapp.FHActActivity.java
com.feedhenry.fhandroidexampleapp.FHAndroidExampleActivity.java
com.feedhenry.fhandroidexampleapp.FHAuthActivity.java
com.feedhenry.fhandroidexampleapp.FHLoginActivity.java
com.feedhenry.fhandroidexampleapp.FHSyncActivity.java
com.feedhenry.fhandroidexampleapp.FhUtil.java
com.feedhenry.fhandroidexampleapp.ItemDetailsActivity.java
com.feedhenry.fhandroidexampleapp.SyncCollisionResolveActivity.java
com.feedhenry.fhandroidexampleapp.SyncCollisionsListActivity.java
com.feedhenry.sdk.CloudProps.java
com.feedhenry.sdk.FHActCallback.java
com.feedhenry.sdk.FHAct.java
com.feedhenry.sdk.FHHttpClient.java
com.feedhenry.sdk.FHRemote.java
com.feedhenry.sdk.FHResponse.java
com.feedhenry.sdk.FH.java
com.feedhenry.sdk.api.FHActRequest.java
com.feedhenry.sdk.api.FHAuthRequest.java
com.feedhenry.sdk.api.FHCloudRequest.java
com.feedhenry.sdk.api.FHInitializeRequest.java
com.feedhenry.sdk.exceptions.FHInvalidActionException.java
com.feedhenry.sdk.exceptions.FHNotReadyException.java
com.feedhenry.sdk.oauth.FHOAuthIntent.java
com.feedhenry.sdk.oauth.FHOAuthWebView.java
com.feedhenry.sdk.sync.FHSyncClient.java
com.feedhenry.sdk.sync.FHSyncConfig.java
com.feedhenry.sdk.sync.FHSyncDataRecord.java
com.feedhenry.sdk.sync.FHSyncDataset.java
com.feedhenry.sdk.sync.FHSyncListener.java
com.feedhenry.sdk.sync.FHSyncNotificationHandler.java
com.feedhenry.sdk.sync.FHSyncPendingRecord.java
com.feedhenry.sdk.sync.FHSyncUtils.java
com.feedhenry.sdk.sync.NotificationMessage.java
com.feedhenry.sdk.utils.FHLog.java
com.feedhenry.starter.FHStarterActivity.java
com.loopj.android.http.AsyncHttpClient.java
com.loopj.android.http.AsyncHttpRequest.java
com.loopj.android.http.AsyncHttpResponseHandler.java
com.loopj.android.http.Base64DataException.java
com.loopj.android.http.Base64OutputStream.java
com.loopj.android.http.Base64.java
com.loopj.android.http.BaseJsonHttpResponseHandler.java
com.loopj.android.http.BinaryHttpResponseHandler.java
com.loopj.android.http.DataAsyncHttpResponseHandler.java
com.loopj.android.http.FileAsyncHttpResponseHandler.java
com.loopj.android.http.JsonHttpResponseHandler.java
com.loopj.android.http.JsonStreamerEntity.java
com.loopj.android.http.MyRedirectHandler.java
com.loopj.android.http.MySSLSocketFactory.java
com.loopj.android.http.PersistentCookieStore.java
com.loopj.android.http.PreemtiveAuthorizationHttpRequestInterceptor.java
com.loopj.android.http.RangeFileAsyncHttpResponseHandler.java
com.loopj.android.http.RequestHandle.java
com.loopj.android.http.RequestParams.java
com.loopj.android.http.ResponseHandlerInterface.java
com.loopj.android.http.RetryHandler.java
com.loopj.android.http.SerializableCookie.java
com.loopj.android.http.SimpleMultipartEntity.java
com.loopj.android.http.SyncHttpClient.java
com.loopj.android.http.TextHttpResponseHandler.java
org.json.fh.CDL.java
org.json.fh.CookieList.java
org.json.fh.Cookie.java
org.json.fh.HTTPTokener.java
org.json.fh.HTTP.java
org.json.fh.JSONArray.java
org.json.fh.JSONException.java
org.json.fh.JSONObject.java
org.json.fh.JSONString.java
org.json.fh.JSONStringer.java
org.json.fh.JSONTokener.java
org.json.fh.JSONWriter.java
org.json.fh.XMLTokener.java
org.json.fh.XML.java