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