Commit e517e511a96006da3e0ffdb57d16d5b778bcf80d

Authored by Francisco Júnior
1 parent e7db5197

virtuoso: improve triples management feature

plugins/virtuoso/controllers/virtuoso_plugin_admin_controller.rb
... ... @@ -34,18 +34,25 @@ class VirtuosoPluginAdminController < AdminController
34 34 render :action => 'triple_management'
35 35 end
36 36  
37   - def triple_update
38   - graph_uri = params[:graph_uri]
39   - triples = params[:triples]
  37 + def update_triple
  38 + if request.post?
  39 + from_triple = VirtuosoPlugin::Triple.new
  40 + from_triple.graph = params[:from_triple][:graph]
  41 + from_triple.subject = params[:from_triple][:subject]
  42 + from_triple.predicate = params[:from_triple][:predicate]
  43 + from_triple.object = params[:from_triple][:object]
40 44  
41   - triples_management = VirtuosoPlugin::TriplesManagement.new(environment)
  45 + to_triple = VirtuosoPlugin::Triple.new
  46 + to_triple.graph = params[:to_triple][:graph]
  47 + to_triple.subject = params[:to_triple][:subject]
  48 + to_triple.predicate = params[:to_triple][:predicate]
  49 + to_triple.object = params[:to_triple][:object]
42 50  
43   - triples.each { |triple_key, triple_content|
44   - triples_management.update_triple(graph_uri, triple_content[:from], triple_content[:to])
45   - }
  51 + triples_management = VirtuosoPlugin::TriplesManagement.new(environment)
  52 + triples_management.update_triple(from_triple, to_triple)
46 53  
47   - session[:notice] = _('Triple(s) succesfully updated.')
48   - redirect_to :action => :triple_management
  54 + render json: { :ok => true, :message => _('Triple succesfully updated.') }
  55 + end
49 56 end
50 57  
51 58 def add_triple
... ... @@ -65,16 +72,18 @@ class VirtuosoPluginAdminController < AdminController
65 72 end
66 73  
67 74 def remove_triple
68   - triple = VirtuosoPlugin::Triple.new
69   - triple.graph = params[:triple][:graph]
70   - triple.subject = params[:triple][:subject]
71   - triple.predicate = params[:triple][:predicate]
72   - triple.object = params[:triple][:object]
  75 + if request.post?
  76 + triple = VirtuosoPlugin::Triple.new
  77 + triple.graph = params[:triple][:graph]
  78 + triple.subject = params[:triple][:subject]
  79 + triple.predicate = params[:triple][:predicate]
  80 + triple.object = params[:triple][:object]
73 81  
74   - triples_management = VirtuosoPlugin::TriplesManagement.new(environment)
75   - triples_management.remove_triple(triple)
  82 + triples_management = VirtuosoPlugin::TriplesManagement.new(environment)
  83 + triples_management.remove_triple(triple)
76 84  
77   - render json: { :ok => true, :message => _('Triple succesfully removed.') }
  85 + render json: { :ok => true, :message => _('Triple succesfully removed.') }
  86 + end
78 87 end
79 88  
80 89 end
... ...
plugins/virtuoso/lib/virtuoso_plugin/triples_management.rb
... ... @@ -15,16 +15,8 @@ class VirtuosoPlugin::TriplesManagement
15 15 plugin.virtuoso_client.query(query)
16 16 end
17 17  
18   - def update_triple(graph_uri, from_triple, to_triple)
19   - from_subject = from_triple[:subject]
20   - from_predicate = from_triple[:predicate]
21   - from_object = format_triple_term(from_triple[:object])
22   -
23   - to_subject = to_triple[:subject]
24   - to_predicate = to_triple[:predicate]
25   - to_object = format_triple_term(to_triple[:object])
26   -
27   - query = "WITH <#{graph_uri}> DELETE { <#{from_subject}> <#{from_predicate}> #{from_object} } INSERT { <#{to_subject}> <#{to_predicate}> #{to_object} }"
  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} }"
28 20  
29 21 plugin.virtuoso_client.query(query)
30 22 end
... ... @@ -39,10 +31,4 @@ class VirtuosoPlugin::TriplesManagement
39 31 plugin.virtuoso_client.query(query)
40 32 end
41 33  
42   - protected
43   -
44   - def format_triple_term(term)
45   - term =~ /^(http|https):\/\// ? "<#{term}>" : "'#{term}'"
46   - end
47   -
48 34 end
... ...
plugins/virtuoso/public/triples_management.js
  1 +function update_triple(triple_id) {
  2 + graph = jQuery("input#graph_uri").val();
  3 +
  4 + from_subject = jQuery("input#triples_triple" + triple_id + "_from_subject").val();
  5 + from_predicate = jQuery("input#triples_triple" + triple_id + "_from_predicate").val();
  6 + from_object = jQuery("input#triples_triple" + triple_id + "_from_object").val();
  7 +
  8 + to_subject = jQuery("input#triples_triple" + triple_id + "_to_subject").val();
  9 + to_predicate = jQuery("input#triples_triple" + triple_id + "_to_predicate").val();
  10 + to_object = jQuery("input#triples_triple" + triple_id + "_to_object").val();
  11 +
  12 + var formData = {
  13 + from_triple: { graph: graph, subject: from_subject, predicate: from_predicate, object: from_object },
  14 + to_triple: { graph: graph, subject: to_subject, predicate: to_predicate, object: to_object }
  15 + }
  16 +
  17 + jQuery.ajax({
  18 + cache: false,
  19 + type: 'POST',
  20 + url: '/admin/plugin/virtuoso/update_triple',
  21 + data: formData,
  22 + dataType: 'json',
  23 + success: function(data, status, ajax){
  24 + if ( !data.ok ) {
  25 + display_notice(data.error.message);
  26 + }
  27 + else {
  28 + display_notice(data.message);
  29 + jQuery("input#triples_triple" + triple_id + "_from_object").val(jQuery("input#triples_triple" + triple_id + "_to_object").val());
  30 + }
  31 + },
  32 + error: function(ajax, status, errorThrown) {
  33 + alert('Send request - HTTP '+status+': '+errorThrown);
  34 + }
  35 + });
  36 +
  37 +}
  38 +
1 39 function add_triple() {
2 40 graph = jQuery("input#triple_graph").val();
3 41 subject = jQuery("input#triple_subject").val();
... ...
plugins/virtuoso/views/virtuoso_plugin_admin/triple_management.html.erb
... ... @@ -36,6 +36,7 @@
36 36 <%= labelled_form_field(_('Object:'), text_field_tag("triples[triple#{triple_counter}[to][object]]", triple[:o].to_s) ) %>
37 37 </li>
38 38 <li class="triple-actions">
  39 + <%= button :save, _('Update triple'), {}, :href => '#', :onclick => "update_triple(#{triple_counter}); return false;" %>
39 40 <%= button :remove, _('Remove triple'), {}, :href => '#', :onclick => "remove_triple(#{triple_counter}); return false;" %>
40 41 </li>
41 42 </ul>
... ... @@ -47,10 +48,6 @@
47 48  
48 49 </ul>
49 50  
50   - <% button_bar do %>
51   - <%= submit_button(:save, _('Save')) %>
52   - <% end %>
53   -
54 51 <% end %>
55 52  
56 53 <% end %>
... ...