Author: ijd
Date: Fri Jun 13 12:02:20 2014
New Revision: 1602400
URL: http://svn.apache.org/r1602400
Log:
Switch to using Graph Store Protocol to upload data
Modified:
jena/Experimental/jena-fuseki2/src/main/webapp/css/fui.css
jena/Experimental/jena-fuseki2/src/main/webapp/js/app/models/dataset.js
jena/Experimental/jena-fuseki2/src/main/webapp/js/app/templates/file-upload.tpl
jena/Experimental/jena-fuseki2/src/main/webapp/js/app/views/file-upload.js
Modified: jena/Experimental/jena-fuseki2/src/main/webapp/css/fui.css
URL:
http://svn.apache.org/viewvc/jena/Experimental/jena-fuseki2/src/main/webapp/css/fui.css?rev=1602400&r1=1602399&r2=1602400&view=diff
==============================================================================
--- jena/Experimental/jena-fuseki2/src/main/webapp/css/fui.css (original)
+++ jena/Experimental/jena-fuseki2/src/main/webapp/css/fui.css Fri Jun 13
12:02:20 2014
@@ -142,3 +142,8 @@ a.navbar-brand img {
.file-description {
margin-top: 10px;
}
+
+.graph-label label {
+ text-align: right;
+ padding-top: 5px;
+}
Modified:
jena/Experimental/jena-fuseki2/src/main/webapp/js/app/models/dataset.js
URL:
http://svn.apache.org/viewvc/jena/Experimental/jena-fuseki2/src/main/webapp/js/app/models/dataset.js?rev=1602400&r1=1602399&r2=1602400&view=diff
==============================================================================
--- jena/Experimental/jena-fuseki2/src/main/webapp/js/app/models/dataset.js
(original)
+++ jena/Experimental/jena-fuseki2/src/main/webapp/js/app/models/dataset.js Fri
Jun 13 12:02:20 2014
@@ -58,21 +58,26 @@ define(
endpointURL: function( serviceType ) {
var url = this.endpointOfType( serviceType );
return url ? sprintf( "%s%s/%s", this.baseURL(), this.name(), url ) :
null;
- } ,
+ },
/** Return the sparql query URL for this dataset, if it has one, or null
*/
queryURL: function() {
return this.endpointURL( "query" ) ;
- } ,
+ },
/** Return the sparql update URL for this dataset, if it has one, or
null */
updateURL: function() {
return this.endpointURL( "update" ) ;
- } ,
+ },
+
+ /** Return the GSP write URL for this dataset, if it has one, or null */
+ graphStoreProtocolURL: function() {
+ return this.endpointURL( "graph store protocol" ) ;
+ },
/** Return the sparql upload URL for this dataset, if it has one, or
null */
- uploadURL: function() {
- return this.endpointURL( "upload" ) ;
+ uploadURL: function( graphName ) {
+ return sprintf( "%s?graph=%s", this.graphStoreProtocolURL(), graphName
);
}
} );
Modified:
jena/Experimental/jena-fuseki2/src/main/webapp/js/app/templates/file-upload.tpl
URL:
http://svn.apache.org/viewvc/jena/Experimental/jena-fuseki2/src/main/webapp/js/app/templates/file-upload.tpl?rev=1602400&r1=1602399&r2=1602400&view=diff
==============================================================================
---
jena/Experimental/jena-fuseki2/src/main/webapp/js/app/templates/file-upload.tpl
(original)
+++
jena/Experimental/jena-fuseki2/src/main/webapp/js/app/templates/file-upload.tpl
Fri Jun 13 12:02:20 2014
@@ -1,40 +1,45 @@
-<div class="col-md-12">
+<div class="col-md-12 ful">
<h2>Upload files</h2>
<p>Load data into the default graph of the currently selected dataset.
To upload data into a named graph, upload a quad format file such as TriG.
</p>
- <div class="col-md-12">
- <form id="fileuploadForm" class="form-horizontal" role="form"
method="POST" enctype="multipart/form-data">
- <div class="form-group hidden">
+ <div class="row">
+ <div class="form-group2 graph-label">
<label for="uploadGraphName" class="col-sm-3
control-label">Destination graph name</label>
<span class="col-sm-9">
- <input type="text" name="graph" id="graphName" placeholder="Leave
blank for default graph" class="form-control">
+ <p>
+ <input type="text" name="graph" id="graphName" placeholder="Leave
blank for default graph" class="form-control">
+ </p>
</span>
</div> <!-- /.form-group -->
+ </div>
-
- <div class="form-group">
- <div class="col-sm-9 col-sm-offset-3">
- <span>
- <span class="btn btn-success fileinput-button">
- <i class="fa fa-plus"></i>
- <span>select files...</span>
- <input id="fileupload" type="file" name="files[]" multiple>
+ <div class="row">
+ <form id="fileuploadForm" class="form-horizontal" role="form"
method="POST" enctype="multipart/form-data">
+ <div class="form-group2">
+ <label class="col-sm-3 control-label">Files to upload</label>
+ <div class="col-sm-9">
+ <span>
+ <span class="btn btn-success fileinput-button">
+ <i class="fa fa-plus"></i>
+ <span>select files...</span>
+ <input id="fileupload" type="file" name="files[]" multiple>
+ </span>
+ <button type="submit" class="btn btn-primary start
action-upload-all" disabled>
+ <i class="fa fa-upload"></i>
+ <span>upload all</span>
+ </button>
</span>
- <button type="submit" class="btn btn-primary start
action-upload-all" disabled>
- <i class="fa fa-upload"></i>
- <span>upload all</span>
- </button>
- </span>
- </div>
- </div> <!-- /.form-group -->
+ </div>
+ </div> <!-- /.form-group -->
- <div class="form-group">
- <div class="col-sm-9 col-sm-offset-3">
- <ul class="list-unstyled">
- </ul>
- </div>
- </div> <!-- /.form-group -->
- </form>
-</div>
\ No newline at end of file
+ <div class="form-group2">
+ <div class="col-sm-9 col-sm-offset-3">
+ <ul class="list-unstyled">
+ </ul>
+ </div>
+ </div> <!-- /.form-group -->
+ </form>
+ </div>
+ </div>
\ No newline at end of file
Modified:
jena/Experimental/jena-fuseki2/src/main/webapp/js/app/views/file-upload.js
URL:
http://svn.apache.org/viewvc/jena/Experimental/jena-fuseki2/src/main/webapp/js/app/views/file-upload.js?rev=1602400&r1=1602399&r2=1602400&view=diff
==============================================================================
--- jena/Experimental/jena-fuseki2/src/main/webapp/js/app/views/file-upload.js
(original)
+++ jena/Experimental/jena-fuseki2/src/main/webapp/js/app/views/file-upload.js
Fri Jun 13 12:02:20 2014
@@ -32,7 +32,8 @@ define(
collection: new Backbone.Collection(),
ui: {
- fileUpload: '#fileuploadForm'
+ fileUpload: '#fileuploadForm',
+ graphLabel: '.graph-label input'
},
events: {
@@ -45,7 +46,7 @@ define(
onRender: function() {
// initialise the file upload widget
this.ui.fileUpload.fileupload( {
- dataType: 'html',
+ dataType: 'json',
add: this.onUploadAdd,
progress: this.onProgress
} );
@@ -137,7 +138,7 @@ define(
var file = model.get( "file" );
var ds = fui.models.fusekiServer.selectedDataset();
- var url = ds.uploadURL();
+ var url = ds.uploadURL( this.destinationGraphName() );
this.ui.fileUpload.fileupload( 'send', {
files: [file],
@@ -147,6 +148,12 @@ define(
.fail( this.onUploadFail );
},
+ /** Return the selected graph name, or 'default' */
+ destinationGraphName: function() {
+ var gName = this.ui.graphLabel.val();
+ return (gName && gName !== "") ? gName : 'default';
+ },
+
/** Callback on progress against an upload */
onProgress: function( e, data ) {
var complete = Math.round( 100.0 * data.loaded/ data.total);
@@ -157,8 +164,13 @@ define(
/** Callback on successful completion */
onUploadDone: function( data, response ) {
- var triples = data.match( /Triples = (\d+)/ )[1];
- this.displayUploadResult( sprintf( "<p><small>Result:
<strong>success</strong>. %s triples</small></p>", triples ), "" );
+ var label = "Data file was empty.";
+ if ((data.count) > 0) {
+ var s = (data.count === 1) ? "" : "s";
+ label = sprintf( "%d %s%s", data.count, ((data.tripleCount > 0) ?
"triple" : "quad"), s );
+ }
+
+ this.displayUploadResult( sprintf( "<p><small>Result:
<strong>success</strong>. %s</small></p>", label ), "" );
if (this.loadAll) {
this.loadNextAvailableFile( true );