Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package pl.umcs.devchallenge.cloud.rooms;
- import com.google.firebase.database.DataSnapshot;
- import java.text.ParseException;
- import java.util.ArrayList;
- import pl.umcs.devchallenge.cloud.OnGetObjectListener;
- import pl.umcs.devchallenge.models.Room;
- import pl.umcs.devchallenge.models.RoomMember;
- import pl.umcs.firebase_engine.database.FailureStatus;
- import pl.umcs.firebase_engine.database.GetQuery;
- import pl.umcs.firebase_engine.database.interfaces.OnGetValueListener;
- import static pl.umcs.devchallenge.cloud.ErrorStatus.CONNECTION_ERROR;
- import static pl.umcs.devchallenge.cloud.ErrorStatus.PARSE_ERROR;
- import static pl.umcs.devchallenge.core.Config.ROOMS_REFERENCE;
- public class RoomServant {
- private GetQuery getQuery;
- private OnGetObjectListener<Room> getRoomListener;
- private OnGetObjectListener<ArrayList<Room>> getRoomsListener;
- private OnGetObjectListener<ArrayList<RoomMember>> getRoomMembersListener;
- public RoomServant() {
- getQuery = new GetQuery(true);
- }
- public void unregisterGetRoomListener() {
- getRoomListener = null;
- }
- public void unregisterGetRoomsListener() {
- getRoomsListener = null;
- }
- public void getRoom(String roomId, OnGetObjectListener<Room> listener) {
- this.getRoomListener = listener;
- getQuery.getValue(ROOMS_REFERENCE + roomId, new OnGetValueListener() {
- @Override
- public void onSuccess(DataSnapshot dataSnapshot) {
- if (getRoomListener != null) {
- try {
- Room room = parseRoom(dataSnapshot);
- getRoomListener.onSuccess(room);
- } catch (ParseException e) {
- getRoomListener.onFailure(PARSE_ERROR);
- } finally {
- getRoomListener.onEnd();
- }
- }
- }
- @Override
- public void onFailure(FailureStatus failureStatus) {
- if (listener != null) {
- listener.onFailure(CONNECTION_ERROR);
- }
- }
- });
- }
- public void getRooms(OnGetObjectListener<ArrayList<Room>> listener) {
- this.getRoomsListener = listener;
- getQuery.getValue(ROOMS_REFERENCE, new OnGetValueListener() {
- @Override
- public void onSuccess(DataSnapshot dataSnapshot) {
- if (getRoomsListener != null) {
- try {
- ArrayList<Room> rooms = new ArrayList<>();
- for (DataSnapshot snapshot : dataSnapshot.getChildren()) {
- Room room = parseRoom(snapshot);
- rooms.add(room);
- }
- getRoomsListener.onSuccess(rooms);
- } catch (ParseException e) {
- getRoomsListener.onFailure(PARSE_ERROR);
- } finally {
- getRoomsListener.onEnd();
- }
- }
- }
- @Override
- public void onFailure(FailureStatus failureStatus) {
- if (getRoomsListener != null) {
- listener.onFailure(CONNECTION_ERROR);
- }
- }
- });
- }
- public ArrayList<RoomMember> getMembers(String roomId, OnGetObjectListener<ArrayList<RoomMember>> listener) {
- ArrayList<RoomMember> members = new ArrayList<>();
- this.getRoomMembersListener = listener;
- getQuery.getValue(ROOMS_REFERENCE + roomId + "/members", new OnGetValueListener() {
- @Override
- public void onSuccess(DataSnapshot dataSnapshot) {
- if (getRoomsListener != null) {
- try {
- for (DataSnapshot snapshot : dataSnapshot.getChildren()) {
- RoomMember roomMember = parseRoomMember(snapshot);
- members.add(roomMember);
- }
- getRoomMembersListener.onSuccess(members);
- } catch (ParseException e) {
- getRoomMembersListener.onFailure(PARSE_ERROR);
- } finally {
- getRoomMembersListener.onEnd();
- }
- }
- }
- @Override
- public void onFailure(FailureStatus failureStatus) {
- if (getRoomMembersListener != null) {
- listener.onFailure(CONNECTION_ERROR);
- }
- }
- });
- return members;
- }
- private Room parseRoom(DataSnapshot snapshot) throws ParseException {
- return snapshot.getValue(Room.class);
- }
- private RoomMember parseRoomMember(DataSnapshot snapshot) throws ParseException {
- return snapshot.getValue(RoomMember.class);
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement