Skip to content

Commit

Permalink
regions import and better feedback
Browse files Browse the repository at this point in the history
  • Loading branch information
djtfmartin committed Oct 17, 2015
1 parent ffb15b7 commit 13afe6e
Show file tree
Hide file tree
Showing 7 changed files with 140 additions and 12 deletions.
20 changes: 20 additions & 0 deletions grails-app/controllers/au/org/ala/bie/ImportController.groovy
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,8 @@ class ImportController {

def layers(){}

def regions(){}

/**
* Import a DwC-A into this system.
*
Expand Down Expand Up @@ -86,6 +88,24 @@ class ImportController {
}
}

/**
* Import information from layers.
*
* @return
*/
def importRegions(){
if(grailsApplication.config.layersServicesUrl){
Thread.start {
log.info("Starting import of layers....")
importService.importRegions()
log.info("Finished import of layers.")
}
asJson ([success:true] )
} else {
asJson ([success: false, message: 'layersServicesUrl not configured'] )
}
}

private def asJson = { model ->
response.setContentType("application/json;charset=UTF-8")
model
Expand Down
35 changes: 33 additions & 2 deletions grails-app/services/au/org/ala/bie/ImportService.groovy
Original file line number Diff line number Diff line change
Expand Up @@ -129,21 +129,52 @@ class ImportService {
*/
def importLayers(){
def js = new JsonSlurper()
def layers = js.parseText(new URL(grailsApplication.config.layersServicesUrl + "/layers").getText("UTF-8"))
def url = grailsApplication.config.layersServicesUrl + "/layers"
log("Requesting layer list from : " + url)
def layers = js.parseText(new URL(url).getText("UTF-8"))
def batch = []
indexService.deleteFromIndex(IndexDocType.LAYER)
layers.each { layer ->
def doc = [:]
doc["id"] = layer.name
doc["guid"] = layer.name
doc["idxtype"] = IndexDocType.LAYER.name()
doc["name"] = layer.displayname
doc["description"] = layer.description
log("Importing layer: " + layer.displayname)
batch << doc
}
indexService.indexBatch(batch)
log("Finished indexing ${layers.size()} layers")
}

def importRegions(){
def js = new JsonSlurper()
def layers = js.parseText(new URL(grailsApplication.config.layersServicesUrl + "/layers").getText("UTF-8"))
indexService.deleteFromIndex(IndexDocType.REGION)
layers.each { layer ->
if(layer.type == "Contextual") {
log("Loading regions from layer " + layer.name)
def batch = []
def objects = js.parseText(new URL(grailsApplication.config.layersServicesUrl + "/objects/cl" + layer.id).getText("UTF-8"))
objects.each { object ->

def doc = [:]
doc["id"] = object.id
doc["guid"] = object.pid
doc["idxtype"] = IndexDocType.REGION.name()
doc["name"] = object.name
doc["description"] = layer.displayname
batch << doc
}
if(batch){
indexService.indexBatch(batch)
}
}
}
log("Finished indexing ${layers.size()} region layers")
}

/**
* Import collectory information into the index.
*
Expand Down Expand Up @@ -651,6 +682,6 @@ class ImportService {

def log(msg){
log.info(msg)
brokerMessagingTemplate.convertAndSend "/topic/import-dwca", msg.toString()
brokerMessagingTemplate.convertAndSend "/topic/import-feedback", msg.toString()
}
}
5 changes: 3 additions & 2 deletions grails-app/views/admin/index.gsp
Original file line number Diff line number Diff line change
Expand Up @@ -2,15 +2,16 @@
<html>
<head>
<meta name="layout" content="${grailsApplication.config.skin.layout}"/>
<title>Admin |BIE Web services | ${grailsApplication.config.skin.orgNameLong}</title>
<title>Admin | BIE Web services | ${grailsApplication.config.skin.orgNameLong}</title>
</head>
<body>
<div id="page-body" role="main">
<h2>Admin tools</h2>
<h2>BIE Web services - Admin tools</h2>
<ul>
<li><g:link controller="import" action="index">Taxonomy import tool</g:link> - import DwC-A with taxonomic information</li>
<li><g:link controller="import" action="collectory">Collectory import tool</g:link> - import collectory information</li>
<li><g:link controller="import" action="layers">Layer import tool</g:link> - import layer information</li>
<li><g:link controller="import" action="regions">Region import tool</g:link> - import regions information</li>
</ul>
</div>
</body>
Expand Down
14 changes: 13 additions & 1 deletion grails-app/views/import/collectory.gsp
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
<head>
<title></title>
<meta name="layout" content="${grailsApplication.config.skin.layout}"/>
<r:require modules="sockets" />
</head>
<body>
<div>
Expand All @@ -24,10 +25,10 @@

<div class="well import-info alert-info hide" style="margin-top:20px;">
<p></p>
<p id="import-info-web-socket"></p>
</div>

<r:script>

function loadCollectoryInfo(){
$.get("${createLink(controller:'import', action:'importCollectory')}", function( data ) {
if(data.success){
Expand All @@ -39,7 +40,18 @@
$('.import-info').removeClass('hide');
});
}
</r:script>

<r:script>
$(function() {
var socket = new SockJS("${createLink(uri: '/stomp')}");
var client = Stomp.over(socket);
client.connect({}, function() {
client.subscribe("/topic/import-feedback", function(message) {
$("#import-info-web-socket").append('<br/>' + message.body);
});
});
});
</r:script>
</div>
</body>
Expand Down
6 changes: 1 addition & 5 deletions grails-app/views/import/index.gsp
Original file line number Diff line number Diff line change
Expand Up @@ -49,7 +49,6 @@

<div class="well import-info alert-info hide" style="margin-top:20px;">
<p></p>

<p id="import-info-web-socket"></p>
</div>

Expand Down Expand Up @@ -78,22 +77,19 @@
$('.import-info').removeClass('hide');
});
}

</r:script>


<r:script>
$(function() {
var socket = new SockJS("${createLink(uri: '/stomp')}");
var client = Stomp.over(socket);
client.connect({}, function() {
client.subscribe("/topic/import-dwca", function(message) {
client.subscribe("/topic/import-feedback", function(message) {
$("#import-info-web-socket").append('<br/>' + message.body);
});
});
});
</r:script>

</div>
</body>
</html>
15 changes: 13 additions & 2 deletions grails-app/views/import/layers.gsp
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
<head>
<title></title>
<meta name="layout" content="${grailsApplication.config.skin.layout}"/>
<r:require modules="sockets" />
</head>
<body>
<div>
Expand All @@ -24,10 +25,10 @@

<div class="well import-info alert-info hide" style="margin-top:20px;">
<p></p>
<p id="import-info-web-socket"></p>
</div>

<r:script>

function loadInfo(){
$.get("${createLink(controller:'import', action:'importLayers')}", function( data ) {
if(data.success){
Expand All @@ -39,7 +40,17 @@
$('.import-info').removeClass('hide');
});
}

</r:script>
<r:script>
$(function() {
var socket = new SockJS("${createLink(uri: '/stomp')}");
var client = Stomp.over(socket);
client.connect({}, function() {
client.subscribe("/topic/import-feedback", function(message) {
$("#import-info-web-socket").append('<br/>' + message.body);
});
});
});
</r:script>
</div>
</body>
Expand Down
57 changes: 57 additions & 0 deletions grails-app/views/import/regions.gsp
Original file line number Diff line number Diff line change
@@ -0,0 +1,57 @@
<%@ page contentType="text/html;charset=UTF-8" %>
<html>
<head>
<title></title>
<meta name="layout" content="${grailsApplication.config.skin.layout}"/>
<r:require modules="sockets" />
</head>
<body>
<div>
<!-- Breadcrumb -->
<ol class="breadcrumb">
<li><a class="font-xxsmall" href="../">Home</a></li>
<li class="font-xxsmall active" href="#">Import</li>
</ol>
<!-- End Breadcrumb -->
<h2 class="heading-medium">Regions import</h2>

<p class="lead">
Reload regions information into the main search index
</p>

<div>
<button id="start-import" onclick="javascript:loadInfo()" class="btn btn-primary">Import regions information</button>
</div>

<div class="well import-info alert-info hide" style="margin-top:20px;">
<p></p>
<p id="import-info-web-socket"></p>
</div>

<r:script>
function loadInfo(){
$.get("${createLink(controller:'import', action:'importRegions')}", function( data ) {
if(data.success){
$('.import-info p').html('Import successfully started....')
$('#start-import').prop('disabled', true);
} else {
$('.import-info p').html('Import failed. Check file path...')
}
$('.import-info').removeClass('hide');
});
}
</r:script>
<r:script>
$(function() {
var socket = new SockJS("${createLink(uri: '/stomp')}");
var client = Stomp.over(socket);
client.connect({}, function() {
client.subscribe("/topic/import-feedback", function(message) {
$("#import-info-web-socket").append('<br/>' + message.body);
});
});
});
</r:script>
</div>
</body>
</html>

0 comments on commit 13afe6e

Please sign in to comment.