/*
* 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.batting.runscreated;
import java.math.BigDecimal;
import org.statmantis.stat.StatisticInfo;
import org.statmantis.stat.StatisticType;
import org.statmantis.stat.common.AtBats;
import org.statmantis.stat.common.BasesOnBalls;
import org.statmantis.stat.common.CaughtStealing;
import org.statmantis.stat.common.GroundedIntoDoublePlays;
import org.statmantis.stat.common.HitByPitches;
import org.statmantis.stat.common.Hits;
import org.statmantis.stat.common.IntentionalWalks;
import org.statmantis.stat.common.SacrificeFlies;
import org.statmantis.stat.common.SacrificeHits;
import org.statmantis.stat.common.StolenBases;
import org.statmantis.stat.common.TotalBases;
/**
* This is the technical version of Runs Created (RC). See the Wikipedia reference
* <a href="http://en.wikipedia.org/wiki/Runs_created#.22Technical.22_version_of_runs_created">here</a>.
* This is a batting only statistic. It is calculated as:
* <p>
* <math style="font-size: 200%">
* <mfrac>
* <mrow>
* <mrow>
* <mo>(</mo>
* <mi href="{@linkhref Hits}">H</mi>
* <mo>+</mo>
* <mi href="{@linkhref BasesOnBalls}">BB</mi>
* <mo>-</mo>
* <mi href="{@linkhref CaughtStealing}">CS</mi>
* <mo>+</mo>
* <mi href="{@linkhref HitByPitches}">HBP</mi>
* <mo>-</mo>
* <mi href="{@linkhref GroundedIntoDoublePlays}">GIDP</mi>
* <mo>)</mo>
* </mrow>
* <mo>×</mo>
* <mrow>
* <mo>(</mo>
* <mi href="{@linkhref TotalBases}">TB</mi>
* <mo>+</mo>
* <mrow>
* <mo>(</mo>
* <mn>.26</mn>
* <mo>×</mo>
* <mrow>
* <mo>(</mo>
* <mi href="{@linkhref BasesOnBalls}">BB</mi>
* <mo>-</mo>
* <mi href="{@linkhref IntentionalWalks}">IBB</mi>
* <mo>+</mo>
* <mi href="{@linkhref HitByPitches}">HBP</mi>
* <mo>)</mo>
* </mrow>
* <mo>)</mo>
* </mrow>
* <mo>+</mo>
* <mrow>
* <mo>(</mo>
* <mn>.52</mn>
* <mo>×</mo>
* <mrow>
* <mo>(</mo>
* <mi href="{@linkhref SacrificeHits}">SH</mi>
* <mo>+</mo>
* <mi href="{@linkhref SacrificeFlies}">SF</mi>
* <mo>+</mo>
* <mi href="{@linkhref StolenBases}">SB</mi>
* <mo>)</mo>
* </mrow>
* <mo>)</mo>
* </mrow>
* <mo>)</mo>
* </mrow>
* </mrow>
* <mrow>
* <mi href="{@linkhref AtBats}">AB</mi>
* <mo>+</mo>
* <mi href="{@linkhref BasesOnBalls}">BB</mi>
* <mo>+</mo>
* <mi href="{@linkhref HitByPitches}">HBP</mi>
* <mo>+</mo>
* <mi href="{@linkhref SacrificeHits}">SH</mi>
* <mo>+</mo>
* <mi href="{@linkhref SacrificeFlies}">SF</mi>
* </mrow>
* </mfrac>
* </math>
* @author Chad Retz
*/
@StatisticInfo(
name = "Runs Created (technical)",
abbreviations = "RC",
types = StatisticType.BATTING,
dependencies = {
Hits.class,
BasesOnBalls.class,
CaughtStealing.class,
HitByPitches.class,
GroundedIntoDoublePlays.class,
TotalBases.class,
IntentionalWalks.class,
SacrificeHits.class,
SacrificeFlies.class,
StolenBases.class
})
public class RunsCreatedTechnical extends RunsCreated {
@Override
protected BigDecimal getOnBaseFactor() {
return new BigDecimal(
getDependency(Hits.class) +
getDependency(BasesOnBalls.class) -
getDependency(CaughtStealing.class) +
getDependency(HitByPitches.class) -
getDependency(GroundedIntoDoublePlays.class));
}
@Override
protected BigDecimal getAdvancementFactor() {
BigDecimal pieceOne = new BigDecimal(
getDependency(BasesOnBalls.class) -
getDependency(IntentionalWalks.class) +
getDependency(HitByPitches.class)).multiply(
new BigDecimal("0.26"));
BigDecimal pieceTwo = new BigDecimal(
getDependency(SacrificeHits.class) +
getDependency(SacrificeFlies.class) +
getDependency(StolenBases.class)).multiply(
new BigDecimal("0.52"));
return new BigDecimal(getDependency(TotalBases.class)).add(
pieceOne).add(pieceTwo);
}
@Override
protected BigDecimal getOpportunityFactor() {
return new BigDecimal(getDependency(AtBats.class) +
getDependency(BasesOnBalls.class) +
getDependency(HitByPitches.class) +
getDependency(SacrificeHits.class) +
getDependency(SacrificeFlies.class));
}
}