|
6 | 6 | import fr.free.nrw.commons.achievements.FeaturedImages;
|
7 | 7 | import fr.free.nrw.commons.achievements.FeedbackResponse;
|
8 | 8 | import fr.free.nrw.commons.campaigns.CampaignResponseDTO;
|
9 |
| -import fr.free.nrw.commons.depictions.subClass.models.ParentSparqlResponse; |
10 |
| -import fr.free.nrw.commons.depictions.subClass.models.SubclassSparqlResponse; |
| 9 | +import fr.free.nrw.commons.depictions.subClass.models.SparqlResponse; |
11 | 10 | import fr.free.nrw.commons.location.LatLng;
|
12 | 11 | import fr.free.nrw.commons.nearby.Place;
|
13 | 12 | import fr.free.nrw.commons.nearby.model.NearbyResponse;
|
|
29 | 28 | import okhttp3.Request;
|
30 | 29 | import okhttp3.Response;
|
31 | 30 | import okhttp3.ResponseBody;
|
| 31 | +import org.jetbrains.annotations.NotNull; |
32 | 32 | import timber.log.Timber;
|
33 | 33 |
|
34 | 34 | /**
|
@@ -207,51 +207,40 @@ public Observable<List<Place>> getNearbyPlaces(LatLng cur, String language, doub
|
207 | 207 | * bridge -> suspended bridge, aqueduct, etc
|
208 | 208 | */
|
209 | 209 | public Observable<List<DepictedItem>> getChildQIDs(String qid) throws IOException {
|
210 |
| - String queryString = FileUtils.readFromResource("/queries/subclasses_query.rq"); |
211 |
| - String query = queryString. |
212 |
| - replace("${QID}", qid) |
213 |
| - .replace("${LANG}", "\"" + Locale.getDefault().getLanguage() + "\""); |
214 |
| - Timber.e(query); |
215 |
| - HttpUrl.Builder urlBuilder = HttpUrl |
216 |
| - .parse(sparqlQueryUrl) |
217 |
| - .newBuilder() |
218 |
| - .addQueryParameter("query", query) |
219 |
| - .addQueryParameter("format", "json"); |
220 |
| - Request request = new Request.Builder() |
221 |
| - .url(urlBuilder.build()) |
222 |
| - .build(); |
223 |
| - return Observable.fromCallable(() -> { |
224 |
| - Response response = okHttpClient.newCall(request).execute(); |
225 |
| - return gson.fromJson(response.body().string(), SubclassSparqlResponse.class).toDepictedItems(); |
226 |
| - }).doOnError(Timber::e); |
| 210 | + return depictedItemsFrom(sparqlQuery(qid, "/queries/subclasses_query.rq")); |
227 | 211 | }
|
228 | 212 |
|
229 | 213 | /**
|
230 | 214 | * Get the QIDs of all Wikidata items that are subclasses of the given Wikidata item. Example:
|
231 | 215 | * bridge -> suspended bridge, aqueduct, etc
|
232 | 216 | */
|
233 | 217 | public Observable<List<DepictedItem>> getParentQIDs(String qid) throws IOException {
|
234 |
| - String queryString = FileUtils.readFromResource("/queries/parentclasses_query.rq"); |
235 |
| - String query = queryString. |
| 218 | + return depictedItemsFrom(sparqlQuery(qid, "/queries/parentclasses_query.rq")); |
| 219 | + } |
| 220 | + |
| 221 | + private Observable<List<DepictedItem>> depictedItemsFrom(Request request) { |
| 222 | + return Observable.fromCallable(() -> { |
| 223 | + try (ResponseBody body = okHttpClient.newCall(request).execute().body()) { |
| 224 | + return gson.fromJson(body.string(), SparqlResponse.class).toDepictedItems(); |
| 225 | + }catch (Exception e) { |
| 226 | + return new ArrayList<DepictedItem>(); |
| 227 | + } |
| 228 | + }).doOnError(Timber::e); |
| 229 | + } |
| 230 | + |
| 231 | + @NotNull |
| 232 | + private Request sparqlQuery(String qid, String fileName) throws IOException { |
| 233 | + String query = FileUtils.readFromResource(fileName). |
236 | 234 | replace("${QID}", qid)
|
237 | 235 | .replace("${LANG}", "\"" + Locale.getDefault().getLanguage() + "\"");
|
238 |
| - Timber.e(query); |
239 | 236 | HttpUrl.Builder urlBuilder = HttpUrl
|
240 | 237 | .parse(sparqlQueryUrl)
|
241 | 238 | .newBuilder()
|
242 | 239 | .addQueryParameter("query", query)
|
243 | 240 | .addQueryParameter("format", "json");
|
244 |
| - Request request = new Request.Builder() |
| 241 | + return new Request.Builder() |
245 | 242 | .url(urlBuilder.build())
|
246 | 243 | .build();
|
247 |
| - return Observable.fromCallable(() -> { |
248 |
| - Response response = okHttpClient.newCall(request).execute(); |
249 |
| - try { |
250 |
| - return gson.fromJson(response.body().string(), ParentSparqlResponse.class).toDepictedItems(); |
251 |
| - } catch (Exception e) { |
252 |
| - return new ArrayList<DepictedItem>(); |
253 |
| - } |
254 |
| - }).doOnError(Timber::e); |
255 | 244 | }
|
256 | 245 |
|
257 | 246 | public Single<CampaignResponseDTO> getCampaigns() {
|
|
0 commit comments