/* * Copyright 2010 Chad Retz * * Licensed under the Apache License, Version 2.0 (the "License"); you may not * use this file except in compliance with the License. You may obtain a copy of * the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the * License for the specific language governing permissions and limitations under * the License. */ package org.statmantis.stat.common; import org.statmantis.model.Person; import org.statmantis.model.Play; import org.statmantis.model.PlayType; import org.statmantis.stat.AbstractStatistic; import org.statmantis.stat.CatcherBasedStatistic; import org.statmantis.stat.PitcherBasedStatistic; import org.statmantis.stat.PlayBasedStatistic; import org.statmantis.stat.RunnerBasedStatistic; import org.statmantis.stat.StatisticInfo; import org.statmantis.stat.StatisticType; import org.statmantis.stat.StatisticUtils; @StatisticInfo( name = "Stolen Bases", abbreviations = "SB", types = { StatisticType.BATTING, StatisticType.PITCHING, StatisticType.FIELDING, StatisticType.RUNNING }) public class StolenBases extends AbstractStatistic<Integer> implements PlayBasedStatistic, PitcherBasedStatistic, RunnerBasedStatistic, CatcherBasedStatistic { private int stolenBases = 0; private Person runner; private Person pitcher; private Person catcher; @Override public void setCurrentRunner(Person runner) { this.runner = runner; } @Override public void setCurrentPitcher(Person pitcher) { this.pitcher = pitcher; } @Override public void setCurrentCatcher(Person catcher) { this.catcher = catcher; } @Override public void applyPlay(Play play) { //is a stolen base? if (play.getEvent().getPlayType() != PlayType.STOLEN_BASE) { return; } //is runner? if (runner != null && !runner.equals(play.getPlayer().getPlayer())) { return; } //is pitcher? if (pitcher != null && !pitcher.equals(play.getPitcher().getPlayer())) { return; } //is catcher? if (catcher != null && !StatisticUtils.isCatcherInPlay(catcher, play)) { return; } stolenBases++; } @Override public Integer getCurrentValue() { return stolenBases; } }