/*
* 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;
/**
* This statistic calculates the number of times a player was Caught Stealing (CS).
* See the Wikipedia reference <a href="http://en.wikipedia.org/wiki/Caught_stealing">here</a>.
* This is a batting, pitching, running, and fielding (catcher) statistic.
*
* @author Chad Retz
*/
@StatisticInfo(
name = "Caught Stealing",
abbreviations = "CS",
types = { StatisticType.BATTING, StatisticType.PITCHING,
StatisticType.FIELDING, StatisticType.RUNNING })
public class CaughtStealing extends AbstractStatistic<Integer> implements PlayBasedStatistic,
PitcherBasedStatistic, RunnerBasedStatistic, CatcherBasedStatistic {
private int caughtStealing = 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 caught stealing?
if (play.getEvent().getPlayType() != PlayType.CAUGHT_STEALING &&
play.getEvent().getPlayType() != PlayType.PICKOFF_CAUGHT_STEALING) {
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;
}
caughtStealing++;
}
@Override
public Integer getCurrentValue() {
return caughtStealing;
}
}