@@ -90,7 +90,7 @@ public FirebaseFirestore getFirestore() {
90
90
*/
91
91
@ NonNull
92
92
public Query whereEqualTo (@ NonNull String field , @ Nullable Object value ) {
93
- return whereHelper ( FieldPath . fromDotSeparatedPath (field ), Operator . EQUAL , value );
93
+ return where ( Filter . equalTo (field , value ) );
94
94
}
95
95
96
96
/**
@@ -103,7 +103,7 @@ public Query whereEqualTo(@NonNull String field, @Nullable Object value) {
103
103
*/
104
104
@ NonNull
105
105
public Query whereEqualTo (@ NonNull FieldPath fieldPath , @ Nullable Object value ) {
106
- return whereHelper ( fieldPath , Operator . EQUAL , value );
106
+ return where ( Filter . equalTo ( fieldPath , value ) );
107
107
}
108
108
109
109
/**
@@ -119,7 +119,7 @@ public Query whereEqualTo(@NonNull FieldPath fieldPath, @Nullable Object value)
119
119
*/
120
120
@ NonNull
121
121
public Query whereNotEqualTo (@ NonNull String field , @ Nullable Object value ) {
122
- return whereHelper ( FieldPath . fromDotSeparatedPath (field ), Operator . NOT_EQUAL , value );
122
+ return where ( Filter . notEqualTo (field , value ) );
123
123
}
124
124
125
125
/**
@@ -135,7 +135,7 @@ public Query whereNotEqualTo(@NonNull String field, @Nullable Object value) {
135
135
*/
136
136
@ NonNull
137
137
public Query whereNotEqualTo (@ NonNull FieldPath fieldPath , @ Nullable Object value ) {
138
- return whereHelper ( fieldPath , Operator . NOT_EQUAL , value );
138
+ return where ( Filter . notEqualTo ( fieldPath , value ) );
139
139
}
140
140
141
141
/**
@@ -148,7 +148,7 @@ public Query whereNotEqualTo(@NonNull FieldPath fieldPath, @Nullable Object valu
148
148
*/
149
149
@ NonNull
150
150
public Query whereLessThan (@ NonNull String field , @ NonNull Object value ) {
151
- return whereHelper ( FieldPath . fromDotSeparatedPath (field ), Operator . LESS_THAN , value );
151
+ return where ( Filter . lessThan (field , value ) );
152
152
}
153
153
154
154
/**
@@ -161,7 +161,7 @@ public Query whereLessThan(@NonNull String field, @NonNull Object value) {
161
161
*/
162
162
@ NonNull
163
163
public Query whereLessThan (@ NonNull FieldPath fieldPath , @ NonNull Object value ) {
164
- return whereHelper ( fieldPath , Operator . LESS_THAN , value );
164
+ return where ( Filter . lessThan ( fieldPath , value ) );
165
165
}
166
166
167
167
/**
@@ -174,7 +174,7 @@ public Query whereLessThan(@NonNull FieldPath fieldPath, @NonNull Object value)
174
174
*/
175
175
@ NonNull
176
176
public Query whereLessThanOrEqualTo (@ NonNull String field , @ NonNull Object value ) {
177
- return whereHelper ( FieldPath . fromDotSeparatedPath (field ), Operator . LESS_THAN_OR_EQUAL , value );
177
+ return where ( Filter . lessThanOrEqualTo (field , value ) );
178
178
}
179
179
180
180
/**
@@ -187,7 +187,7 @@ public Query whereLessThanOrEqualTo(@NonNull String field, @NonNull Object value
187
187
*/
188
188
@ NonNull
189
189
public Query whereLessThanOrEqualTo (@ NonNull FieldPath fieldPath , @ NonNull Object value ) {
190
- return whereHelper ( fieldPath , Operator . LESS_THAN_OR_EQUAL , value );
190
+ return where ( Filter . lessThanOrEqualTo ( fieldPath , value ) );
191
191
}
192
192
193
193
/**
@@ -200,7 +200,7 @@ public Query whereLessThanOrEqualTo(@NonNull FieldPath fieldPath, @NonNull Objec
200
200
*/
201
201
@ NonNull
202
202
public Query whereGreaterThan (@ NonNull String field , @ NonNull Object value ) {
203
- return whereHelper ( FieldPath . fromDotSeparatedPath (field ), Operator . GREATER_THAN , value );
203
+ return where ( Filter . greaterThan (field , value ) );
204
204
}
205
205
206
206
/**
@@ -213,7 +213,7 @@ public Query whereGreaterThan(@NonNull String field, @NonNull Object value) {
213
213
*/
214
214
@ NonNull
215
215
public Query whereGreaterThan (@ NonNull FieldPath fieldPath , @ NonNull Object value ) {
216
- return whereHelper ( fieldPath , Operator . GREATER_THAN , value );
216
+ return where ( Filter . greaterThan ( fieldPath , value ) );
217
217
}
218
218
219
219
/**
@@ -226,8 +226,7 @@ public Query whereGreaterThan(@NonNull FieldPath fieldPath, @NonNull Object valu
226
226
*/
227
227
@ NonNull
228
228
public Query whereGreaterThanOrEqualTo (@ NonNull String field , @ NonNull Object value ) {
229
- return whereHelper (
230
- FieldPath .fromDotSeparatedPath (field ), Operator .GREATER_THAN_OR_EQUAL , value );
229
+ return where (Filter .greaterThanOrEqualTo (field , value ));
231
230
}
232
231
233
232
/**
@@ -240,7 +239,7 @@ public Query whereGreaterThanOrEqualTo(@NonNull String field, @NonNull Object va
240
239
*/
241
240
@ NonNull
242
241
public Query whereGreaterThanOrEqualTo (@ NonNull FieldPath fieldPath , @ NonNull Object value ) {
243
- return whereHelper ( fieldPath , Operator . GREATER_THAN_OR_EQUAL , value );
242
+ return where ( Filter . greaterThanOrEqualTo ( fieldPath , value ) );
244
243
}
245
244
246
245
/**
@@ -257,7 +256,7 @@ public Query whereGreaterThanOrEqualTo(@NonNull FieldPath fieldPath, @NonNull Ob
257
256
*/
258
257
@ NonNull
259
258
public Query whereArrayContains (@ NonNull String field , @ NonNull Object value ) {
260
- return whereHelper ( FieldPath . fromDotSeparatedPath (field ), Operator . ARRAY_CONTAINS , value );
259
+ return where ( Filter . arrayContains (field , value ) );
261
260
}
262
261
263
262
/**
@@ -274,7 +273,7 @@ public Query whereArrayContains(@NonNull String field, @NonNull Object value) {
274
273
*/
275
274
@ NonNull
276
275
public Query whereArrayContains (@ NonNull FieldPath fieldPath , @ NonNull Object value ) {
277
- return whereHelper ( fieldPath , Operator . ARRAY_CONTAINS , value );
276
+ return where ( Filter . arrayContains ( fieldPath , value ) );
278
277
}
279
278
280
279
/**
@@ -292,7 +291,7 @@ public Query whereArrayContains(@NonNull FieldPath fieldPath, @NonNull Object va
292
291
@ NonNull
293
292
public Query whereArrayContainsAny (
294
293
@ NonNull String field , @ NonNull List <? extends Object > values ) {
295
- return whereHelper ( FieldPath . fromDotSeparatedPath (field ), Operator . ARRAY_CONTAINS_ANY , values );
294
+ return where ( Filter . arrayContainsAny (field , values ) );
296
295
}
297
296
298
297
/**
@@ -310,7 +309,7 @@ public Query whereArrayContainsAny(
310
309
@ NonNull
311
310
public Query whereArrayContainsAny (
312
311
@ NonNull FieldPath fieldPath , @ NonNull List <? extends Object > values ) {
313
- return whereHelper ( fieldPath , Operator . ARRAY_CONTAINS_ANY , values );
312
+ return where ( Filter . arrayContainsAny ( fieldPath , values ) );
314
313
}
315
314
316
315
/**
@@ -326,7 +325,7 @@ public Query whereArrayContainsAny(
326
325
*/
327
326
@ NonNull
328
327
public Query whereIn (@ NonNull String field , @ NonNull List <? extends Object > values ) {
329
- return whereHelper ( FieldPath . fromDotSeparatedPath (field ), Operator . IN , values );
328
+ return where ( Filter . inArray (field , values ) );
330
329
}
331
330
332
331
/**
@@ -342,7 +341,7 @@ public Query whereIn(@NonNull String field, @NonNull List<? extends Object> valu
342
341
*/
343
342
@ NonNull
344
343
public Query whereIn (@ NonNull FieldPath fieldPath , @ NonNull List <? extends Object > values ) {
345
- return whereHelper ( fieldPath , Operator . IN , values );
344
+ return where ( Filter . inArray ( fieldPath , values ) );
346
345
}
347
346
348
347
/**
@@ -363,7 +362,7 @@ public Query whereIn(@NonNull FieldPath fieldPath, @NonNull List<? extends Objec
363
362
*/
364
363
@ NonNull
365
364
public Query whereNotIn (@ NonNull String field , @ NonNull List <? extends Object > values ) {
366
- return whereHelper ( FieldPath . fromDotSeparatedPath (field ), Operator . NOT_IN , values );
365
+ return where ( Filter . notInArray (field , values ) );
367
366
}
368
367
369
368
/**
@@ -384,19 +383,19 @@ public Query whereNotIn(@NonNull String field, @NonNull List<? extends Object> v
384
383
*/
385
384
@ NonNull
386
385
public Query whereNotIn (@ NonNull FieldPath fieldPath , @ NonNull List <? extends Object > values ) {
387
- return whereHelper ( fieldPath , Operator . NOT_IN , values );
386
+ return where ( Filter . notInArray ( fieldPath , values ) );
388
387
}
389
388
390
389
/**
391
- * Creates and returns a new {@code Query } with the additional filter that documents must contain
392
- * the specified field and the value should satisfy the relation constraint provided .
390
+ * Parses the given value object and creates a new {@code FieldFilter } with the given field,
391
+ * operator, and value. Also performs validation on the filter before retuning it .
393
392
*
394
393
* @param fieldPath The field to compare
395
394
* @param op The operator
396
- * @param value The value for comparison
397
- * @return The created {@code Query }.
395
+ * @param value The value for parsing
396
+ * @return The created {@code FieldFilter }.
398
397
*/
399
- private Query whereHelper (@ NonNull FieldPath fieldPath , Operator op , Object value ) {
398
+ private FieldFilter parseFieldFilter (@ NonNull FieldPath fieldPath , Operator op , Object value ) {
400
399
checkNotNull (fieldPath , "Provided field path must not be null." );
401
400
checkNotNull (op , "Provided op must not be null." );
402
401
Value fieldValue ;
@@ -426,9 +425,15 @@ private Query whereHelper(@NonNull FieldPath fieldPath, Operator op, Object valu
426
425
.getUserDataReader ()
427
426
.parseQueryValue (value , op == Operator .IN || op == Operator .NOT_IN );
428
427
}
429
- Filter filter = FieldFilter .create (fieldPath .getInternalPath (), op , fieldValue );
428
+ FieldFilter filter = FieldFilter .create (fieldPath .getInternalPath (), op , fieldValue );
430
429
validateNewFilter (filter );
431
- return new Query (query .filter (filter ), firestore );
430
+ return filter ;
431
+ }
432
+
433
+ private Query where (Filter filter ) {
434
+ return new Query (
435
+ query .filter (parseFieldFilter (filter .getField (), filter .getOperator (), filter .getValue ())),
436
+ firestore );
432
437
}
433
438
434
439
private void validateOrderByField (com .google .firebase .firestore .model .FieldPath field ) {
@@ -547,7 +552,7 @@ private List<Operator> conflictingOps(Operator op) {
547
552
}
548
553
}
549
554
550
- private void validateNewFilter (Filter filter ) {
555
+ private void validateNewFilter (com . google . firebase . firestore . core . Filter filter ) {
551
556
if (filter instanceof FieldFilter ) {
552
557
FieldFilter fieldFilter = (FieldFilter ) filter ;
553
558
Operator filterOp = fieldFilter .getOperator ();
0 commit comments