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,18 +34,25 @@ class VirtuosoPluginAdminController < AdminController
34 render :action => 'triple_management' 34 render :action => 'triple_management'
35 end 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 end 56 end
50 57
51 def add_triple 58 def add_triple
@@ -65,16 +72,18 @@ class VirtuosoPluginAdminController < AdminController @@ -65,16 +72,18 @@ class VirtuosoPluginAdminController < AdminController
65 end 72 end
66 73
67 def remove_triple 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 end 87 end
79 88
80 end 89 end
plugins/virtuoso/lib/virtuoso_plugin/triples_management.rb
@@ -15,16 +15,8 @@ class VirtuosoPlugin::TriplesManagement @@ -15,16 +15,8 @@ class VirtuosoPlugin::TriplesManagement
15 plugin.virtuoso_client.query(query) 15 plugin.virtuoso_client.query(query)
16 end 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 plugin.virtuoso_client.query(query) 21 plugin.virtuoso_client.query(query)
30 end 22 end
@@ -39,10 +31,4 @@ class VirtuosoPlugin::TriplesManagement @@ -39,10 +31,4 @@ class VirtuosoPlugin::TriplesManagement
39 plugin.virtuoso_client.query(query) 31 plugin.virtuoso_client.query(query)
40 end 32 end
41 33
42 - protected  
43 -  
44 - def format_triple_term(term)  
45 - term =~ /^(http|https):\/\// ? "<#{term}>" : "'#{term}'"  
46 - end  
47 -  
48 end 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 function add_triple() { 39 function add_triple() {
2 graph = jQuery("input#triple_graph").val(); 40 graph = jQuery("input#triple_graph").val();
3 subject = jQuery("input#triple_subject").val(); 41 subject = jQuery("input#triple_subject").val();
plugins/virtuoso/views/virtuoso_plugin_admin/triple_management.html.erb
@@ -36,6 +36,7 @@ @@ -36,6 +36,7 @@
36 <%= labelled_form_field(_('Object:'), text_field_tag("triples[triple#{triple_counter}[to][object]]", triple[:o].to_s) ) %> 36 <%= labelled_form_field(_('Object:'), text_field_tag("triples[triple#{triple_counter}[to][object]]", triple[:o].to_s) ) %>
37 </li> 37 </li>
38 <li class="triple-actions"> 38 <li class="triple-actions">
  39 + <%= button :save, _('Update triple'), {}, :href => '#', :onclick => "update_triple(#{triple_counter}); return false;" %>
39 <%= button :remove, _('Remove triple'), {}, :href => '#', :onclick => "remove_triple(#{triple_counter}); return false;" %> 40 <%= button :remove, _('Remove triple'), {}, :href => '#', :onclick => "remove_triple(#{triple_counter}); return false;" %>
40 </li> 41 </li>
41 </ul> 42 </ul>
@@ -47,10 +48,6 @@ @@ -47,10 +48,6 @@
47 48
48 </ul> 49 </ul>
49 50
50 - <% button_bar do %>  
51 - <%= submit_button(:save, _('Save')) %>  
52 - <% end %>  
53 -  
54 <% end %> 51 <% end %>
55 52
56 <% end %> 53 <% end %>