Add files via upload

Project: 
http://git-wip-us.apache.org/repos/asf/incubator-taverna-databundle-viewer/repo
Commit: 
http://git-wip-us.apache.org/repos/asf/incubator-taverna-databundle-viewer/commit/590ee999
Tree: 
http://git-wip-us.apache.org/repos/asf/incubator-taverna-databundle-viewer/tree/590ee999
Diff: 
http://git-wip-us.apache.org/repos/asf/incubator-taverna-databundle-viewer/diff/590ee999

Branch: refs/heads/master
Commit: 590ee9998fc452cd106c7829dafe97cd0682e24c
Parents: 043417a
Author: PCStefan <[email protected]>
Authored: Mon Jun 6 12:52:48 2016 +0100
Committer: PCStefan <[email protected]>
Committed: Mon Jun 6 12:52:48 2016 +0100

----------------------------------------------------------------------
 app/decorators/data_bundle_decorator.rb | 90 +++++++++++++++++++++++++---
 1 file changed, 81 insertions(+), 9 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-taverna-databundle-viewer/blob/590ee999/app/decorators/data_bundle_decorator.rb
----------------------------------------------------------------------
diff --git a/app/decorators/data_bundle_decorator.rb 
b/app/decorators/data_bundle_decorator.rb
index 07332cd..b554509 100644
--- a/app/decorators/data_bundle_decorator.rb
+++ b/app/decorators/data_bundle_decorator.rb
@@ -20,15 +20,11 @@
 class DataBundleDecorator < Draper::Decorator
   delegate_all
 
-  FILE_TYPES = {
-      inputs: '/inputs/',
-      intermediates: '/intermediates/',
-      outputs: '/outputs/'
-  }
+  FILE_TYPES = {:inputs => '/inputs/' , :intermediates => '/intermediates/', 
:outputs => 'outputs'}
 
   FILE_TYPES.each do |type_key, type_name|
     define_method :"#{type_key}" do
-      files = manifest['aggregates'].select { |files| 
files['folder'].start_with?(type_name) }
+      files = manifest['aggregates'].select { |file| !file['folder'].nil? && 
file['folder'].start_with?(type_name) }
       result = {}
       files.each do |file|
         key = file['file'].split('/').last.split('.').first
@@ -53,6 +49,7 @@ class DataBundleDecorator < Draper::Decorator
 
   def workflow
     if @workflow.nil?
+
       manifest = 
Nokogiri::XML(File.open("#{object.file_path}#{DataBundle::EXTRACTED_WORKFLOW_PATH}/META-INF/manifest.xml"))
       t2flow_name = 
manifest.xpath('//manifest:file-entry[@manifest:media-type="application/vnd.taverna.t2flow+xml"][@manifest:size]').first['manifest:full-path']
       file = 
File.open("#{object.file_path}#{DataBundle::EXTRACTED_WORKFLOW_PATH}/#{t2flow_name}")
@@ -62,9 +59,48 @@ class DataBundleDecorator < Draper::Decorator
     @workflow
   end
 
-  def to_json
-    stream = []
-    workflow.datalinks.each { |link| stream << write_link(link, workflow) }
+  def to_dataHashObject
+    paths = []
+
+    workflow.datalinks.each do |link|
+      paths << write_link(link, workflow) 
+    end
+
+    stream = {}
+    nodes = []
+    links = []
+
+    paths.each do |path|
+      #get source node
+      source = {:name => path[:source] }
+      target = {:name => path[:target] }
+
+      indexSource = -1
+      indexTarget = -1
+
+      nodes.each_with_index do |node, index|
+        if node[:name].to_s == source[:name]
+          indexSource = index
+        elsif node[:name].to_s == target[:name]
+          indexTarget = index
+        end
+      end
+
+      if indexSource == -1
+        indexSource = nodes.count
+        nodes << source
+      end
+
+      if indexTarget == -1
+        indexTarget = nodes.count
+        nodes << target
+      end
+
+      links << {:source => indexSource, :target => indexTarget, :value => 50}
+
+    end
+
+    stream = {:nodes => nodes, :links => links }
     stream
   end
 
@@ -87,4 +123,40 @@ class DataBundleDecorator < Draper::Decorator
   def processor_by_name(dataflow, name)
     dataflow.processors.select { |p| p.name == name.split(':').first 
}.first.name
   end
+
+
+
+  # find the provenance file
+  # how to extract info from file see http://ruby-rdf.github.io/ , section 
Querying RDF data using basic graph patterns
+  def provenanceMain
+    
+    if @provenance.nil?
+
+      provenanceObj = Provenance.new("#{object.file_path}workflowrun.prov.ttl")
+      @provenance =  provenanceObj.to_dataHashObject("#{object.file_path}")
+
+      # stream = {}
+      # nodes = []
+      # links = []
+
+      # iteration = 12
+
+      # iteration.times do |i|
+      #   nodes << {:name => i, :label => i, :type => "Artifact"}
+      # end 
+
+      # (iteration - 1).times do |i|
+      #   links << {:source => i, :target => i+1, :value => 50}
+      # end
+
+      # stream = {:nodes => nodes, :links => links }
+
+      # @provenance = stream
+
+    end # if provenance
+
+    #return 
+    @provenance 
+  end # def provenance
+
 end

Reply via email to