package org.wocommunity.movies.model.server;

import org.apache.log4j.Logger;

public class Voting extends _Voting {
	@SuppressWarnings("unused")
	private static Logger log = Logger.getLogger(Voting.class);

	@Override
	public String userPresentableDescription() {
		return "Votes: " + this.numberOfVotes() + ", Average: " + this.runningAverage();
	}

	public Number getNumberOfVotes() {
		Number numberOfVotes = (Number) (storedValueForKey(NUMBER_OF_VOTES_KEY));
		return (numberOfVotes != null) ? numberOfVotes : new Integer(0);
	}

	public void setNumberOfVotes(Number value) {
		takeStoredValueForKey(value, NUMBER_OF_VOTES_KEY);
	}

	public Number getRunningAverage() {
		Number runningAverage = (Number) (storedValueForKey(RUNNING_AVERAGE_KEY));
		return (runningAverage != null) ? runningAverage : new Double(0.0);
	}

	public void setRunningAverage(Number value) {
		takeStoredValueForKey(value, RUNNING_AVERAGE_KEY);
	}

	public void addVote(int vote) {
		if ((vote >= 0) && (vote <= 10)) {
			int numberOfVotes = getNumberOfVotes().intValue();
			double total = getRunningAverage().doubleValue() * numberOfVotes + vote;
			++numberOfVotes;

			setNumberOfVotes(new Integer(numberOfVotes));
			setRunningAverage(new Double(total / numberOfVotes));
		}
	}	
	
}
