Commit 6b09f6b6348a88eddf1efef1d9ded38d7f9a53e6
Exists in
theme-brasil-digital-from-staging
and in
9 other branches
Merge branch 'virtuoso_integration' of gitlab.com:participa/noosfero into virtuoso_integration
Showing
5 changed files
with
59 additions
and
44 deletions
Show diff stats
plugins/virtuoso/controllers/virtuoso_plugin_admin_controller.rb
| @@ -47,15 +47,16 @@ class VirtuosoPluginAdminController < AdminController | @@ -47,15 +47,16 @@ class VirtuosoPluginAdminController < AdminController | ||
| 47 | to_triple.object = params[:to_triple][:object] | 47 | to_triple.object = params[:to_triple][:object] |
| 48 | 48 | ||
| 49 | triples_management = VirtuosoPlugin::TriplesManagement.new(environment) | 49 | triples_management = VirtuosoPlugin::TriplesManagement.new(environment) |
| 50 | - triples_management.update_triple(from_triple, to_triple) | ||
| 51 | 50 | ||
| 52 | - render json: { :ok => true, :message => _('Triple succesfully updated.') } | 51 | + triple_updated = triples_management.update_triple(from_triple, to_triple) |
| 52 | + message = triple_updated ? _('Triple succesfully updated.') : _('Triple not updated.') | ||
| 53 | + | ||
| 54 | + render json: { :ok => triple_updated, :message => message } | ||
| 53 | end | 55 | end |
| 54 | end | 56 | end |
| 55 | 57 | ||
| 56 | def add_triple | 58 | def add_triple |
| 57 | if request.post? | 59 | if request.post? |
| 58 | - | ||
| 59 | triple = VirtuosoPlugin::Triple.new | 60 | triple = VirtuosoPlugin::Triple.new |
| 60 | triple.graph = params[:triple][:graph] | 61 | triple.graph = params[:triple][:graph] |
| 61 | triple.subject = params[:triple][:subject] | 62 | triple.subject = params[:triple][:subject] |
| @@ -63,9 +64,11 @@ class VirtuosoPluginAdminController < AdminController | @@ -63,9 +64,11 @@ class VirtuosoPluginAdminController < AdminController | ||
| 63 | triple.object = params[:triple][:object] | 64 | triple.object = params[:triple][:object] |
| 64 | 65 | ||
| 65 | triples_management = VirtuosoPlugin::TriplesManagement.new(environment) | 66 | triples_management = VirtuosoPlugin::TriplesManagement.new(environment) |
| 66 | - triples_management.add_triple(triple) | ||
| 67 | 67 | ||
| 68 | - render json: { :ok => true, :message => _('Triple succesfully added.') } | 68 | + triple_added = triples_management.add_triple(triple) |
| 69 | + message = triple_added ? _('Triple succesfully added.') : _('Triple not added.') | ||
| 70 | + | ||
| 71 | + render json: { :ok => triple_added, :message => message } | ||
| 69 | end | 72 | end |
| 70 | end | 73 | end |
| 71 | 74 | ||
| @@ -78,9 +81,11 @@ class VirtuosoPluginAdminController < AdminController | @@ -78,9 +81,11 @@ class VirtuosoPluginAdminController < AdminController | ||
| 78 | triple.object = params[:triple][:object] | 81 | triple.object = params[:triple][:object] |
| 79 | 82 | ||
| 80 | triples_management = VirtuosoPlugin::TriplesManagement.new(environment) | 83 | triples_management = VirtuosoPlugin::TriplesManagement.new(environment) |
| 81 | - triples_management.remove_triple(triple) | ||
| 82 | 84 | ||
| 83 | - render json: { :ok => true, :message => _('Triple succesfully removed.') } | 85 | + triple_deleted = triples_management.remove_triple(triple) |
| 86 | + message = triple_deleted ? _('Triple succesfully removed.') : _('Triple not removed.') | ||
| 87 | + | ||
| 88 | + render json: { :ok => triple_deleted, :message => message } | ||
| 84 | end | 89 | end |
| 85 | end | 90 | end |
| 86 | 91 |
plugins/virtuoso/lib/virtuoso_plugin/triples_management.rb
| @@ -18,17 +18,37 @@ class VirtuosoPlugin::TriplesManagement | @@ -18,17 +18,37 @@ class VirtuosoPlugin::TriplesManagement | ||
| 18 | def update_triple(from_triple, to_triple) | 18 | def update_triple(from_triple, to_triple) |
| 19 | query = "WITH <#{from_triple.graph}> DELETE { <#{from_triple.subject}> <#{from_triple.predicate}> #{from_triple.object} } INSERT { <#{to_triple.subject}> <#{to_triple.predicate}> #{to_triple.object} }" | 19 | query = "WITH <#{from_triple.graph}> DELETE { <#{from_triple.subject}> <#{from_triple.predicate}> #{from_triple.object} } INSERT { <#{to_triple.subject}> <#{to_triple.predicate}> #{to_triple.object} }" |
| 20 | 20 | ||
| 21 | - plugin.virtuoso_client.query(query) | 21 | + begin |
| 22 | + query_result = plugin.virtuoso_client.query(query)[0][:"callret-0"].to_s | ||
| 23 | + rescue RDF::Virtuoso::Repository::MalformedQuery => e | ||
| 24 | + query_result = e.to_s | ||
| 25 | + end | ||
| 26 | + | ||
| 27 | + return query_result =~ /^Modify.*done$/ ? true : false | ||
| 22 | end | 28 | end |
| 23 | 29 | ||
| 24 | def add_triple(triple) | 30 | def add_triple(triple) |
| 25 | query = "WITH <#{triple.graph}> INSERT { <#{triple.subject}> <#{triple.predicate}> #{triple.object} }" | 31 | query = "WITH <#{triple.graph}> INSERT { <#{triple.subject}> <#{triple.predicate}> #{triple.object} }" |
| 26 | - plugin.virtuoso_client.query(query) | 32 | + |
| 33 | + begin | ||
| 34 | + query_result = plugin.virtuoso_client.query(query)[0][:"callret-0"].to_s | ||
| 35 | + rescue RDF::Virtuoso::Repository::MalformedQuery => e | ||
| 36 | + query_result = e.to_s | ||
| 37 | + end | ||
| 38 | + | ||
| 39 | + return query_result =~ /^Insert.*done$/ ? true : false | ||
| 27 | end | 40 | end |
| 28 | 41 | ||
| 29 | def remove_triple(triple) | 42 | def remove_triple(triple) |
| 30 | query = "WITH <#{triple.graph}> DELETE { <#{triple.subject}> <#{triple.predicate}> #{triple.object} }" | 43 | query = "WITH <#{triple.graph}> DELETE { <#{triple.subject}> <#{triple.predicate}> #{triple.object} }" |
| 31 | - plugin.virtuoso_client.query(query) | 44 | + |
| 45 | + begin | ||
| 46 | + query_result = plugin.virtuoso_client.query(query)[0][:"callret-0"].to_s | ||
| 47 | + rescue RDF::Virtuoso::Repository::MalformedQuery => e | ||
| 48 | + query_result = e.to_s | ||
| 49 | + end | ||
| 50 | + | ||
| 51 | + return query_result =~ /^Delete.*done$/ ? true : false | ||
| 32 | end | 52 | end |
| 33 | 53 | ||
| 34 | end | 54 | end |
plugins/virtuoso/public/triples_management.js
| @@ -20,17 +20,14 @@ function update_triple(triple_id) { | @@ -20,17 +20,14 @@ function update_triple(triple_id) { | ||
| 20 | url: '/admin/plugin/virtuoso/update_triple', | 20 | url: '/admin/plugin/virtuoso/update_triple', |
| 21 | data: formData, | 21 | data: formData, |
| 22 | dataType: 'json', | 22 | dataType: 'json', |
| 23 | - success: function(data, status, ajax){ | 23 | + success: function(data, status, ajax) { |
| 24 | if ( !data.ok ) { | 24 | if ( !data.ok ) { |
| 25 | - display_notice(data.error.message); | 25 | + display_notice(data.message); |
| 26 | } | 26 | } |
| 27 | else { | 27 | else { |
| 28 | display_notice(data.message); | 28 | display_notice(data.message); |
| 29 | jQuery("input#triples_triple" + triple_id + "_from_object").val(jQuery("input#triples_triple" + triple_id + "_to_object").val()); | 29 | jQuery("input#triples_triple" + triple_id + "_from_object").val(jQuery("input#triples_triple" + triple_id + "_to_object").val()); |
| 30 | } | 30 | } |
| 31 | - }, | ||
| 32 | - error: function(ajax, status, errorThrown) { | ||
| 33 | - alert('Send request - HTTP '+status+': '+errorThrown); | ||
| 34 | } | 31 | } |
| 35 | }); | 32 | }); |
| 36 | 33 | ||
| @@ -50,18 +47,9 @@ function add_triple() { | @@ -50,18 +47,9 @@ function add_triple() { | ||
| 50 | url: '/admin/plugin/virtuoso/add_triple', | 47 | url: '/admin/plugin/virtuoso/add_triple', |
| 51 | data: formData, | 48 | data: formData, |
| 52 | dataType: 'json', | 49 | dataType: 'json', |
| 53 | - success: function(data, status, ajax){ | ||
| 54 | - if ( !data.ok ) { | ||
| 55 | - display_notice(data.error.message); | ||
| 56 | - jQuery.colorbox.close(); | ||
| 57 | - } | ||
| 58 | - else { | ||
| 59 | - display_notice(data.message); | ||
| 60 | - jQuery.colorbox.close(); | ||
| 61 | - } | ||
| 62 | - }, | ||
| 63 | - error: function(ajax, status, errorThrown) { | ||
| 64 | - alert('Send request - HTTP '+status+': '+errorThrown); | 50 | + success: function(data, status, ajax) { |
| 51 | + display_notice(data.message); | ||
| 52 | + jQuery.colorbox.close(); | ||
| 65 | } | 53 | } |
| 66 | }); | 54 | }); |
| 67 | 55 | ||
| @@ -84,7 +72,7 @@ function remove_triple(triple_id) { | @@ -84,7 +72,7 @@ function remove_triple(triple_id) { | ||
| 84 | dataType: 'json', | 72 | dataType: 'json', |
| 85 | success: function(data, status, ajax){ | 73 | success: function(data, status, ajax){ |
| 86 | if ( !data.ok ) { | 74 | if ( !data.ok ) { |
| 87 | - display_notice(data.error.message); | 75 | + display_notice(data.message); |
| 88 | } | 76 | } |
| 89 | else { | 77 | else { |
| 90 | display_notice(data.message); | 78 | display_notice(data.message); |
| @@ -97,9 +85,6 @@ function remove_triple(triple_id) { | @@ -97,9 +85,6 @@ function remove_triple(triple_id) { | ||
| 97 | } | 85 | } |
| 98 | }); | 86 | }); |
| 99 | } | 87 | } |
| 100 | - }, | ||
| 101 | - error: function(ajax, status, errorThrown) { | ||
| 102 | - alert('Send request - HTTP '+status+': '+errorThrown); | ||
| 103 | } | 88 | } |
| 104 | }); | 89 | }); |
| 105 | 90 |
plugins/virtuoso/test/functional/virtuoso_plugin_admin_controller_test.rb
| @@ -8,7 +8,6 @@ class VirtuosoPluginAdminControllerTest < ActionController::TestCase | @@ -8,7 +8,6 @@ class VirtuosoPluginAdminControllerTest < ActionController::TestCase | ||
| 8 | @environment = Environment.default | 8 | @environment = Environment.default |
| 9 | @profile = create_user('profile').person | 9 | @profile = create_user('profile').person |
| 10 | login_as(@profile.identifier) | 10 | login_as(@profile.identifier) |
| 11 | - post :index, :settings => mock_settings | ||
| 12 | end | 11 | end |
| 13 | 12 | ||
| 14 | def mock_settings | 13 | def mock_settings |
| @@ -26,6 +25,7 @@ class VirtuosoPluginAdminControllerTest < ActionController::TestCase | @@ -26,6 +25,7 @@ class VirtuosoPluginAdminControllerTest < ActionController::TestCase | ||
| 26 | end | 25 | end |
| 27 | 26 | ||
| 28 | should 'save virtuoso plugin settings' do | 27 | should 'save virtuoso plugin settings' do |
| 28 | + post :index, :settings => mock_settings | ||
| 29 | @settings = Noosfero::Plugin::Settings.new(environment.reload, VirtuosoPlugin) | 29 | @settings = Noosfero::Plugin::Settings.new(environment.reload, VirtuosoPlugin) |
| 30 | assert_equal 'http://virtuoso.noosfero.com', @settings.settings[:virtuoso_uri] | 30 | assert_equal 'http://virtuoso.noosfero.com', @settings.settings[:virtuoso_uri] |
| 31 | assert_equal 'username', @settings.settings[:virtuoso_username] | 31 | assert_equal 'username', @settings.settings[:virtuoso_username] |
| @@ -38,28 +38,33 @@ class VirtuosoPluginAdminControllerTest < ActionController::TestCase | @@ -38,28 +38,33 @@ class VirtuosoPluginAdminControllerTest < ActionController::TestCase | ||
| 38 | assert_redirected_to :action => 'index' | 38 | assert_redirected_to :action => 'index' |
| 39 | end | 39 | end |
| 40 | 40 | ||
| 41 | - | ||
| 42 | should 'redirect to index after save' do | 41 | should 'redirect to index after save' do |
| 43 | post :index, :settings => mock_settings | 42 | post :index, :settings => mock_settings |
| 44 | assert_redirected_to :action => 'index' | 43 | assert_redirected_to :action => 'index' |
| 45 | end | 44 | end |
| 46 | 45 | ||
| 47 | should 'create delayed job to start harvest on force action' do | 46 | should 'create delayed job to start harvest on force action' do |
| 48 | - harvest = VirtuosoPlugin::DspaceHarvest.new(environment) | 47 | + post :index, :settings => mock_settings |
| 48 | + harvest = VirtuosoPlugin::DspaceHarvest.new(environment, "http://dspace1.noosfero.com") | ||
| 49 | assert !harvest.find_job.present? | 49 | assert !harvest.find_job.present? |
| 50 | get :force_harvest | 50 | get :force_harvest |
| 51 | assert harvest.find_job.present? | 51 | assert harvest.find_job.present? |
| 52 | end | 52 | end |
| 53 | 53 | ||
| 54 | should 'force harvest from start' do | 54 | should 'force harvest from start' do |
| 55 | + post :index, :settings => mock_settings | ||
| 55 | get :force_harvest, :from_start => true | 56 | get :force_harvest, :from_start => true |
| 56 | - harvest = VirtuosoPlugin::DspaceHarvest.new(environment) | 57 | + harvest = VirtuosoPlugin::DspaceHarvest.new(environment, "http://dspace2.noosfero.com") |
| 57 | assert harvest.find_job.present? | 58 | assert harvest.find_job.present? |
| 58 | assert_equal nil, harvest.settings.last_harvest | 59 | assert_equal nil, harvest.settings.last_harvest |
| 59 | end | 60 | end |
| 60 | - | ||
| 61 | - should 'force harvest_all from start' do | ||
| 62 | - get :force_harvest, :from_start => true | 61 | + |
| 62 | + should 'not create delayed job to start harvest on force action without settings' do | ||
| 63 | + post :index, :settings => mock_settings | ||
| 64 | + harvest = VirtuosoPlugin::DspaceHarvest.new(environment, "http://dspace8.noosfero.com") | ||
| 65 | + assert !harvest.find_job.present?, "testing if no job is running" | ||
| 66 | + get :force_harvest | ||
| 67 | + assert !harvest.find_job.present?, "testing if no job is running again" | ||
| 63 | end | 68 | end |
| 64 | - | ||
| 65 | -end | ||
| 66 | \ No newline at end of file | 69 | \ No newline at end of file |
| 70 | + | ||
| 71 | +end |
plugins/virtuoso/test/unit/dspace_harvest_test.rb
| @@ -23,6 +23,8 @@ class DspaceHarvestTest < ActiveSupport::TestCase | @@ -23,6 +23,8 @@ class DspaceHarvestTest < ActiveSupport::TestCase | ||
| 23 | end | 23 | end |
| 24 | 24 | ||
| 25 | should 'create delayed job when start' do | 25 | should 'create delayed job when start' do |
| 26 | + @settings = Noosfero::Plugin::Settings.new(environment, VirtuosoPlugin, mock_settings) | ||
| 27 | + @settings.save! | ||
| 26 | harvest = VirtuosoPlugin::DspaceHarvest.new(environment, "http://dspace1.noosfero.com") | 28 | harvest = VirtuosoPlugin::DspaceHarvest.new(environment, "http://dspace1.noosfero.com") |
| 27 | assert !harvest.find_job.present? | 29 | assert !harvest.find_job.present? |
| 28 | harvest.start | 30 | harvest.start |
| @@ -30,16 +32,14 @@ class DspaceHarvestTest < ActiveSupport::TestCase | @@ -30,16 +32,14 @@ class DspaceHarvestTest < ActiveSupport::TestCase | ||
| 30 | end | 32 | end |
| 31 | 33 | ||
| 32 | should 'not duplicate harvest job' do | 34 | should 'not duplicate harvest job' do |
| 35 | + @settings = Noosfero::Plugin::Settings.new(environment, VirtuosoPlugin, mock_settings) | ||
| 36 | + @settings.save! | ||
| 33 | harvest = VirtuosoPlugin::DspaceHarvest.new(environment, "http://dspace1.noosfero.com") | 37 | harvest = VirtuosoPlugin::DspaceHarvest.new(environment, "http://dspace1.noosfero.com") |
| 34 | assert_difference "harvest.find_job.count", 1 do | 38 | assert_difference "harvest.find_job.count", 1 do |
| 35 | 5.times { harvest.start } | 39 | 5.times { harvest.start } |
| 36 | end | 40 | end |
| 37 | end | 41 | end |
| 38 | 42 | ||
| 39 | - should 'harvest all dspaces from start' do | ||
| 40 | - VirtuosoPlugin::DspaceHarvest.harvest_all(environment, true) | ||
| 41 | - end | ||
| 42 | - | ||
| 43 | should 'try to harvest all dspaces from start without any setting' do | 43 | should 'try to harvest all dspaces from start without any setting' do |
| 44 | VirtuosoPlugin::DspaceHarvest.harvest_all(environment, true) | 44 | VirtuosoPlugin::DspaceHarvest.harvest_all(environment, true) |
| 45 | end | 45 | end |