io.reactivex.functions.Cancellable#com.google.firebase.database.Query源码实例Demo

下面列出了io.reactivex.functions.Cancellable#com.google.firebase.database.Query 实例代码,或者点击链接到github查看源代码,也可以在右侧发表评论。

源代码1 项目: geofire-android   文件: GeoQuery.java
private void addValueToReadyListener(final Query firebase, final GeoHashQuery query) {
    firebase.addListenerForSingleValueEvent(new ValueEventListener() {
        @Override
        public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
            synchronized (GeoQuery.this) {
                GeoQuery.this.outstandingQueries.remove(query);
                GeoQuery.this.checkAndFireReady();
            }
        }

        @Override
        public void onCancelled(@NonNull final DatabaseError databaseError) {
            synchronized (GeoQuery.this) {
                for (final GeoQueryDataEventListener listener : GeoQuery.this.eventListeners) {
                    GeoQuery.this.geoFire.raiseEvent(new Runnable() {
                        @Override
                        public void run() {
                            listener.onGeoQueryError(databaseError);
                        }
                    });
                }
            }
        }
    });
}
 
源代码2 项目: firebase-android-sdk   文件: KeepSyncedTest.java
private void assertIsKeptSynced(Query query) throws Exception {
  DatabaseReference ref = query.getRef();

  // First set a unique value to the value of a child.
  long counter = globalKeepSyncedTestCounter++;
  final Map<String, Object> value = new MapBuilder().put("child", counter).build();
  new WriteFuture(ref, value).timedGet();

  // Next go offline, if it's kept synced we should have kept the value, after going offline no
  // way to get the value except from cache
  ref.getDatabase().goOffline();

  new ReadFuture(
          query,
          (List<EventRecord> events) -> {
            assertEquals(1, events.size());
            assertEquals(value, events.get(0).getSnapshot().getValue());
            return true;
          })
      .timedGet();

  // All good, go back online
  ref.getDatabase().goOnline();
}
 
源代码3 项目: social-app-android   文件: PostInteractor.java
public void getPostListByUser(final OnDataChangedListener<Post> onDataChangedListener, String userId) {
    DatabaseReference databaseReference = databaseHelper.getDatabaseReference().child(DatabaseHelper.POSTS_DB_KEY);
    Query postsQuery;
    postsQuery = databaseReference.orderByChild("authorId").equalTo(userId);

    postsQuery.keepSynced(true);
    postsQuery.addListenerForSingleValueEvent(new ValueEventListener() {
        @Override
        public void onDataChange(DataSnapshot dataSnapshot) {
            PostListResult result = parsePostList((Map<String, Object>) dataSnapshot.getValue());
            onDataChangedListener.onListChanged(result.getPosts());
        }

        @Override
        public void onCancelled(DatabaseError databaseError) {
            LogUtil.logError(TAG, "getPostListByUser(), onCancelled", new Exception(databaseError.getMessage()));
        }
    });
}
 
源代码4 项目: budgetto   文件: FirebaseQueryLiveDataElement.java
public FirebaseQueryLiveDataElement(Class<T> genericTypeClass, Query query) {
    setValue(null);
    listener = new ValueEventListener() {

        @Override
        public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
            T item = dataSnapshot.getValue(genericTypeClass);
            setValue(new FirebaseElement<>(item));
        }

        @Override
        public void onCancelled(@NonNull DatabaseError databaseError) {
            setValue(new FirebaseElement<>(databaseError));
            removeListener();
            setListener();
        }
    };
    this.query = query;
}
 
public void addValueEventListener(final String name, final ReadableArray modifiers) {
  final FirestackDBReference self = this;

  mValueListener = new ValueEventListener() {
    @Override
    public void onDataChange(DataSnapshot dataSnapshot) {
      self.handleDatabaseEvent("value", mPath, dataSnapshot);
    }

    @Override
    public void onCancelled(DatabaseError error) {
      self.handleDatabaseError("value", mPath, error);
    }
  };

  Query ref = this.getDatabaseQueryAtPathAndModifiers(modifiers);
  ref.addValueEventListener(mValueListener);
  this.setListeningTo(mPath, "value");
}
 
源代码6 项目: Doctorave   文件: detailActivity.java
public void deleteFromFirebase(final String id){
    Query hekkQuery = mDatabaseReference;

    hekkQuery.addValueEventListener(new ValueEventListener() {
        @Override
        public void onDataChange(DataSnapshot dataSnapshot) {
            dataSnapshot.child(id).getRef().removeValue()
                    .addOnSuccessListener(new OnSuccessListener<Void>() {
                        @Override
                        public void onSuccess(Void aVoid) {
                            deletePhotoFromStorage(id);
                        }
                    });
        }

        @Override
        public void onCancelled(DatabaseError databaseError) {
        }
    });

    /////this is for firebase storage
    Task<Void> task = mStorageReference.child(String.valueOf(id).concat("_Image")).delete();
}
 
源代码7 项目: Doctorave   文件: patientsFragment.java
@Override
public void onLoadFinished(Loader<Cursor> loader, final Cursor data) {
    adapter.swapCursor(data);

    if(data.getCount() == 0){
        Query hekkQuery = mDatabaseReference;

        hekkQuery.addListenerForSingleValueEvent(new ValueEventListener() {
            @Override
            public void onDataChange(DataSnapshot dataSnapshot) {

                if(doctorPreference.getWantToRestoreData(getActivity())){
                    if(dataSnapshot.getChildrenCount() == 0){

                    }else {
                        showAlertToRestoreData(dataSnapshot.getChildrenCount());
                    }
                }
            }

            @Override
            public void onCancelled(DatabaseError databaseError) {
            }
        });
    }
}
 
源代码8 项目: geofire-java   文件: GeoQuery.java
private void addValueToReadyListener(final Query firebase, final GeoHashQuery query) {
    firebase.addListenerForSingleValueEvent(new ValueEventListener() {
        @Override
        public void onDataChange(DataSnapshot dataSnapshot) {
            synchronized (GeoQuery.this) {
                GeoQuery.this.outstandingQueries.remove(query);
                GeoQuery.this.checkAndFireReady();
            }
        }

        @Override
        public void onCancelled(final DatabaseError databaseError) {
            synchronized (GeoQuery.this) {
                for (final GeoQueryDataEventListener listener : GeoQuery.this.eventListeners) {
                    GeoQuery.this.geoFire.raiseEvent(new Runnable() {
                        @Override
                        public void run() {
                            listener.onGeoQueryError(databaseError);
                        }
                    });
                }
            }
        }
    });
}
 
源代码9 项目: friendlypix-android   文件: PostsFragment.java
private FirebaseRecyclerAdapter<Post, PostViewHolder> getFirebaseRecyclerAdapter(Query query) {
    FirebaseRecyclerOptions<Post> options = new FirebaseRecyclerOptions.Builder<Post>()
            .setLifecycleOwner(this)
            .setQuery(query, Post.class)
            .build();

    return new FirebaseRecyclerAdapter<Post, PostViewHolder>(options) {
        @Override
        protected void onBindViewHolder(@NonNull PostViewHolder postViewHolder,
                                        int position,
                                        @NonNull Post post) {
            setupPost(postViewHolder, post, position, null);
        }

        @Override
        public PostViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
            View view = LayoutInflater.from(parent.getContext())
                    .inflate(R.layout.post_item, parent, false);

            return new PostViewHolder(view);
        }
    };
}
 
源代码10 项目: EasyFirebase   文件: RxFirebaseHelper.java
public <T> Observable<T> getObjects(final Query query, final Class<T> objectClass, final boolean useRootElement) {
    return Observable.create(new Observable.OnSubscribe<T>() {
        @Override
        public void call(final Subscriber<? super T> subscriber) {
            query.addListenerForSingleValueEvent(new ValueEventListener() {
                @Override
                public void onDataChange(DataSnapshot dataSnapshot) {
                    if(useRootElement) {
                        converter.convert(dataSnapshot, objectClass, subscriber);
                    } else {
                        for (DataSnapshot entry : dataSnapshot.getChildren()) {
                            converter.convert(entry, objectClass, subscriber);
                        }
                    }
                    subscriber.onCompleted();
                }

                @Override
                public void onCancelled(DatabaseError databaseError) {

                }
            });
        }
    });
}
 
源代码11 项目: gdx-fireapp   文件: ResolverQueryOrderBy.java
@Override
public Query resolve(OrderByClause orderByClause, Query target) {
    switch (orderByClause.getOrderByMode()) {
        case ORDER_BY_CHILD:
            if (orderByClause.getArgument() == null) {
                throw new IllegalArgumentException(MISSING_ARGUMENT);
            }
            return target.orderByChild(orderByClause.getArgument());
        case ORDER_BY_KEY:
            return target.orderByKey();
        case ORDER_BY_VALUE:
            return target.orderByValue();
        default:
            throw new IllegalStateException();
    }
}
 
源代码12 项目: rxfirebase   文件: RxValue.java
/**
 * @param query
 * @return
 */
@NonNull
@CheckReturnValue
public static Single<DataSnapshot> single(@NonNull final Query query) {
    return Single.create(new SingleOnSubscribe<DataSnapshot>() {
        @Override
        public void subscribe(
                @NonNull final SingleEmitter<DataSnapshot> emit) throws Exception {
            final ValueEventListener listener = listener(emit);

            emit.setCancellable(new Cancellable() {
                @Override
                public void cancel() throws Exception {
                    query.removeEventListener(listener);
                }
            });

            query.addListenerForSingleValueEvent(listener);
        }
    });
}
 
源代码13 项目: gdx-fireapp   文件: ProviderQueryFilteringTest.java
@Test
public void applyFiltering1() {
    // Given
    ProviderQueryFiltering provider = new ProviderQueryFiltering();
    OrderByClause orderByClause = new OrderByClause(OrderByMode.ORDER_BY_KEY, "test");
    Array<Filter> filters = new Array<>(new Filter[]{new Filter(FilterType.LIMIT_FIRST, 2)});
    Query query = Mockito.mock(Query.class);
    Mockito.when(query.limitToFirst(Mockito.anyInt())).thenReturn(query);
    Mockito.when(query.orderByKey()).thenReturn(query);
    provider.setQuery(query);
    provider.setFilters(filters);
    provider.setOrderByClause(orderByClause);

    // When
    Object result = provider.applyFiltering();

    // Then
    Assert.assertNotNull(result);
}
 
源代码14 项目: social-app-android   文件: PostInteractor.java
public void getPostListByUser(final OnDataChangedListener<Post> onDataChangedListener, String userId) {
    DatabaseReference databaseReference = databaseHelper.getDatabaseReference().child(DatabaseHelper.POSTS_DB_KEY);
    Query postsQuery;
    postsQuery = databaseReference.orderByChild("authorId").equalTo(userId);

    postsQuery.keepSynced(true);
    postsQuery.addListenerForSingleValueEvent(new ValueEventListener() {
        @Override
        public void onDataChange(DataSnapshot dataSnapshot) {
            PostListResult result = parsePostList((Map<String, Object>) dataSnapshot.getValue());
            onDataChangedListener.onListChanged(result.getPosts());
        }

        @Override
        public void onCancelled(DatabaseError databaseError) {
            LogUtil.logError(TAG, "getPostListByUser(), onCancelled", new Exception(databaseError.getMessage()));
        }
    });
}
 
源代码15 项目: rxfirebase   文件: RxDatabaseReference.java
/**
 * @param query
 * @return
 */
@NonNull
@CheckReturnValue
public static Single<DataSnapshot> single(@NonNull final Query query) {
    return Single.create(new SingleOnSubscribe<DataSnapshot>() {
        @Override
        public void subscribe(
                @NonNull final SingleEmitter<DataSnapshot> emit) throws Exception {
            final ValueEventListener listener = listener(emit);

            emit.setCancellable(new Cancellable() {
                @Override
                public void cancel() throws Exception {
                    query.removeEventListener(listener);
                }
            });

            query.addListenerForSingleValueEvent(listener);
        }
    });
}
 
源代码16 项目: snippets-android   文件: QueryActivity.java
public void basicQueryValueListener() {
    String myUserId = getUid();
    Query myTopPostsQuery = databaseReference.child("user-posts").child(myUserId)
            .orderByChild("starCount");

    // [START basic_query_value_listener]
    // My top posts by number of stars
    myTopPostsQuery.addValueEventListener(new ValueEventListener() {
        @Override
        public void onDataChange(DataSnapshot dataSnapshot) {
            for (DataSnapshot postSnapshot: dataSnapshot.getChildren()) {
                // TODO: handle the post
            }
        }

        @Override
        public void onCancelled(DatabaseError databaseError) {
            // Getting Post failed, log a message
            Log.w(TAG, "loadPost:onCancelled", databaseError.toException());
            // ...
        }
    });
    // [END basic_query_value_listener]
}
 
源代码17 项目: BloodBank   文件: HomeView.java
private void AddPosts()
{
    Query allposts = donor_ref.child("posts");
    pd.show();
    allposts.addListenerForSingleValueEvent(new ValueEventListener() {
        @Override
        public void onDataChange(@NonNull DataSnapshot dataSnapshot) {

            if(dataSnapshot.exists()) {

                for (DataSnapshot singlepost : dataSnapshot.getChildren()) {
                    CustomUserData customUserData = singlepost.getValue(CustomUserData.class);
                    postLists.add(customUserData);
                    restAdapter.notifyDataSetChanged();
                }
                pd.dismiss();
            }
            else
            {
                Toast.makeText(getActivity(), "Database is empty now!",
                        Toast.LENGTH_LONG).show();
            }
        }

        @Override
        public void onCancelled(@NonNull DatabaseError databaseError) {

            Log.d("User", databaseError.getMessage());

        }
    });

}
 
源代码18 项目: firebase-android-sdk   文件: ReadFuture.java
public ReadFuture(final Query ref) {
  this(
      ref,
      new CompletionCondition() {
        @Override
        public boolean isComplete(List<EventRecord> events) {
          return true;
        }
      });
}
 
源代码19 项目: firebase-android-sdk   文件: ReadFuture.java
public static ReadFuture untilNonNull(Query ref) {
  return new ReadFuture(
      ref,
      new CompletionCondition() {
        @Override
        public boolean isComplete(List<EventRecord> events) {
          return events.get(events.size() - 1).getSnapshot().getValue() != null;
        }
      });
}
 
源代码20 项目: geofire-java   文件: GeoQuery.java
private void reset() {
    for(Map.Entry<GeoHashQuery, Query> entry: this.firebaseQueries.entrySet()) {
        entry.getValue().removeEventListener(this.childEventLister);
    }
    this.outstandingQueries.clear();
    this.firebaseQueries.clear();
    this.queries = null;
    this.locationInfos.clear();
}
 
源代码21 项目: firebase-android-sdk   文件: ReadFuture.java
public static ReadFuture untilEquals(Query ref, final Object value, boolean ignoreFirstNull) {
  return new ReadFuture(
      ref,
      new CompletionCondition() {
        @Override
        public boolean isComplete(List<EventRecord> events) {
          Object eventValue = events.get(events.size() - 1).getSnapshot().getValue();
          return eventValue != null && eventValue.equals(value);
        }
      },
      ignoreFirstNull);
}
 
源代码22 项目: firebase-android-sdk   文件: KeepSyncedTest.java
private void assertNotKeptSynced(Query query) throws Exception {
  DatabaseReference ref = query.getRef();

  // First set a unique value to the value of a child.
  long current = globalKeepSyncedTestCounter++;
  final Map<String, Object> oldValue = new MapBuilder().put("child", current).build();

  long next = globalKeepSyncedTestCounter++;
  final Map<String, Object> nextValue = new MapBuilder().put("child", next).build();

  new WriteFuture(ref, oldValue).timedGet();

  // Next go offline, if it's kept synced we should have kept the value and we'll get an even
  // with the *old* value.
  ref.getDatabase().goOffline();

  ReadFuture readFuture =
      new ReadFuture(
          query,
          (List<EventRecord> events) -> {
            // We expect this to get called with the next value, not the old value.
            assertEquals(1, events.size());
            assertEquals(nextValue, events.get(0).getSnapshot().getValue());
            return true;
          });

  // By now, if we had it synced we should have gotten an event with the wrong value
  // Write a new value so the value event listener will be triggered
  ref.setValue(nextValue);
  readFuture.timedGet();

  // All good, go back online
  ref.getDatabase().goOnline();
}
 
源代码23 项目: firebase-android-sdk   文件: KeepSyncedTest.java
@Test
public void keepSyncedAffectsQueries() throws Exception {
  DatabaseReference ref = IntegrationTestHelpers.getRandomNode();
  ref.keepSynced(true);
  Query query = ref.limitToFirst(5);
  query.keepSynced(true);
  assertIsKeptSynced(ref);

  ref.keepSynced(false);
  assertNotKeptSynced(ref);
  assertNotKeptSynced(
      query); // currently, setting false on the default query affects all queries at that
  // location
}
 
源代码24 项目: FirebaseUI-Android   文件: DatabasePagingOptions.java
/**
 * Sets the query using a {@link ClassSnapshotParser} based
 * on the given class.
 *
 * See {@link #setQuery(Query, PagedList.Config, SnapshotParser)}.
 */
@NonNull
public Builder<T> setQuery(@NonNull Query query,
                           @NonNull PagedList.Config config,
                           @NonNull Class<T> modelClass) {
    return setQuery(query, config, new ClassSnapshotParser<>(modelClass));
}
 
源代码25 项目: cannonball-android   文件: FirebaseHelpers.java
public static FirebaseListOptions<Poem> getUserListOptions(int layout) {
    String userId = getUserId();
    DatabaseReference poemsRef = FirebaseDatabase.getInstance().getReference(userId);
    Query poemsQuery = poemsRef.orderByChild("inverseCreationTimeStamp");

    return new FirebaseListOptions.Builder<Poem>()
            .setQuery(poemsQuery, Poem.class)
            .setLayout(layout)
            .build();
}
 
源代码26 项目: budgetto   文件: FirebaseQueryLiveDataSet.java
public void setQuery(Query query) {
    removeListener();
    liveDataSet.clear();
    setValue(new FirebaseElement<>(liveDataSet));
    this.query = query;
    setListener();
}
 
源代码27 项目: FirebaseUI-Android   文件: DatabasePagingOptions.java
/**
 * Sets the Database query to paginate.
 *
 * @param query the FirebaseDatabase query. This query should only contain orderByKey(), orderByChild() and
 *              orderByValue() clauses. Any limit will cause an error such as limitToLast() or limitToFirst().
 * @param config paging configuration, passed directly to the support paging library.
 * @param parser the {@link SnapshotParser} to parse {@link DataSnapshot} into model
 *               objects.
 * @return this, for chaining.
 */
@NonNull
public Builder<T> setQuery(@NonNull Query query,
                           @NonNull PagedList.Config config,
                           @NotNull SnapshotParser<T> parser) {
    FirebaseDataSource.Factory factory = new FirebaseDataSource.Factory(query);
    mData = new LivePagedListBuilder<>(factory, config).build();

    mParser = parser;
    return this;
}
 
源代码28 项目: Doctorave   文件: verifyPatient2.java
private  void putInformationInFb(final Context context) {

        // TODO: Send messages on click
        FirebaseDatabase mFirebaseDatabase = FirebaseDatabase.getInstance();
        final DatabaseReference mDatabaseReference = mFirebaseDatabase.getReference();
        Query hekkQuery = mDatabaseReference;

        hekkQuery.addListenerForSingleValueEvent(new ValueEventListener() {
            @Override
            public void onDataChange(DataSnapshot dataSnapshot) {
                boolean alreadyHas = false;
                for (DataSnapshot snapshot: dataSnapshot.getChildren()) {
                    if (snapshot.getKey().equals(phone)){
                        alreadyHas = true;
                        saveUserInSP(context);
                    }
                }
                if(!alreadyHas){
                    mDatabaseReference.child(phone).setValue("").addOnSuccessListener(new OnSuccessListener<Void>() {
                        @Override
                        public void onSuccess(Void aVoid) {
                            saveUserInSP(context);
                        }
                    })
                            .addOnFailureListener(new OnFailureListener() {
                                @Override
                                public void onFailure(@NonNull Exception e) {

                                }
                            });
                }
            }

            @Override
            public void onCancelled(DatabaseError databaseError) {
            }
        });

    }
 
源代码29 项目: Doctorave   文件: addPatientActivity.java
public void updateInFirebase(final String id, final patientsInfo info){
    Query hekkQuery = mDatabaseReference;

    hekkQuery.addValueEventListener(new ValueEventListener() {
        @Override
        public void onDataChange(DataSnapshot dataSnapshot) {
            dataSnapshot.child(id).getRef().setValue(info);
        }

        @Override
        public void onCancelled(DatabaseError databaseError) {
        }
    });

}
 
源代码30 项目: firebase-admin-java   文件: OrderByTestIT.java
@Test
public void testQueriesOnLeafNodes()
    throws InterruptedException, ExecutionException, TestFailure, TimeoutException {
  DatabaseReference ref = IntegrationTestUtils.getRandomNode(masterApp) ;
  final Semaphore semaphore = new Semaphore(0);
  new WriteFuture(ref, "leaf-node").timedGet();

  final List<DataSnapshot> snapshots = new ArrayList<>();
  Query query = ref.orderByChild("foo").limitToLast(1);
  final ValueEventListener listener =
      query.addValueEventListener(
          new ValueEventListener() {
            @Override
            public void onDataChange(DataSnapshot snapshot) {
              snapshots.add(snapshot);
              semaphore.release();
            }

            @Override
            public void onCancelled(DatabaseError error) {
              Assert.fail();
            }
          });

  TestHelpers.waitFor(semaphore);

  Assert.assertEquals(1, snapshots.size());
  Assert.assertNull(snapshots.get(0).getValue());

  // cleanup
  TestHelpers.waitForRoundtrip(ref);
  ref.removeEventListener(listener);
}