Skip to content

Commit 701b459

Browse files
author
Adam Collins
committed
#468 incremental species-list support
1 parent d07607f commit 701b459

File tree

7 files changed

+66
-33
lines changed

7 files changed

+66
-33
lines changed

gradle.properties

+1-1
Original file line numberDiff line numberDiff line change
@@ -10,4 +10,4 @@ webdriverBinariesVersion=2.6
1010
#chromeDriverVersion=2.45.0
1111
geckodriverVersion=0.24.0
1212
seleniumSafariDriverVersion=3.14.0
13-
alaSecurityLibsVersion=6.2.0
13+
alaSecurityLibsVersion=6.3.0-SNAPSHOT

grails-app/assets/javascripts/spApp/controller/areaReportCtrl.js

+2-2
Original file line numberDiff line numberDiff line change
@@ -349,15 +349,15 @@
349349
{
350350
name: $i18n(372, "Migratory species - EPBC"),
351351
query: {q: areaQ.q, bs: areaQ.bs, ws: areaQ.ws, wkt: areaQ.wkt, qid: areaQ.qid},
352-
link: ListsService.url() + '/speciesListItem/list/' + $SH.migratoryDR,
352+
link: ListsService.urlUi() + $SH.migratoryDR,
353353
linkName: $i18n(373, "Full list"),
354354
extraQ: ["species_list_uid:" + $SH.migratoryDR],
355355
ignore: $SH.listsUrl === '' || $SH.migratoryDR === ''
356356
},
357357
{
358358
name: $i18n(374, "Australian iconic species"),
359359
query: {q: areaQ.q, bs: areaQ.bs, ws: areaQ.ws, wkt: areaQ.wkt, qid: areaQ.qid},
360-
link: ListsService.url() + '/speciesListItem/list/' + $SH.iconicSpeciesDR,
360+
link: ListsService.urlUi() + $SH.iconicSpeciesDR,
361361
linkName: $i18n(373, "Full list"),
362362
extraQ: ["species_list_uid:" + $SH.iconicSpeciesDR],
363363
ignore: $SH.listsUrl === '' || $SH.iconicSpeciesDR === ''

grails-app/assets/javascripts/spApp/controller/createSpeciesListCtrl.js

+1-10
Original file line numberDiff line numberDiff line change
@@ -33,16 +33,7 @@
3333

3434
$scope.maxFileSize = $SH.maxUploadSize;
3535

36-
$scope.listTypes = [
37-
{id: 'OTHER', label: "Other"},
38-
{id: 'SPECIES_CHARACTERS', label: "Species characters list"},
39-
{id: 'CONSERVATION_LIST', label: "Conservation list"},
40-
{id: 'SENSITIVE_LIST', label: "Sensitive list of species"},
41-
{id: 'LOCAL_LIST', label: "Local checklist"},
42-
{id: 'COMMON_TRAIT', label: "Common trait of species"},
43-
{id: 'COMMON_HABITAT', label: "Common habitat of species"},
44-
{id: 'TEST', label: "Test list"}
45-
]
36+
$scope.listTypes = $SH.listTypes;
4637

4738
$scope.newListName = $i18n(375, "My species list");
4839
$scope.newListDescription = '';

grails-app/assets/javascripts/spApp/directive/listsList.js

+1-6
Original file line numberDiff line numberDiff line change
@@ -70,12 +70,7 @@
7070
};
7171

7272
scope.itemUrl = function (item) {
73-
if (ListsService.urlUi()) {
74-
// new species-lists as urlUi defined
75-
return ListsService.urlUi() + '/#/list/' + item.dataResourceUid
76-
} else {
77-
return ListsService.url() + '/speciesListItem/list/' + item.dataResourceUid
78-
}
73+
return ListsService.urlUi() + item.dataResourceUid
7974
};
8075

8176
scope.add = function (item) {

grails-app/conf/application.yml

+30
Original file line numberDiff line numberDiff line change
@@ -212,6 +212,23 @@ lists:
212212
facets: true
213213
migratoryDR: 'dr1005'
214214
iconicSpeciesDR: 'dr781'
215+
listTypes:
216+
- id: 'OTHER'
217+
label: "Other"
218+
- id: 'SPECIES_CHARACTERS'
219+
label: "Species characters list"
220+
- id: 'CONSERVATION_LIST'
221+
label: "Conservation list"
222+
- id: 'SENSITIVE_LIST'
223+
label: "Sensitive list of species"
224+
- id: 'LOCAL_LIST'
225+
label: "Local checklist"
226+
- id: 'COMMON_TRAIT'
227+
label: "Common trait of species"
228+
- id: 'COMMON_HABITAT'
229+
label: "Common habitat of species"
230+
- id: 'TEST'
231+
label: "Test list"
215232
#lists:
216233
# useListWs: true
217234
# url: 'http://localhost:8080'
@@ -221,6 +238,19 @@ lists:
221238
# facets: true
222239
# migratoryDR: 'dr1005'
223240
# iconicSpeciesDR: 'dr781'
241+
# listTypes:
242+
# - id: 'CONSERVATION_LIST'
243+
# label: "Conservation species list"
244+
# - id: 'SENSITIVE_LIST'
245+
# label: "Sensitive list"
246+
# - id: 'INVASIVE'
247+
# label: "Invasive species list"
248+
# - id: 'COMMON_TRAIT'
249+
# label: "Traits"
250+
# - id: 'LOCAL_LIST'
251+
# label: "Local checklist"
252+
# - id: 'SPECIES_CHARACTERS'
253+
# label: "Species characters"
224254

225255
journalmap:
226256
url: 'https://www.journalmap.org'

grails-app/controllers/au/org/ala/spatial/portal/PortalController.groovy

+29-13
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,6 @@ import org.apache.commons.lang.StringUtils
99
import org.apache.http.client.methods.HttpGet
1010
import org.apache.http.client.methods.HttpPost
1111
import org.apache.http.entity.ContentType
12-
import org.jasig.cas.client.util.CommonUtils
1312
import org.springframework.web.multipart.MultipartFile
1413
import org.springframework.web.multipart.MultipartHttpServletRequest
1514

@@ -378,19 +377,36 @@ class PortalController {
378377

379378
def r
380379
if (grailsApplication.config.lists.useListWs) {
381-
// format input
382-
/*
383-
{
384-
"listName": name,
385-
"listItems": items,
386-
"description": description,
387-
"isPrivate": makePrivate,
388-
"listType": listType
389-
}
390-
*/
391-
r = webService.post("${url}/upload", json, null, ContentType.APPLICATION_JSON, false, true)
380+
// create tmp file
381+
File tmpFile = File.createTempFile("spatial-species-list-",".csv")
382+
BufferedWriter fw = new BufferedWriter(new FileWriter(tmpFile))
383+
fw.writeLine("taxonID")
384+
for (String item : json.listItems.split(",")) {
385+
fw.writeLine(item)
386+
}
387+
fw.flush()
388+
fw.close()
389+
390+
r = webService.postMultipart("${url}/upload", null, null, [file: tmpFile], ContentType.APPLICATION_JSON, false, true)
391+
392+
tmpFile.delete()
392393

393-
r = webService.post("${url}/ingest/${speciesListID}", json, null, ContentType.APPLICATION_JSON, false, true)
394+
if (r.statusCode == 200) {
395+
def metadata = [
396+
file : r.resp.localFile,
397+
title : json.listName,
398+
description: json.description ?: json.listName,
399+
listType : json.listType,
400+
region : "AUS", // TODO: replicate species-lists behaviour, depends on species-lists issue #83
401+
licence : "CC-BY", // TODO: replicate species-lists behaviour, depends on species-lists issue #83
402+
isPrivate : json.isPrivate
403+
]
404+
405+
r = webService.post("${url}/ingest", metadata, [file: r.resp.localFile], ContentType.APPLICATION_JSON, false, true)
406+
407+
// backward compatible id field
408+
r.resp.druid = r.resp.id
409+
}
394410
} else {
395411
r = webService.post("${url}/ws/speciesList/", json)
396412
}

grails-app/views/portal/index.gsp

+2-1
Original file line numberDiff line numberDiff line change
@@ -40,8 +40,9 @@
4040
layersServiceUrl: '${config.layersService.url}',
4141
samplingUrl: '${config.sampling.url}',
4242
listsUrl: '${config.lists.url}',
43-
listsUrlUi: '${config.lists.urlUi}',
43+
listsUrlUi: '${config.lists.urlUi + (config.lists.useListWs ? "/#/list/" : "/speciesListItem/list/")}',
4444
listsFacets: ${config.lists.facets},
45+
listTypes: ${(config.lists.listTypes as grails.converters.JSON).toString().encodeAsRaw()},
4546
sandboxUrl: '${config.sandbox.url}',
4647
sandboxServiceUrl: '${config.sandboxService.url}',
4748
sandboxUiUrl: '${config.sandbox.uiUrl}',

0 commit comments

Comments
 (0)