Skip to content

Commit 710d02a

Browse files
committed
Added _profile param to BDR query #3169
1 parent 26b0d1d commit 710d02a

File tree

2 files changed

+42
-2
lines changed

2 files changed

+42
-2
lines changed

grails-app/controllers/au/org/ala/merit/DataSetController.groovy

+19
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ class DataSetController {
1313
ProjectService projectService
1414
DataSetSummaryService dataSetSummaryService
1515
BdrService bdrService
16+
WebService webService
1617

1718
// Note that authorization is done against a project, so the project id must be supplied to the method.
1819
@PreAuthorise(accessLevel = 'editor')
@@ -158,6 +159,24 @@ class DataSetController {
158159
render response as JSON
159160
}
160161

162+
@PreAuthorise(accessLevel = 'admin')
163+
def downloadProjectDataSets(String id, String format) {
164+
if (!id) {
165+
render status: HttpStatus.NOT_FOUND
166+
return
167+
}
168+
List supportedFormats = grailsApplication.config.getProperty('bdr.dataSet.formats', List)
169+
if (!format) {
170+
format = supportedFormats[0]
171+
}
172+
if (!format in supportedFormats) {
173+
render status: HttpStatus.BAD_REQUEST
174+
return
175+
}
176+
177+
bdrService.downloadProjectDataSet(id, format, response)
178+
}
179+
161180
@PreAuthorise(accessLevel = 'admin')
162181
def download(String id, String dataSetId, String format) {
163182
Map projectData = projectData(id)

grails-app/services/au/org/ala/merit/BdrService.groovy

+23-2
Original file line numberDiff line numberDiff line change
@@ -39,16 +39,26 @@ class BdrService {
3939

4040
AccessTokenCache accessTokenCache
4141

42+
void downloadProjectDataSet(String projectId, String format, HttpServletResponse response) {
43+
String query = (projectQuery (projectId) as JSON).toString()
44+
executeBdrQuery(query, format, response)
45+
}
46+
4247
void downloadDataSet(String projectId, String dataSetId, String format, HttpServletResponse response) {
48+
String query = (dataSetQuery(dataSetId) as JSON).toString()
49+
executeBdrQuery(query, format, response)
50+
}
51+
52+
private void executeBdrQuery(String query, String format, HttpServletResponse response) {
4353
String azureToken = getAzureAccessToken()
4454

4555
String bdrBaseUrl = grailsApplication.config.getProperty('bdr.api.url')
4656
Integer readTimeout = grailsApplication.config.getProperty('bdr.api.readTimeout', Integer, 60000)
4757
format = URLEncoder.encode(format, 'UTF-8')
4858
String url = bdrBaseUrl+'/cql?_mediatype='+format
49-
String query = (dataSetQuery(dataSetId) as JSON).toString()
5059
String encodedQuery = URLEncoder.encode(query, "UTF-8")
5160

61+
url+="&_profile="+"bdr-feature-human"
5262
url+="&filter="+encodedQuery
5363

5464
log.info("Downloading data set from BDR: $url")
@@ -89,7 +99,7 @@ class BdrService {
8999
accessToken.getToken()
90100
}
91101

92-
private Map dataSetQuery(String dataSetId) {
102+
private static Map dataSetQuery(String dataSetId) {
93103
Map query = [
94104
"op": "and",
95105
"args": [
@@ -100,6 +110,17 @@ class BdrService {
100110
query
101111
}
102112

113+
private static Map projectQuery(String projectId) {
114+
Map query = [
115+
"op": "and",
116+
"args": [
117+
["op":"=","args":[["property":"https://schema.org/isPartOf"], "https://linked.data.gov.au/dataset/bdr/"+projectId]],
118+
["op":"=","args":[["property":"http://www.w3.org/1999/02/22-rdf-syntax-ns#type"],"http://www.opengis.net/ont/geosparql#Feature"]]
119+
]
120+
]
121+
query
122+
}
123+
103124

104125
String getTokenFromCognitoIdentityPool(String userToken) {
105126

0 commit comments

Comments
 (0)