summaryrefslogtreecommitdiff
path: root/report/report_service.rb
diff options
context:
space:
mode:
authormguetlein <martin.guetlein@gmail.com>2010-11-26 16:05:25 +0100
committermguetlein <martin.guetlein@gmail.com>2010-11-26 16:05:25 +0100
commit16a25a63ba7882901a778745d0a32baaafc22cad (patch)
tree9bf89ee176575aa49da36a4bc57e8c09a75fad4a /report/report_service.rb
parenta6d79dffc5f65300f06f3a33451ef26d0fb96f08 (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.rb35
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