Skip to content

Commit d2fa47e

Browse files
committed
Move more into the base class
Change-Id: I5153b73dff61ac0052838980dfb8a61d816bebc5
1 parent d8dbf87 commit d2fa47e

File tree

5 files changed

+37
-56
lines changed

5 files changed

+37
-56
lines changed

common/src/main/java/com/firebase/ui/common/BaseObservableSnapshotArray.java

Lines changed: 20 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,8 @@
1515
* @param <L> the listener class.
1616
* @param <E> the model object class.
1717
*/
18-
public abstract class BaseObservableSnapshotArray<S, L, E> extends AbstractList<S> {
18+
public abstract class BaseObservableSnapshotArray<S, L extends BaseChangeEventListener<S,?>, E>
19+
extends AbstractList<S> {
1920

2021
private final List<L> mListeners = new CopyOnWriteArrayList<>();
2122
private BaseSnapshotParser<S, E> mParser;
@@ -149,6 +150,24 @@ public int size() {
149150
return getSnapshots().size();
150151
}
151152

153+
protected void notifyListenersOnChildChanged(ChangeEventType type,
154+
S snapshot,
155+
int newIndex,
156+
int oldIndex) {
157+
for (L listener : getListeners()) {
158+
listener.onChildChanged(type, snapshot, newIndex, oldIndex);
159+
}
160+
}
161+
162+
protected void notifyListenersOnDataChanged() {
163+
mHasDataChanged = true;
164+
165+
for (L listener : getListeners()) {
166+
listener.onDataChanged();
167+
}
168+
}
169+
170+
152171
// TODO(samstern): Do we need this?
153172
protected abstract List<S> getSnapshots();
154173

database/src/main/java/com/firebase/ui/database/FirebaseArray.java

Lines changed: 5 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -88,23 +88,23 @@ public void onChildAdded(DataSnapshot snapshot, String previousChildKey) {
8888

8989
mSnapshots.add(index, snapshot);
9090

91-
notifyChangeEventListeners(ChangeEventType.ADDED, snapshot, index);
91+
notifyListenersOnChildChanged(ChangeEventType.ADDED, snapshot, index, -1);
9292
}
9393

9494
@Override
9595
public void onChildChanged(DataSnapshot snapshot, String previousChildKey) {
9696
int index = getIndexForKey(snapshot.getKey());
9797

9898
updateData(index, snapshot);
99-
notifyChangeEventListeners(ChangeEventType.CHANGED, snapshot, index);
99+
notifyListenersOnChildChanged(ChangeEventType.CHANGED, snapshot, index, -1);
100100
}
101101

102102
@Override
103103
public void onChildRemoved(DataSnapshot snapshot) {
104104
int index = getIndexForKey(snapshot.getKey());
105105

106106
removeData(index);
107-
notifyChangeEventListeners(ChangeEventType.REMOVED, snapshot, index);
107+
notifyListenersOnChildChanged(ChangeEventType.REMOVED, snapshot, index, -1);
108108
}
109109

110110
@Override
@@ -115,10 +115,8 @@ public void onChildMoved(DataSnapshot snapshot, String previousChildKey) {
115115
int newIndex = previousChildKey == null ? 0 : (getIndexForKey(previousChildKey) + 1);
116116
mSnapshots.add(newIndex, snapshot);
117117

118-
notifyChangeEventListeners(ChangeEventType.MOVED,
119-
snapshot,
120-
newIndex,
121-
oldIndex);
118+
notifyListenersOnChildChanged(ChangeEventType.MOVED, snapshot,
119+
newIndex, oldIndex);
122120
}
123121

124122
@Override

database/src/main/java/com/firebase/ui/database/FirebaseIndexArray.java

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -178,7 +178,7 @@ protected void onKeyMoved(DataSnapshot data, int index, int oldIndex) {
178178
DataSnapshot snapshot = removeData(oldIndex);
179179
mHasPendingMoveOrDelete = true;
180180
mDataSnapshots.add(index, snapshot);
181-
notifyChangeEventListeners(ChangeEventType.MOVED, snapshot, index, oldIndex);
181+
notifyListenersOnChildChanged(ChangeEventType.MOVED, snapshot, index, oldIndex);
182182
}
183183
}
184184

@@ -190,7 +190,7 @@ protected void onKeyRemoved(DataSnapshot data, int index) {
190190
if (isKeyAtIndex(key, index)) {
191191
DataSnapshot snapshot = removeData(index);
192192
mHasPendingMoveOrDelete = true;
193-
notifyChangeEventListeners(ChangeEventType.REMOVED, snapshot, index);
193+
notifyListenersOnChildChanged(ChangeEventType.REMOVED, snapshot, index, -1);
194194
}
195195
}
196196

@@ -235,12 +235,12 @@ public void onDataChange(DataSnapshot snapshot) {
235235
if (isKeyAtIndex(key, index)) {
236236
// We already know about this data, just update it
237237
updateData(index, snapshot);
238-
notifyChangeEventListeners(ChangeEventType.CHANGED, snapshot, index);
238+
notifyListenersOnChildChanged(ChangeEventType.CHANGED, snapshot, index, -1);
239239
notifyListenersOnDataChanged();
240240
} else {
241241
// We don't already know about this data, add it
242242
mDataSnapshots.add(index, snapshot);
243-
notifyChangeEventListeners(ChangeEventType.ADDED, snapshot, index);
243+
notifyListenersOnChildChanged(ChangeEventType.ADDED, snapshot, index, -1);
244244

245245
mKeysWithPendingData.remove(key);
246246
if (mKeysWithPendingData.isEmpty()) notifyListenersOnDataChanged();
@@ -249,7 +249,7 @@ public void onDataChange(DataSnapshot snapshot) {
249249
if (isKeyAtIndex(key, index)) {
250250
// This data has disappeared, remove it
251251
removeData(index);
252-
notifyChangeEventListeners(ChangeEventType.REMOVED, snapshot, index);
252+
notifyListenersOnChildChanged(ChangeEventType.REMOVED, snapshot, index, -1);
253253
notifyListenersOnDataChanged();
254254
} else {
255255
// Data does not exist

database/src/main/java/com/firebase/ui/database/ObservableSnapshotArray.java

Lines changed: 1 addition & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -69,29 +69,7 @@ protected void onListenerAdded(ChangeEventListener listener) {
6969
}
7070
}
7171

72-
protected final void notifyChangeEventListeners(ChangeEventType type,
73-
DataSnapshot snapshot,
74-
int index) {
75-
notifyChangeEventListeners(type, snapshot, index, -1);
76-
}
77-
78-
protected final void notifyChangeEventListeners(ChangeEventType type,
79-
DataSnapshot snapshot,
80-
int index,
81-
int oldIndex) {
82-
for (ChangeEventListener listener : getListeners()) {
83-
listener.onChildChanged(type, snapshot, index, oldIndex);
84-
}
85-
}
86-
87-
protected final void notifyListenersOnDataChanged() {
88-
setHasDataChanged(true);
89-
for (ChangeEventListener listener : getListeners()) {
90-
listener.onDataChanged();
91-
}
92-
}
93-
94-
protected final void notifyListenersOnCancelled(DatabaseError error) {
72+
protected void notifyListenersOnCancelled(DatabaseError error) {
9573
for (ChangeEventListener listener : getListeners()) {
9674
listener.onError(error);
9775
}

firestore/src/main/java/com/firebase/ui/firestore/FirestoreArray.java

Lines changed: 6 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -103,15 +103,15 @@ public void onEvent(QuerySnapshot snapshots, FirebaseFirestoreException e) {
103103
}
104104
}
105105

106-
notifyOnDataChanged();
106+
notifyListenersOnDataChanged();
107107
}
108108

109109
private void onDocumentAdded(DocumentChange change) {
110110
Log.d(TAG, "Added: " + change.getNewIndex());
111111

112112
// Add the document to the set
113113
mSnapshots.add(change.getNewIndex(), change.getDocument());
114-
notifyOnChildChanged(ChangeEventType.ADDED, change.getDocument(),
114+
notifyListenersOnChildChanged(ChangeEventType.ADDED, change.getDocument(),
115115
change.getNewIndex(), -1);
116116
}
117117

@@ -123,7 +123,7 @@ private void onDocumentRemoved(DocumentChange change) {
123123

124124
// Remove the document from the set
125125
mSnapshots.remove(change.getOldIndex());
126-
notifyOnChildChanged(ChangeEventType.REMOVED, change.getDocument(),
126+
notifyListenersOnChildChanged(ChangeEventType.REMOVED, change.getDocument(),
127127
-1, change.getOldIndex());
128128
}
129129

@@ -136,14 +136,14 @@ private void onDocumentModified(DocumentChange change) {
136136
Log.d(TAG, "Modified (inplace): " + change.getOldIndex());
137137

138138
mSnapshots.set(change.getOldIndex(), change.getDocument());
139-
notifyOnChildChanged(ChangeEventType.CHANGED, change.getDocument(),
139+
notifyListenersOnChildChanged(ChangeEventType.CHANGED, change.getDocument(),
140140
change.getNewIndex(), change.getOldIndex());
141141
} else {
142142
Log.d(TAG, "Modified (moved): " + change.getOldIndex() + " --> " + change.getNewIndex());
143143

144144
mSnapshots.remove(change.getOldIndex());
145145
mSnapshots.add(change.getNewIndex(), change.getDocument());
146-
notifyOnChildChanged(ChangeEventType.MOVED, change.getDocument(),
146+
notifyListenersOnChildChanged(ChangeEventType.MOVED, change.getDocument(),
147147
change.getNewIndex(), change.getOldIndex());
148148
}
149149
}
@@ -171,24 +171,10 @@ private void stopListening() {
171171
mSnapshots.clear();
172172
}
173173

174-
private void notifyOnChildChanged(ChangeEventType type,
175-
DocumentSnapshot snapshot,
176-
int newIndex, int oldIndex) {
177-
178-
for (ChangeEventListener listener : getListeners()) {
179-
listener.onChildChanged(type, snapshot, newIndex, oldIndex);
180-
}
181-
}
182-
174+
// TODO: There should be a way to move this into the base class
183175
private void notifyOnError(FirebaseFirestoreException e) {
184176
for (ChangeEventListener listener : getListeners()) {
185177
listener.onError(e);
186178
}
187179
}
188-
189-
private void notifyOnDataChanged() {
190-
for (ChangeEventListener listener : getListeners()) {
191-
listener.onDataChanged();
192-
}
193-
}
194180
}

0 commit comments

Comments
 (0)