myexperiment-hackers
[Top][All Lists]
Advanced

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

[myexperiment-hackers] [2582] trunk: added statistics sections for workf


From: noreply
Subject: [myexperiment-hackers] [2582] trunk: added statistics sections for workflow, file and pack api
Date: Thu, 17 Mar 2011 13:01:00 -0400 (EDT)

Revision
2582
Author
dgc
Date
2011-03-17 13:00:59 -0400 (Thu, 17 Mar 2011)

Log Message

added statistics sections for workflow, file and pack api

Modified Paths

Added Paths

Diff

Modified: trunk/app/models/blob.rb (2581 => 2582)


--- trunk/app/models/blob.rb	2011-03-17 14:36:42 UTC (rev 2581)
+++ trunk/app/models/blob.rb	2011-03-17 17:00:59 UTC (rev 2582)
@@ -67,4 +67,8 @@
   def named_download_url
     "#{Conf.base_uri}/files/#{id}/download/#{local_name}"
   end
+
+  def statistics_for_rest_api
+    APIStatistics.statistics(self)
+  end
 end

Modified: trunk/app/models/pack.rb (2581 => 2582)


--- trunk/app/models/pack.rb	2011-03-17 14:36:42 UTC (rev 2581)
+++ trunk/app/models/pack.rb	2011-03-17 17:00:59 UTC (rev 2582)
@@ -639,6 +639,10 @@
       relationship.subject.nil? || relationship.objekt.nil?
     end
   end
+
+  def statistics_for_rest_api
+    APIStatistics.statistics(self)
+  end
  
   protected
   

Modified: trunk/app/models/workflow.rb (2581 => 2582)


--- trunk/app/models/workflow.rb	2011-03-17 14:36:42 UTC (rev 2581)
+++ trunk/app/models/workflow.rb	2011-03-17 17:00:59 UTC (rev 2582)
@@ -353,4 +353,9 @@
 
     related_workflows.map do |result| result[0] end
   end
+
+  def statistics_for_rest_api
+    APIStatistics.statistics(self)
+  end
+
 end

Modified: trunk/config/tables.xml


(Binary files differ)

Added: trunk/lib/api_statistics.rb (0 => 2582)


--- trunk/lib/api_statistics.rb	                        (rev 0)
+++ trunk/lib/api_statistics.rb	2011-03-17 17:00:59 UTC (rev 2582)
@@ -0,0 +1,49 @@
+# myExperiment: lib/api_statistics.rb
+#
+# Copyright (c) 2011 University of Manchester and the University of Southampton.
+# See license.txt for details.
+
+module APIStatistics
+
+  def self.statistics(ob)
+
+    total_viewings  = Viewing.count(:conditions => ['contribution_id = ?', ob.contribution.id])
+    site_viewings   = Viewing.count(:conditions => ['contribution_id = ? AND accessed_from_site = 1', ob.contribution.id])
+    other_viewings  = Viewing.count(:conditions => ['contribution_id = ? AND accessed_from_site = 0', ob.contribution.id])
+
+    total_downloads = Download.count(:conditions => ['contribution_id = ?', ob.contribution.id])
+    site_downloads  = Download.count(:conditions => ['contribution_id = ? AND accessed_from_site = 1', ob.contribution.id])
+    other_downloads = Download.count(:conditions => ['contribution_id = ? AND accessed_from_site = 0', ob.contribution.id])
+
+    result = XML::Node.new('statistics')
+
+    viewings_element = XML::Node.new('viewings')
+    
+    viewings_element << (XML::Node.new('total') << total_viewings)
+
+    viewings_breakdown_element = XML::Node.new('breakdown')
+
+    viewings_breakdown_element << (XML::Node.new('site')  << site_viewings)
+    viewings_breakdown_element << (XML::Node.new('other') << other_viewings)
+
+    viewings_element << viewings_breakdown_element
+
+    downloads_element = XML::Node.new('downloads')
+
+    downloads_element << (XML::Node.new('total') << total_downloads)
+
+    downloads_breakdown_element = XML::Node.new('breakdown')
+
+    downloads_breakdown_element << (XML::Node.new('site')  << site_downloads)
+    downloads_breakdown_element << (XML::Node.new('other') << other_downloads)
+
+    downloads_element << downloads_breakdown_element
+
+    result << viewings_element
+    result << downloads_element
+
+    result
+  end
+
+end
+

reply via email to

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