diff options
author | mguetlein <martin.guetlein@gmail.com> | 2010-11-26 16:05:25 +0100 |
---|---|---|
committer | mguetlein <martin.guetlein@gmail.com> | 2010-11-26 16:05:25 +0100 |
commit | 16a25a63ba7882901a778745d0a32baaafc22cad (patch) | |
tree | 9bf89ee176575aa49da36a4bc57e8c09a75fad4a /report/report_service.rb | |
parent | a6d79dffc5f65300f06f3a33451ef26d0fb96f08 (diff) |
huge commit, main changes: validation_type and .finished introduced, supporting subtasks, reporting slightly refactored
Diffstat (limited to 'report/report_service.rb')
-rw-r--r-- | report/report_service.rb | 35 |
1 files changed, 25 insertions, 10 deletions
diff --git a/report/report_service.rb b/report/report_service.rb index 2187493..51be248 100644 --- a/report/report_service.rb +++ b/report/report_service.rb @@ -6,10 +6,21 @@ module Reports class ReportService + @@persistance = Reports::ExtendedFileReportPersistance.new + + def self.persistance + @@persistance + end + + def self.instance + @@instance + end + def initialize(home_uri) + raise "supposed to be a singleton" if defined?@@instance LOGGER.info "init report service" @home_uri = home_uri - @persistance = Reports::ExtendedFileReportPersistance.new + @@instance = self end # lists all available report types, returns list of uris @@ -32,7 +43,7 @@ module Reports LOGGER.info "get all reports of type '"+type.to_s+"', filter_params: '"+filter_params.inspect+"'" check_report_type(type) - @persistance.list_reports(type, filter_params).collect{ |id| get_uri(type,id) }.join("\n")+"\n" + @@persistance.list_reports(type, filter_params).collect{ |id| get_uri(type,id) }.join("\n")+"\n" end # creates a report of a certain type, __validation_uris__ must contain be a list of validation or cross-validation-uris @@ -41,7 +52,7 @@ module Reports # call-seq: # create_report(type, validation_uris) => string # - def create_report(type, validation_uris) + def create_report(type, validation_uris, task=nil) LOGGER.info "create report of type '"+type.to_s+"'" check_report_type(type) @@ -52,14 +63,17 @@ module Reports validation_set = Reports::ValidationSet.new(validation_uris) raise Reports::BadRequest.new("cannot get validations from validation_uris '"+validation_uris.inspect+"'") unless validation_set and validation_set.size > 0 LOGGER.debug "loaded "+validation_set.size.to_s+" validation/s" + task.progress(10) if task #step 2: create report of type - report_content = Reports::ReportFactory.create_report(type, validation_set) + report_content = Reports::ReportFactory.create_report(type, validation_set, + OpenTox::SubTask.create(task,10,90)) LOGGER.debug "report created" #step 3: persist report if creation not failed - id = @persistance.new_report(report_content, type, create_meta_data(type, validation_set, validation_uris), self) + id = @@persistance.new_report(report_content, type, create_meta_data(type, validation_set, validation_uris), self) LOGGER.debug "report persisted with id: '"+id.to_s+"'" + task.progress(100) if task return get_uri(type, id) end @@ -75,7 +89,7 @@ module Reports accept_header_value.to_s+"', force-formating:"+force_formating.to_s+" params: '"+params.inspect+"')" check_report_type(type) format = Reports::ReportFormat.get_format(accept_header_value) - return @persistance.get_report(type, id, format, force_formating, params) + return @@persistance.get_report(type, id, format, force_formating, params) end # returns a report resource (i.e. image) @@ -87,7 +101,7 @@ module Reports LOGGER.info "get resource '"+resource+"' for report '"+id.to_s+"' of type '"+type.to_s+"'" check_report_type(type) - return @persistance.get_report_resource(type, id, resource) + return @@persistance.get_report_resource(type, id, resource) end @@ -100,7 +114,7 @@ module Reports LOGGER.info "delete report '"+id.to_s+"' of type '"+type.to_s+"'" check_report_type(type) - @persistance.delete_report(type, id) + @@persistance.delete_report(type, id) end # no api-access for this method @@ -108,7 +122,7 @@ module Reports LOGGER.info "deleting all reports of type '"+type.to_s+"'" check_report_type(type) - @persistance.list_reports(type).each{ |id| @persistance.delete_report(type, id) } + @@persistance.list_reports(type).each{ |id| @@persistance.delete_report(type, id) } end def parse_type( report_uri ) @@ -123,7 +137,7 @@ module Reports raise "invalid uri" unless report_uri.to_s =~/^#{@home_uri}.*/ id = report_uri.squeeze("/").split("/")[-1] - @persistance.check_report_id_format(id) + @@persistance.check_report_id_format(id) return id end @@ -151,6 +165,7 @@ module Reports cvs << v if v =~ /crossvalidation/ and !cvs.include?(v) end meta_data[:crossvalidation_uris] = cvs + meta_data end |