Skip to content

Commit 41bc2a5

Browse files
authored
Merge pull request #882 from b2ihealthcare/issue/SO-4916-add-language-to-suggest-api
SO-4916: Add language to suggest API parameters
2 parents 974aeab + 7dbffaf commit 41bc2a5

File tree

2 files changed

+37
-3
lines changed

2 files changed

+37
-3
lines changed

core/com.b2international.snowowl.core.rest/src/com/b2international/snowowl/core/rest/suggest/SuggestRestParameters.java

+10
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,9 @@ public class SuggestRestParameters {
3434

3535
@Parameter(description = "The preferred term display in case of SNOMED CT", example = "PT", schema = @Schema(allowableValues = {"FSN", "PT", "ID_ONLY"}, defaultValue = "PT"))
3636
private String preferredDisplay = "PT";
37+
38+
@Parameter(description = "Accepted language tags, in order of preference")
39+
private String acceptLanguage;
3740

3841
public String getCodeSystemPath() {
3942
return codeSystemPath;
@@ -67,4 +70,11 @@ public void setPreferredDisplay(String preferredDisplay) {
6770
this.preferredDisplay = preferredDisplay;
6871
}
6972

73+
public String getAcceptLanguage() {
74+
return acceptLanguage;
75+
}
76+
77+
public void setAcceptLanguage(String acceptLanguage) {
78+
this.acceptLanguage = acceptLanguage;
79+
}
7080
}

core/com.b2international.snowowl.core.rest/src/com/b2international/snowowl/core/rest/suggest/SuggestRestService.java

+27-3
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,9 @@
1818
import java.util.List;
1919
import java.util.stream.Collectors;
2020

21+
import org.elasticsearch.common.Strings;
2122
import org.springdoc.api.annotations.ParameterObject;
23+
import org.springframework.http.HttpHeaders;
2224
import org.springframework.web.bind.annotation.*;
2325

2426
import com.b2international.snowowl.core.codesystem.CodeSystemRequests;
@@ -29,6 +31,7 @@
2931
import com.b2international.snowowl.core.rest.AbstractRestService;
3032

3133
import io.swagger.v3.oas.annotations.Operation;
34+
import io.swagger.v3.oas.annotations.Parameter;
3235
import io.swagger.v3.oas.annotations.responses.ApiResponse;
3336
import io.swagger.v3.oas.annotations.responses.ApiResponses;
3437
import io.swagger.v3.oas.annotations.tags.Tag;
@@ -51,9 +54,16 @@ public class SuggestRestService extends AbstractRestService {
5154
@ApiResponse(responseCode = "400", description = "Bad Request")
5255
})
5356
@GetMapping
54-
public Promise<Suggestions> getSuggest(@ParameterObject final SuggestRestParameters params) {
57+
public Promise<Suggestions> getSuggest(
58+
@ParameterObject
59+
final SuggestRestParameters params,
60+
61+
@Parameter(description = "Accepted language tags, in order of preference", example = "en-US;q=0.8,en-GB;q=0.6")
62+
@RequestHeader(value=HttpHeaders.ACCEPT_LANGUAGE, defaultValue="en-US;q=0.8,en-GB;q=0.6", required=false)
63+
final String acceptLanguage) {
5564
return CodeSystemRequests.prepareSuggestConcepts()
5665
.setLimit(params.getLimit())
66+
.setLocales(Strings.isNullOrEmpty(params.getAcceptLanguage()) ? acceptLanguage : params.getAcceptLanguage())
5767
.setPreferredDisplay(params.getPreferredDisplay())
5868
.filterByTerm(params.getTerm())
5969
.sortBy(SORT_BY)
@@ -69,9 +79,16 @@ public Promise<Suggestions> getSuggest(@ParameterObject final SuggestRestParamet
6979
@ApiResponse(responseCode = "400", description = "Bad Request")
7080
})
7181
@PostMapping(consumes = { AbstractRestService.JSON_MEDIA_TYPE })
72-
public Promise<Suggestions> postSuggest(@RequestBody final SuggestRestParameters body) {
82+
public Promise<Suggestions> postSuggest(
83+
@RequestBody
84+
final SuggestRestParameters body,
85+
86+
@Parameter(description = "Accepted language tags, in order of preference", example = "en-US;q=0.8,en-GB;q=0.6")
87+
@RequestHeader(value=HttpHeaders.ACCEPT_LANGUAGE, defaultValue="en-US;q=0.8,en-GB;q=0.6", required=false)
88+
final String acceptLanguage) {
7389
return CodeSystemRequests.prepareSuggestConcepts()
7490
.setLimit(body.getLimit())
91+
.setLocales(Strings.isNullOrEmpty(body.getAcceptLanguage()) ? acceptLanguage : body.getAcceptLanguage())
7592
.setPreferredDisplay(body.getPreferredDisplay())
7693
.filterByTerm(body.getTerm())
7794
.sortBy(SORT_BY)
@@ -87,10 +104,17 @@ public Promise<Suggestions> postSuggest(@RequestBody final SuggestRestParameters
87104
@ApiResponse(responseCode = "400", description = "Bad Request")
88105
})
89106
@PostMapping(value = "/bulk", consumes = { AbstractRestService.JSON_MEDIA_TYPE })
90-
public Promise<List<Object>> postBulkSuggest(@RequestBody final List<SuggestRestParameters> body) {
107+
public Promise<List<Object>> postBulkSuggest(
108+
@RequestBody
109+
final List<SuggestRestParameters> body,
110+
111+
@Parameter(description = "Accepted language tags, in order of preference", example = "en-US;q=0.8,en-GB;q=0.6")
112+
@RequestHeader(value=HttpHeaders.ACCEPT_LANGUAGE, defaultValue="en-US;q=0.8,en-GB;q=0.6", required=false)
113+
final String acceptLanguage) {
91114
final List<Promise<Suggestions>> promises = body.stream().map(params -> {
92115
return CodeSystemRequests.prepareSuggestConcepts()
93116
.setLimit(params.getLimit())
117+
.setLocales(Strings.isNullOrEmpty(params.getAcceptLanguage()) ? acceptLanguage : params.getAcceptLanguage())
94118
.setPreferredDisplay(params.getPreferredDisplay())
95119
.filterByTerm(params.getTerm())
96120
.sortBy(SORT_BY)

0 commit comments

Comments
 (0)