myexperiment-hackers
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[myexperiment-hackers] [2088] trunk: added components to GET /workflow.x


From: noreply
Subject: [myexperiment-hackers] [2088] trunk: added components to GET /workflow.xml
Date: Thu, 5 Feb 2009 13:07:00 -0500 (EST)

Revision
2088
Author
dgc
Date
2009-02-05 13:06:59 -0500 (Thu, 05 Feb 2009)

Log Message

added components to GET /workflow.xml

Modified Paths

Diff

Modified: trunk/app/models/workflow.rb (2087 => 2088)


--- trunk/app/models/workflow.rb	2009-02-04 16:26:55 UTC (rev 2087)
+++ trunk/app/models/workflow.rb	2009-02-05 18:06:59 UTC (rev 2088)
@@ -201,4 +201,8 @@
     (candidates - existing).sort
   end
 
+  def components
+    processor_class.new(content_blob.data).get_components
+  end
+
 end

Modified: trunk/config/tables.xml


(Binary files differ)

Modified: trunk/lib/rest.rb (2087 => 2088)


--- trunk/lib/rest.rb	2009-02-04 16:26:55 UTC (rev 2087)
+++ trunk/lib/rest.rb	2009-02-05 18:06:59 UTC (rev 2088)
@@ -108,12 +108,27 @@
 
       text = ''
 
-      unless accessor.nil? or model_data['Encoding'][i] == 'file-column'
-        if query['version'] and model_data['Versioned'][i] == 'yes'
-          text = eval("ob.versions[#{(query['version'].to_i - 1).to_s}].#{accessor}").to_s
-        else
-          text = eval("ob.#{accessor}").to_s
-        end
+      case model_data['Encoding'][i]
+
+        when 'file-column'
+
+          # Do nothing
+
+        when 'xml'
+
+          if query['version'] and model_data['Versioned'][i] == 'yes'
+            text = eval("ob.versions[#{(query['version'].to_i - 1).to_s}].#{accessor}")
+          else
+            text = eval("ob.#{accessor}")
+          end
+
+        else 
+
+          if query['version'] and model_data['Versioned'][i] == 'yes'
+            text = eval("ob.versions[#{(query['version'].to_i - 1).to_s}].#{accessor}").to_s
+          else
+            text = eval("ob.#{accessor}").to_s
+          end
       end
 
       attrs = {}
@@ -121,13 +136,19 @@
       case model_data['Encoding'][i]
 
         when 'base64'
+
           text = Base64.encode64(text)
           attrs = { 'type' => 'binary', 'encoding' => 'base64' }
+
         when 'file-column';
+
           text = file_column_url(ob, model_data['Accessor'][i])
       end
 
-      if model_data['Encoding'][i] == 'list'
+      case model_data['Encoding'][i]
+
+        when 'list'
+
         list_element = XML::Node.new(model_data['REST Attribute'][i])
 
         attrs.each do |key,value|
@@ -169,6 +190,10 @@
           end
         end
 
+      when 'xml'
+
+        root << text
+
       else
 
         if model_data['Foreign Accessor'][i]

Modified: trunk/lib/workflow_processors/interface.rb (2087 => 2088)


--- trunk/lib/workflow_processors/interface.rb	2009-02-04 16:26:55 UTC (rev 2087)
+++ trunk/lib/workflow_processors/interface.rb	2009-02-05 18:06:59 UTC (rev 2088)
@@ -90,6 +90,10 @@
       ""
     end
 
+    def get_components
+      XML::Node.new("components")
+    end
+
     # End Instance Methods
     
   end

Modified: trunk/lib/workflow_processors/taverna_scufl.rb (2087 => 2088)


--- trunk/lib/workflow_processors/taverna_scufl.rb	2009-02-04 16:26:55 UTC (rev 2087)
+++ trunk/lib/workflow_processors/taverna_scufl.rb	2009-02-05 18:06:59 UTC (rev 2088)
@@ -157,6 +157,74 @@
       return get_scufl_metadata(@scufl_model)
     end
 
+    def get_components
+
+      model = @scufl_model
+
+      components = XML::Node.new('components')
+
+      sources    = XML::Node.new('sources')
+      sinks      = XML::Node.new('sinks')
+      processors = XML::Node.new('processors')
+      links      = XML::Node.new('links')
+
+      model.sources.each do |source|
+        el = XML::Node.new('source')
+
+        el << (XML::Node.new('name')        << source.name)        if source.name
+        el << (XML::Node.new('description') << source.description) if source.description
+
+        sources << el
+      end
+
+      model.sinks.each do |sink|
+        el = XML::Node.new('sink')
+
+        el << (XML::Node.new('name')        << sink.name)        if sink.name
+        el << (XML::Node.new('description') << sink.description) if sink.description
+
+        sinks << el
+      end
+
+      model.processors.each do |processor|
+        el = XML::Node.new('processor')
+
+        el << (XML::Node.new('name')        << processor.name)        if processor.name
+        el << (XML::Node.new('description') << processor.description) if processor.description
+        el << (XML::Node.new('type')        << processor.type)        if processor.type
+
+        processors << el
+      end
+
+      model.links.each do |link|
+        el = XML::Node.new('link')
+
+        sink_bits   = link.sink.split(':')
+        source_bits = link.source.split(':')
+
+        sink   = XML::Node.new('sink')
+        source = XML::Node.new('source')
+
+        sink << (XML::Node.new('node') << sink_bits[0]) if sink_bits[0]
+        sink << (XML::Node.new('port') << sink_bits[1]) if sink_bits[1]
+
+        source << (XML::Node.new('node') << source_bits[0]) if source_bits[0]
+        source << (XML::Node.new('port') << source_bits[1]) if source_bits[1]
+
+        el << sink
+        el << source
+
+        links << el
+      end
+
+      components << sources
+      components << sinks
+      components << processors
+      components << links
+
+      components
+    end
+
     # End Instance Methods
   end
 end

reply via email to

[Prev in Thread] Current Thread [Next in Thread]