|
6 | 6 | import graphql.schema.DataFetchingFieldSelectionSet;
|
7 | 7 | import io.reactivex.rxjava3.core.Observable;
|
8 | 8 | import io.reactivex.rxjava3.core.Single;
|
| 9 | +import java.util.Collection; |
9 | 10 | import java.util.Collections;
|
10 | 11 | import java.util.List;
|
11 | 12 | import java.util.Map;
|
@@ -190,6 +191,46 @@ public Single<ExploreRequest> build(
|
190 | 191 | groupBy.map(GroupByArgument::groupLimit)));
|
191 | 192 | }
|
192 | 193 |
|
| 194 | + @Override |
| 195 | + public Single<ExploreRequest> rebuildWithAdditionalFilters( |
| 196 | + ExploreRequest originalRequest, List<FilterArgument> additionalFilterArguments) { |
| 197 | + return this.mergeFilterLists( |
| 198 | + originalRequest.context(), |
| 199 | + originalRequest.scope(), |
| 200 | + originalRequest.filterArguments(), |
| 201 | + additionalFilterArguments) |
| 202 | + .map( |
| 203 | + newFilterArguments -> |
| 204 | + new DefaultExploreRequest( |
| 205 | + originalRequest.context(), |
| 206 | + originalRequest.scope(), |
| 207 | + originalRequest.timeRange(), |
| 208 | + originalRequest.limit(), |
| 209 | + originalRequest.offset(), |
| 210 | + originalRequest.attributeRequests(), |
| 211 | + originalRequest.aggregationRequests(), |
| 212 | + originalRequest.orderArguments(), |
| 213 | + newFilterArguments, |
| 214 | + originalRequest.groupByAttributeRequests(), |
| 215 | + originalRequest.timeInterval(), |
| 216 | + originalRequest.entityContextOptions(), |
| 217 | + originalRequest.includeRest(), |
| 218 | + originalRequest.spaceId(), |
| 219 | + originalRequest.groupLimit())); |
| 220 | + } |
| 221 | + |
| 222 | + private Single<List<AttributeAssociation<FilterArgument>>> mergeFilterLists( |
| 223 | + GraphQlRequestContext requestContext, |
| 224 | + String scope, |
| 225 | + Collection<AttributeAssociation<FilterArgument>> original, |
| 226 | + Collection<FilterArgument> additional) { |
| 227 | + return this.filterRequestBuilder |
| 228 | + .build(requestContext, scope, additional) |
| 229 | + .flattenAsObservable(list -> list) |
| 230 | + .concatWith(Observable.fromIterable(original)) |
| 231 | + .toList(); |
| 232 | + } |
| 233 | + |
193 | 234 | private Single<Set<AttributeRequest>> buildGroupByAttributes(
|
194 | 235 | GraphQlRequestContext context,
|
195 | 236 | String explorerScope,
|
|
0 commit comments