From d43213dfcf1f1d73d76ae2d2aa59cee3597c06da Mon Sep 17 00:00:00 2001
From: Luke Shumaker <shumakl@purdue.edu>
Date: Mon, 28 Apr 2014 00:25:18 -0400
Subject: implement most of the TODOs in Match

---
 app/models/match.rb | 63 +++++++++++++++++++++++++++++++++++++++++++++++++----
 1 file changed, 59 insertions(+), 4 deletions(-)

(limited to 'app/models')

diff --git a/app/models/match.rb b/app/models/match.rb
index fa15980..460e7c4 100644
--- a/app/models/match.rb
+++ b/app/models/match.rb
@@ -27,18 +27,73 @@ class Match < ActiveRecord::Base
 	end
 
 	def stats_from(sampling_class)
-		# TODO
+		figure_sampling_methods.map{|stat,klass| (sampling_class==klass) ? stat : nil}.select{|s| not s.nil?}
 	end
 
-	def handle_sampling(params)
-		# TODO
+	def handle_sampling(user, params)
+		method_classes.each do |klass|
+			klass.new(self).handle_user_interaction(user, params)
+		end
 	end
 
 	def render_sampling(user)
-		# TODO
+		require 'set'
+		html = ''
+
+		method_classes.each do |klass|
+			html += '<div>'
+			html += klass.new(self).render_user_interaction(user)
+			html += '</div>'
+		end
+
+		return html.html_safe
 	end
 
 	def finished?
 		# TODO
 	end
+
+	private
+	def figure_sampling_methods
+		if @sampling_methods.nil?
+			data = {}
+			needed = self.tournament_stage.scoring.stats_needed
+			methods_names = self.tournament_stage.tournament.sampling_methods
+			methods_names.each do |method_name|
+				method_class = "Sampling::#{sampling_name.camelcase}".constantize
+				if method_class.works_with(self.tournament_stage.tournament.game)
+					needed.each do |stat|
+						data[stat] ||= {}
+						data[stat][method] = method.can_get?(user, stat)
+					end
+				end
+			end
+
+			needed.each do |stat|
+				max_val = nil
+				max_pri = 0
+				data[stat].each do |method,priority|
+					if priority > max_pri
+						max_val = method
+						max_pri = priority
+					end
+				end
+				data[stat] = max_val
+			end
+			@sampling_methods = data
+		end
+		return @sampling_methods
+	end
+
+	def method_classes
+		if @method_classes.nil?
+			data = Set.new
+			figure_sampling_methods.each do |stat,method|
+				data.push(method)
+			end
+			@method_classes = data
+		end
+		return @method_classes
+	end
+
 end
-- 
cgit v1.2.3-2-g168b


From 0a5242c3a460d0b99be0adc4593774a58b68154a Mon Sep 17 00:00:00 2001
From: Luke Shumaker <shumakl@purdue.edu>
Date: Mon, 28 Apr 2014 00:29:11 -0400
Subject: fix bad merge

---
 app/models/match.rb | 4 ----
 1 file changed, 4 deletions(-)

(limited to 'app/models')

diff --git a/app/models/match.rb b/app/models/match.rb
index 460e7c4..3cbe0da 100644
--- a/app/models/match.rb
+++ b/app/models/match.rb
@@ -49,10 +49,6 @@ class Match < ActiveRecord::Base
 		return html.html_safe
 	end
 
-	def finished?
-		# TODO
-	end
-
 	private
 	def figure_sampling_methods
 		if @sampling_methods.nil?
-- 
cgit v1.2.3-2-g168b