/*
* 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.Game;
import org.statmantis.model.GamePlayer;
import org.statmantis.model.Person;
import org.statmantis.stat.AbstractStatistic;
import org.statmantis.stat.BatterBasedStatistic;
import org.statmantis.stat.FielderBasedStatistic;
import org.statmantis.stat.GameBasedStatistic;
import org.statmantis.stat.StatisticInfo;
import org.statmantis.stat.StatisticType;
@StatisticInfo(
name = "Games",
abbreviations = "G",
types = { StatisticType.BATTING, StatisticType.FIELDING })
public class Games extends AbstractStatistic<Integer>
implements GameBasedStatistic, BatterBasedStatistic, FielderBasedStatistic {
private int games = 0;
private Person fielder;
private Person batter;
@Override
public void setCurrentFielder(Person fielder) {
this.fielder = fielder;
}
@Override
public void setCurrentBatter(Person batter) {
this.batter = batter;
}
@Override
public void applyGame(Game game) {
//XXX: Should this matter whether they hit and/or field or not?
// What about pitching a game?
GamePlayer player = null;
for (GamePlayer homePlayer : game.getHomeInfo().getGamePlayers()) {
if ((fielder != null && fielder.equals(homePlayer.getPlayer())) ||
(batter != null && batter.equals(homePlayer.getPlayer()))) {
player = homePlayer;
break;
}
}
if (player == null) {
for (GamePlayer visitingPlayer : game.getVisitorInfo().getGamePlayers()) {
if ((fielder != null && fielder.equals(visitingPlayer.getPlayer())) ||
(batter != null && batter.equals(visitingPlayer.getPlayer()))) {
player = visitingPlayer;
break;
}
}
}
if (player != null && !player.getPositions().isEmpty()) {
games++;
}
}
@Override
public Integer getCurrentValue() {
return games;
}
}