Advertisement
Guest User

Untitled

a guest
Oct 10th, 2015
112
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 6.63 KB | None | 0 0
  1.     public void syncWithFirebase(){
  2.         SQLiteDatabase  db = mInstance.getMyWritableDatabase();
  3.         String query = "SELECT * FROM "+mInstance.TABLE_MOVIES+" ;";
  4.         final Cursor c = db.rawQuery(query,null);
  5.         movieRef = new Firebase("https://social-movie-club.firebaseio.com/movies");
  6.  
  7.         if(c != null && c.getCount() > 0) {
  8.             while (c.moveToNext()) {
  9.  
  10.                 /*TODO
  11.                 * Check for each movie child in the cloud that a sqlite entry exists.
  12.                 * if not pull it down. then check if any new objects are in the sqlite database that
  13.                 * need to go to the cloud.
  14.                 *
  15.                 * */
  16.                 movieKey = null;
  17.                 movieRef.child(c.getString(c.getColumnIndex(DatabaseSingleton.COLUMN_MOVIE_ID))).addListenerForSingleValueEvent(new ValueEventListener() {
  18.                     @Override
  19.                     public void onDataChange(DataSnapshot dataSnapshot) {
  20.                         if (dataSnapshot.exists()) {
  21.                             movieKey = dataSnapshot.getKey();
  22.                         }
  23.                     }
  24.  
  25.                     @Override
  26.                     public void onCancelled(FirebaseError firebaseError) {
  27.  
  28.                     }
  29.                 });
  30.  
  31.                 if(movieKey != null){
  32.  
  33.                     movieRef.child(movieKey).child("lastUpdated").addListenerForSingleValueEvent(new ValueEventListener() {
  34.                         @Override
  35.                         public void onDataChange(DataSnapshot dataSnapshot) {
  36.                             lastUpdatedFirebase = Long.parseLong(dataSnapshot.getValue().toString());
  37.                             Log.e("FireBase Return", lastUpdatedFirebase.toString());
  38.                         }
  39.                         @Override
  40.                         public void onCancelled(FirebaseError firebaseError) {
  41.  
  42.                         }
  43.                     });
  44.                     lastUpdatedsqlite = Long.parseLong(c.getString(c.getColumnIndex(DatabaseSingleton.COLUMN_MOVIE_LAST_UPDATED)));
  45.  
  46.                     if(lastUpdatedsqlite > lastUpdatedFirebase){
  47.                         Map<String, Object> updates = new HashMap<String, Object>();
  48.                         updates.put(DatabaseSingleton.COLUMN_TITLE, c.getString(c.getColumnIndex(DatabaseSingleton.COLUMN_TITLE)));
  49.                         updates.put(DatabaseSingleton.COLUMN_YEAR, c.getString(c.getColumnIndex(DatabaseSingleton.COLUMN_YEAR)));
  50.                         updates.put(DatabaseSingleton.COLUMN_SHORTPLOT, c.getString(c.getColumnIndex(DatabaseSingleton.COLUMN_SHORTPLOT)));
  51.                         updates.put(DatabaseSingleton.COLUMN_FULLPLOT, c.getString(c.getColumnIndex(DatabaseSingleton.COLUMN_FULLPLOT)));
  52.                         updates.put(DatabaseSingleton.COLUMN_POSTER, c.getString(c.getColumnIndex(DatabaseSingleton.COLUMN_POSTER)));
  53.                         updates.put(DatabaseSingleton.COLUMN_MOVIE_ID, c.getString(c.getColumnIndex(DatabaseSingleton.COLUMN_MOVIE_ID)));
  54.                         updates.put(DatabaseSingleton.COLUMN_RATING, c.getString(c.getColumnIndex(DatabaseSingleton.COLUMN_RATING)));
  55.                         updates.put(DatabaseSingleton.COLUMN_MOVIE_LAST_UPDATED, System.currentTimeMillis());
  56.                         movieRef.child(movieKey).updateChildren(updates);
  57.  
  58.  
  59.                     }else if(lastUpdatedFirebase > lastUpdatedsqlite){
  60.                         Firebase movie = movieRef.child(movieKey);
  61.                         MovieObject m = new MovieObject(movie.child(DatabaseSingleton.COLUMN_TITLE).toString(),
  62.                         movie.child(DatabaseSingleton.COLUMN_YEAR).toString(),
  63.                         movie.child(DatabaseSingleton.COLUMN_SHORTPLOT).toString(),
  64.                         movie.child(DatabaseSingleton.COLUMN_FULLPLOT).toString(),
  65.                         movie.child(DatabaseSingleton.COLUMN_POSTER).toString(),
  66.                         movie.child(DatabaseSingleton.COLUMN_MOVIE_ID).toString(),
  67.                         Float.parseFloat(movie.child(DatabaseSingleton.COLUMN_RATING).toString()));
  68.                         updateMovie(m);
  69.                     }
  70.  
  71.                 }else {
  72.                     MovieObject m = new MovieObject(
  73.                             c.getString(c.getColumnIndex(DatabaseSingleton.COLUMN_TITLE)),
  74.                             c.getString(c.getColumnIndex(DatabaseSingleton.COLUMN_YEAR)),
  75.                             c.getString(c.getColumnIndex(DatabaseSingleton.COLUMN_SHORTPLOT)),
  76.                             c.getString(c.getColumnIndex(DatabaseSingleton.COLUMN_FULLPLOT)),
  77.                             c.getString(c.getColumnIndex(DatabaseSingleton.COLUMN_POSTER)),
  78.                             c.getString(c.getColumnIndex(DatabaseSingleton.COLUMN_MOVIE_ID)),
  79.                             c.getFloat(c.getColumnIndex(DatabaseSingleton.COLUMN_RATING)));
  80.                     movieRef.child(c.getString(c.getColumnIndex(DatabaseSingleton.COLUMN_MOVIE_ID))).setValue(m);
  81.                     movieRef.child(c.getString(c.getColumnIndex(DatabaseSingleton.COLUMN_MOVIE_ID))).child("lastUpdated").setValue(System.currentTimeMillis());
  82.                 }
  83.             }
  84.             db.close();
  85.             c.close();
  86.  
  87.             movieRef.addListenerForSingleValueEvent(new ValueEventListener() {
  88.                 @Override
  89.                 public void onDataChange(DataSnapshot dataSnapshot) {
  90.                     for (DataSnapshot childSnapshot : dataSnapshot.getChildren()) {
  91.                         if(searchForMovie(childSnapshot.getKey()) == 0){
  92.                             MovieObject m = new MovieObject(childSnapshot.child(DatabaseSingleton.COLUMN_TITLE).getValue().toString(),
  93.                                     childSnapshot.child(DatabaseSingleton.COLUMN_YEAR).getValue().toString(),
  94.                                     childSnapshot.child(DatabaseSingleton.COLUMN_SHORTPLOT).getValue().toString(),
  95.                                     childSnapshot.child(DatabaseSingleton.COLUMN_FULLPLOT).getValue().toString(),
  96.                                     childSnapshot.child(DatabaseSingleton.COLUMN_POSTER).getValue().toString(),
  97.                                     childSnapshot.child(DatabaseSingleton.COLUMN_MOVIE_ID).getValue().toString(),
  98.                                     Float.parseFloat(childSnapshot.child(DatabaseSingleton.COLUMN_RATING).getValue().toString()));
  99.                             addMovietoDb(m);
  100.                         }
  101.                     }
  102.                 }
  103.  
  104.                 @Override
  105.                 public void onCancelled(FirebaseError firebaseError) {
  106.  
  107.                 }
  108.             });
  109.         }
  110.  
  111.  
  112.  
  113.     }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement