using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
namespace RetrosheetReader
{
class Event
{
string gameID; // 0, A
string visitingTeam; // 1, B
int inning; // 2, C
int battingTeam; // 3, D
int outs; // 4, E
int balls; // 5, F
int strikes; // 6, G
string pitchSequence; // 7, H
int visitorScore; // 8, I
int homeScore; // 9, J
string batter; // 10, K
string batterHand; // 11, L
string resBatter; // 12, M
string resBatterHand; // 13, N
string pitcher; // 14, O
string pitcherHand; // 15, P
string resPitcher; // 16, Q
string resPitcherHand; // 17, R
string catcher; // 18, S
string firstBase; // 19, T
string secondBase; // 20, U
string thirdBase; // 21, V
string shortstop; // 22, W
string leftField; // 23, X
string centerField; // 24, Y
string rightField; // 25, Z
string firstRunner; // 26, AA
string secondRunner; // 27, AB
string thirdRunner; // 28, AC
string eventText; // 29, AD
bool leadoffFlag; // 30, AE
bool pinchHitFlag; // 31, AF
int defensivePosition; // 32, AG
int lineupPosition; // 33, AH
int eventType; // 34, AI
bool batterEventFlag; // 35, AJ
bool abFlag; // 36, AK
int hitValue; // 37, AL
bool shFlag; // 38, AM
bool sfFlag; // 39, AN
int outsOnPlay; // 40, AO
bool doublePlayFlag; // 41, AP
bool triplePlayFlag; // 42, AQ
int rbiOnPlay; // 43, AR
bool wildPitchFlag; // 44, AS
bool passedBallFlag; // 45, AT
int fieldedBy; // 46, AU
string battedBallType; // 47, AV
bool buntFlag; // 48, AW
bool foulFlag; // 49, AX
string hitLocation; // 50, AY
int numErrors; // 51, AZ
int firstErrorPlayer; // 52, BA
string firstErrorType; // 53, BB
int secondErrorPlayer; // 54, BC
string secondErrorType; // 55, BD
int thirdErrorPlayer; // 56, BE
string thirdErrorType; // 57, BF
int batterDest; // 58, BG
int runner1Dest; // 59, BH
int runner2Dest; // 60, BI
int runner3Dest; // 61, BJ
string playOnBatter; // 62, BK
string playOnRunner1; // 63, BL
string playOnRunner2; // 64, BM
string playOnRunner3; // 65, BN
bool sbRunner1Flag; // 66, BO
bool sbRunner2Flag; // 67, BP
bool sbRunner3Flag; // 68, BQ
bool csRunner1Flag; // 69, BR
bool csRunner2Flag; // 70, BS
bool csRunner3Flag; // 71, BT
bool poRunner1Flag; // 72, BU
bool poRunner2Flag; // 73, BV
bool poRunner3Flag; // 74, BW
string respPitcher1; // 75, BX
string respPitcher2; // 76, BY
string respPitcher3; // 77, BZ
bool newGameFlag; // 78, CA
bool endGameFlag; // 79, CB
bool pinchRunner1; // 80, CC
bool pinchRunner2; // 81, CD
bool pinchRunner3; // 82, CE
string removedForPR1; // 83, CF
string removedForPR2; // 84, CG
string removedForPR3; // 85, CH
string removedForPH; // 86, CI
int posRemovedForPH; // 87, CJ
int fielderWithPO1; // 88, CK
int fielderWithPO2; // 89, CL
int fielderWithPO3; // 90, CM
int fielderWithA1; // 91, CN
int fielderWithA2; // 92, CO
int fielderWithA3; // 93, CP
int fielderWithA4; // 94, CQ
int fielderWithA5; // 95, CR
int eventNum; // 96, CS
public Event(string[] a)
{
gameID = a[0].Replace("\"", "");
visitingTeam = a[1].Replace("\"", "");
inning = Convert.ToInt32(a[2]);
battingTeam = Convert.ToInt32(a[3]);
outs = Convert.ToInt32(a[4]);
balls = Convert.ToInt32(a[5]);
strikes = Convert.ToInt32(a[6]);
pitchSequence = a[7].Replace("\"", "");
visitorScore = Convert.ToInt32(a[8]);
homeScore = Convert.ToInt32(a[9]);
batter = a[10].Replace("\"", "");
batterHand = a[11].Replace("\"", "");
resBatter = a[12].Replace("\"", "");
resBatterHand = a[13].Replace("\"", "");
pitcher = a[14].Replace("\"", "");
pitcherHand = a[15].Replace("\"", "");
resPitcher = a[16].Replace("\"", "");
resPitcherHand = a[17].Replace("\"", "");
catcher = a[18].Replace("\"", "");
firstBase = a[19].Replace("\"", "");
secondBase = a[20].Replace("\"", "");
thirdBase = a[21].Replace("\"", "");
shortstop = a[22].Replace("\"", "");
leftField = a[23].Replace("\"", "");
centerField = a[24].Replace("\"", "");
rightField = a[25].Replace("\"", "");
firstRunner = a[26].Replace("\"", "");
secondRunner = a[27].Replace("\"", "");
thirdRunner = a[28].Replace("\"", "");
eventText = a[29].Replace("\"", "");
leadoffFlag = a[30].Contains('T');
pinchHitFlag = a[31].Contains('T');
defensivePosition = Convert.ToInt32(a[32]);
lineupPosition = Convert.ToInt32(a[33]);
eventType = Convert.ToInt32(a[34]);
batterEventFlag = a[35].Contains('T');
abFlag = a[36].Contains('T');
hitValue = Convert.ToInt32(a[37]);
shFlag = a[38].Contains('T');
sfFlag = a[39].Contains('T');
outsOnPlay = Convert.ToInt32(a[40]);
doublePlayFlag = a[41].Contains('T');
triplePlayFlag = a[42].Contains('T');
rbiOnPlay = Convert.ToInt32(a[43]);
wildPitchFlag = a[44].Contains('T');
passedBallFlag = a[45].Contains('T');
fieldedBy = Convert.ToInt32(a[46]);
battedBallType = a[47].Replace("\"", "");
buntFlag = a[48].Contains('T');
foulFlag = a[49].Contains('T');
hitLocation = a[50].Replace("\"", "");
numErrors = Convert.ToInt32(a[51]);
firstErrorPlayer = Convert.ToInt32(a[52]);
firstErrorType = a[53].Replace("\"", "");
secondErrorPlayer = Convert.ToInt32(a[54]);
secondErrorType = a[55].Replace("\"", "");
thirdErrorPlayer = Convert.ToInt32(a[56]);
thirdErrorType = a[57].Replace("\"", "");
batterDest = Convert.ToInt32(a[58]);
runner1Dest = Convert.ToInt32(a[59]);
runner2Dest = Convert.ToInt32(a[60]);
runner3Dest = Convert.ToInt32(a[61]);
playOnBatter = a[62].Replace("\"", "");
playOnRunner1 = a[63].Replace("\"", "");
playOnRunner2 = a[64].Replace("\"", "");
playOnRunner3 = a[65].Replace("\"", "");
sbRunner1Flag = a[66].Contains('T');
sbRunner2Flag = a[67].Contains('T');
sbRunner3Flag = a[68].Contains('T');
csRunner1Flag = a[69].Contains('T');
csRunner2Flag = a[70].Contains('T');
csRunner3Flag = a[71].Contains('T');
poRunner1Flag = a[72].Contains('T');
poRunner2Flag = a[73].Contains('T');
poRunner3Flag = a[74].Contains('T');
respPitcher1 = a[75].Replace("\"", "");
respPitcher2 = a[76].Replace("\"", "");
respPitcher3 = a[77].Replace("\"", "");
newGameFlag = a[78].Contains('T');
endGameFlag = a[79].Contains('T');
pinchRunner1 = a[80].Contains('T');
pinchRunner2 = a[81].Contains('T');
pinchRunner3 = a[82].Contains('T');
removedForPR1 = a[83].Replace("\"", "");
removedForPR2 = a[84].Replace("\"", "");
removedForPR3 = a[85].Replace("\"", "");
removedForPH = a[86].Replace("\"", "");
posRemovedForPH = Convert.ToInt32(a[87]);
fielderWithPO1 = Convert.ToInt32(a[88]);
fielderWithPO2 = Convert.ToInt32(a[89]);
fielderWithPO3 = Convert.ToInt32(a[90]);
fielderWithA1 = Convert.ToInt32(a[91]);
fielderWithA2 = Convert.ToInt32(a[92]);
fielderWithA3 = Convert.ToInt32(a[93]);
fielderWithA4 = Convert.ToInt32(a[94]);
fielderWithA5 = Convert.ToInt32(a[95]);
eventNum = Convert.ToInt32(a[96]);
}
public static List<Event> GetEventList(string dir)
{
string s;
string[] splitLine;
List<Event> eventList = new List<Event>();
List<string> efs = Directory.GetFiles(dir, "*.csv").ToList();
foreach (string ef in efs)
{
Console.WriteLine("Reading events in " + ef);
StreamReader sr = new StreamReader(ef);
while ((s = sr.ReadLine()) != null)
{
splitLine = s.Split(',');
if (splitLine.Count() == 97)
{
eventList.Add(new Event(splitLine));
}
}
}
return eventList;
}
}
} |