diff options
author | Martin Gütlein <martin.guetlein@gmail.com> | 2010-04-23 18:47:37 +0200 |
---|---|---|
committer | Martin Gütlein <martin.guetlein@gmail.com> | 2010-04-23 18:47:37 +0200 |
commit | afa31803afd167c19c9ba95e73d311c9e2b8b43a (patch) | |
tree | 1b3d7b16c3d13ed45b02ba5b27d55e0168b1ffb2 /lib/task.rb | |
parent | 08232976c35511086fe6787c6c8c098c63ef0818 (diff) |
changing owl once again
Diffstat (limited to 'lib/task.rb')
-rw-r--r-- | lib/task.rb | 38 |
1 files changed, 22 insertions, 16 deletions
diff --git a/lib/task.rb b/lib/task.rb index 99d8f13..4b147d7 100644 --- a/lib/task.rb +++ b/lib/task.rb @@ -9,7 +9,7 @@ module OpenTox private def initialize(uri) - @uri = uri + @uri = uri.to_s.strip end public @@ -24,38 +24,44 @@ module OpenTox return task end - def self.from_data(data, content_type, base_uri) - begin - task = Task.new(nil) - task.reload_from_data(data, content_type, base_uri) - return task - rescue + # test_if_task = true -> error suppressed if data is no task, nil is returned + def self.from_data(data, content_type, base_uri, test_if_task) + task = Task.new(nil) + task.reload_from_data(data, content_type, base_uri, test_if_task) + if test_if_task and (!task.uri or task.uri.strip.size==0) return nil + else + return task end end def reload result = RestClientWrapper.get(uri) - reload_from_data(result, result.content_type) + reload_from_data(result, result.content_type, uri, false) end - def reload_from_data( data=nil, content_type=nil, base_uri=nil ) + # test_if_task = true -> error suppressed if data is no task, empty task is returned + def reload_from_data( data, content_type, base_uri, test_if_task ) case content_type when /text\/x-yaml/ task = YAML.load data - raise "yaml data is no task" if task.is_a?(Task) - TASK_ATTRIBS.each{ |a| send("#{a.to_s}=".to_sym,task[a]) } + if task.is_a?(Task) + TASK_ATTRIBS.each{ |a| send("#{a.to_s}=".to_sym,task[a]) } + else + raise "yaml data is no task: "+task.class.to_s unless test_if_task + end when /application\/rdf\+xml/ - base_uri = uri unless base_uri - owl = OpenTox::Owl.from_data(data,base_uri) - raise "not a task" if owl.ot_class=="Task" - TASK_ATTRIBS.each{|a| self.send("#{a.to_s}=".to_sym, owl.get(a.to_s))} + owl = OpenTox::Owl.from_data(data,base_uri,"Task",test_if_task) + if owl + self.uri = owl.uri + (TASK_ATTRIBS-[:uri]).each{|a| self.send("#{a.to_s}=".to_sym, owl.get(a.to_s))} + end else raise "content type for tasks not supported: "+content_type.to_s end + raise "uri is null after loading" unless @uri and @uri.to_s.strip.size>0 unless test_if_task end - # invalid: getters in task.rb should work for non-internal tasks as well # #def self.base_uri |