Advertisement
Guest User

RoomServant

a guest
Jan 22nd, 2018
80
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.93 KB | None | 0 0
  1. package pl.umcs.devchallenge.cloud.rooms;
  2.  
  3. import com.google.firebase.database.DataSnapshot;
  4.  
  5. import java.text.ParseException;
  6. import java.util.ArrayList;
  7.  
  8. import pl.umcs.devchallenge.cloud.OnGetObjectListener;
  9. import pl.umcs.devchallenge.models.Room;
  10. import pl.umcs.devchallenge.models.RoomMember;
  11. import pl.umcs.firebase_engine.database.FailureStatus;
  12. import pl.umcs.firebase_engine.database.GetQuery;
  13. import pl.umcs.firebase_engine.database.interfaces.OnGetValueListener;
  14.  
  15. import static pl.umcs.devchallenge.cloud.ErrorStatus.CONNECTION_ERROR;
  16. import static pl.umcs.devchallenge.cloud.ErrorStatus.PARSE_ERROR;
  17. import static pl.umcs.devchallenge.core.Config.ROOMS_REFERENCE;
  18.  
  19. public class RoomServant {
  20.  
  21. private GetQuery getQuery;
  22. private OnGetObjectListener<Room> getRoomListener;
  23. private OnGetObjectListener<ArrayList<Room>> getRoomsListener;
  24.  
  25. private OnGetObjectListener<ArrayList<RoomMember>> getRoomMembersListener;
  26.  
  27. public RoomServant() {
  28. getQuery = new GetQuery(true);
  29. }
  30.  
  31. public void unregisterGetRoomListener() {
  32. getRoomListener = null;
  33. }
  34.  
  35. public void unregisterGetRoomsListener() {
  36. getRoomsListener = null;
  37. }
  38.  
  39. public void getRoom(String roomId, OnGetObjectListener<Room> listener) {
  40. this.getRoomListener = listener;
  41. getQuery.getValue(ROOMS_REFERENCE + roomId, new OnGetValueListener() {
  42. @Override
  43. public void onSuccess(DataSnapshot dataSnapshot) {
  44. if (getRoomListener != null) {
  45. try {
  46. Room room = parseRoom(dataSnapshot);
  47. getRoomListener.onSuccess(room);
  48. } catch (ParseException e) {
  49. getRoomListener.onFailure(PARSE_ERROR);
  50. } finally {
  51. getRoomListener.onEnd();
  52. }
  53. }
  54. }
  55.  
  56. @Override
  57. public void onFailure(FailureStatus failureStatus) {
  58. if (listener != null) {
  59. listener.onFailure(CONNECTION_ERROR);
  60. }
  61. }
  62. });
  63. }
  64.  
  65. public void getRooms(OnGetObjectListener<ArrayList<Room>> listener) {
  66. this.getRoomsListener = listener;
  67. getQuery.getValue(ROOMS_REFERENCE, new OnGetValueListener() {
  68. @Override
  69. public void onSuccess(DataSnapshot dataSnapshot) {
  70. if (getRoomsListener != null) {
  71. try {
  72. ArrayList<Room> rooms = new ArrayList<>();
  73. for (DataSnapshot snapshot : dataSnapshot.getChildren()) {
  74. Room room = parseRoom(snapshot);
  75. rooms.add(room);
  76. }
  77. getRoomsListener.onSuccess(rooms);
  78. } catch (ParseException e) {
  79. getRoomsListener.onFailure(PARSE_ERROR);
  80. } finally {
  81. getRoomsListener.onEnd();
  82. }
  83. }
  84. }
  85.  
  86. @Override
  87. public void onFailure(FailureStatus failureStatus) {
  88. if (getRoomsListener != null) {
  89. listener.onFailure(CONNECTION_ERROR);
  90. }
  91. }
  92. });
  93. }
  94.  
  95. public ArrayList<RoomMember> getMembers(String roomId, OnGetObjectListener<ArrayList<RoomMember>> listener) {
  96. ArrayList<RoomMember> members = new ArrayList<>();
  97. this.getRoomMembersListener = listener;
  98. getQuery.getValue(ROOMS_REFERENCE + roomId + "/members", new OnGetValueListener() {
  99. @Override
  100. public void onSuccess(DataSnapshot dataSnapshot) {
  101. if (getRoomsListener != null) {
  102. try {
  103.  
  104. for (DataSnapshot snapshot : dataSnapshot.getChildren()) {
  105. RoomMember roomMember = parseRoomMember(snapshot);
  106. members.add(roomMember);
  107. }
  108. getRoomMembersListener.onSuccess(members);
  109. } catch (ParseException e) {
  110. getRoomMembersListener.onFailure(PARSE_ERROR);
  111. } finally {
  112. getRoomMembersListener.onEnd();
  113. }
  114. }
  115. }
  116.  
  117. @Override
  118. public void onFailure(FailureStatus failureStatus) {
  119. if (getRoomMembersListener != null) {
  120. listener.onFailure(CONNECTION_ERROR);
  121. }
  122. }
  123. });
  124. return members;
  125. }
  126.  
  127. private Room parseRoom(DataSnapshot snapshot) throws ParseException {
  128. return snapshot.getValue(Room.class);
  129. }
  130.  
  131. private RoomMember parseRoomMember(DataSnapshot snapshot) throws ParseException {
  132. return snapshot.getValue(RoomMember.class);
  133. }
  134.  
  135. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement