View Javadoc
1 package net.mlw.fball.loader.yahoo;
2
3 import java.io.File;
4 import java.io.FileNotFoundException;
5 import java.io.FileReader;
6 import java.io.IOException;
7 import java.io.LineNumberReader;
8 import java.net.MalformedURLException;
9 import java.net.URL;
10 import java.util.Iterator;
11 import java.util.List;
12
13 import net.mlw.fball.bo.Player;
14 import net.mlw.fball.bo.SeasonStats;
15 import net.mlw.fball.event.ProgressEvent;
16 import net.mlw.fball.event.StatusEvent;
17 import net.mlw.fball.loader.LoaderContextHolder;
18 import net.mlw.util.NetUtils;
19 import net.mlw.util.ParsingUtils;
20
21 import org.apache.commons.logging.Log;
22 import org.apache.commons.logging.LogFactory;
23
24 /***
25 *
26 * @author Matthew L. Wilson
27 * @version $Revision: 1.8 $ $Date: 2004/06/04 15:37:48 $
28 */
29 public class SeasonStatsLoader extends LoaderContextHolder
30 {
31 /*** Commons Logger. **/
32 private static final Log LOGGER = LogFactory.getLog(PlayerLoader.class);
33
34 /***
35 * @see net.mlw.fball.loader.Loader#doLoad()
36 */
37 public void doLoad() throws Exception
38 {
39 List players = playerDao.findByMap(null);
40
41 int count = 0;
42 int totalCount = players.size();
43 eventListener.onEvent(new ProgressEvent(totalCount));
44 for (Iterator iter = players.iterator(); iter.hasNext();)
45 {
46 try
47 {
48 Player player = (Player) iter.next();
49 eventListener.onEvent(new StatusEvent(player.toString()));
50
51 String yahooPlayerId = player.getProvider("yahoo");
52
53 File file = new File("/stats/players/" + yahooPlayerId);
54 file.mkdirs();
55 file = new File("/stats/players/" + yahooPlayerId + "/career");
56
57 //if (!file.exists())
58 NetUtils.copyFile(new URL(location.replaceAll(":yahooPlayerId", yahooPlayerId)), file);
59
60 LineNumberReader reader = new LineNumberReader(new FileReader(file));
61
62 String currentPosition = null;
63 while (reader.ready() && currentPosition == null)
64 {
65 String line = reader.readLine();
66 currentPosition = getPosition(line);
67 }
68
69 if ("TE".equals(currentPosition))
70 {
71 while (reader.ready())
72 {
73 String line = reader.readLine();
74 if (line.indexOf("<td class=\"yspscores\" align=\"left\">") >= 0)
75 {
76 String[] values = ParsingUtils.getTdContentsAsArray(line);
77 SeasonStats stats = seasonStatsDao.findById(player, new Integer(values[0]));
78
79 stats.setPosition("TE");
80 stats.setTeam(teamDao.findByName("%" + values[1] + "%"));
81
82 stats.setGamesPlayed(new Integer(values[2]));
83
84 stats.setReceivingRecptions(new Integer(values[4]));
85 stats.setReceivingYards(new Integer(values[5]));
86 stats.setReceivingLong(new Integer(values[8]));
87 stats.setReceivingFirstdowns(new Integer(values[10]));
88 stats.setReceivingTouchdown(new Integer(values[11]));
89
90 stats.setRushingAttempts(new Integer(values[13]));
91 stats.setRushingYards(new Integer(values[14]));
92 stats.setRushingTouchdowns(new Integer(values[17]));
93
94 stats.setFumbles(new Integer(values[19]));
95 stats.setFunblesLost(new Integer(values[20]));
96
97 seasonStatsDao.save(stats);
98 }
99 }
100 }
101 if ("RB".equals(currentPosition))
102 {
103 while (reader.ready())
104 {
105 String line = reader.readLine();
106 if (line.indexOf("<td class=\"yspscores\" align=\"left\">") >= 0)
107 {
108 String[] values = ParsingUtils.getTdContentsAsArray(line);
109 SeasonStats stats = seasonStatsDao.findById(player, new Integer(values[0]));
110
111 stats.setPosition("RB");
112 stats.setTeam(teamDao.findByName("%" + values[1] + "%"));
113
114 stats.setGamesPlayed(new Integer(values[2]));
115
116 stats.setRushingAttempts(new Integer(values[4]));
117 stats.setRushingYards(new Integer(values[5]));
118 stats.setRushingTouchdowns(new Integer(values[8]));
119
120 stats.setReceivingRecptions(new Integer(values[10]));
121 stats.setReceivingYards(new Integer(values[11]));
122 stats.setReceivingLong(new Integer(values[14]));
123 stats.setReceivingFirstdowns(new Integer(values[16]));
124 stats.setReceivingTouchdown(new Integer(values[17]));
125
126 stats.setFumbles(new Integer(values[19]));
127 stats.setFunblesLost(new Integer(values[20]));
128
129 seasonStatsDao.save(stats);
130 }
131 }
132 }
133 else if ("QB".equals(currentPosition))
134 {
135 while (reader.ready())
136 {
137 String line = reader.readLine();
138 if (line.indexOf("<td class=\"yspscores\" align=\"left\">") >= 0)
139 {
140 String[] values = ParsingUtils.getTdContentsAsArray(line);
141
142 SeasonStats stats = seasonStatsDao.findById(player, new Integer(values[0]));
143
144 stats.setPosition("QB");
145 stats.setTeam(teamDao.findByName("%" + values[1] + "%"));
146
147 stats.setGamesPlayed(new Integer(values[2]));
148
149 stats.setQuarterBackRating(new Double(values[4]));
150 stats.setPassingCompletion(new Integer(values[5]));
151 stats.setPassingAttempts(new Integer(values[6]));
152 stats.setPassingYards(new Integer(values[8]));
153 stats.setPassingTouchdowns(new Integer(values[11]));
154 stats.setPassingInterception(new Integer(values[12]));
155
156 stats.setRushingAttempts(new Integer(values[14]));
157 stats.setRushingYards(new Integer(values[15]));
158 stats.setRushingTouchdowns(new Integer(values[18]));
159
160 stats.setPassingSacked(new Integer(values[20]));
161 stats.setPassingSackedYards(new Integer(values[21]));
162
163 stats.setFumbles(new Integer(values[23]));
164 stats.setFunblesLost(new Integer(values[24]));
165
166 seasonStatsDao.save(stats);
167 }
168 }
169 }
170 else if ("WR".equals(currentPosition))
171 {
172 while (reader.ready())
173 {
174 String line = reader.readLine();
175 if (line.indexOf("<td class=\"yspscores\" align=\"left\">") >= 0)
176 {
177 String[] values = ParsingUtils.getTdContentsAsArray(line);
178 SeasonStats stats = seasonStatsDao.findById(player, new Integer(values[0]));
179
180 stats.setPosition("WR");
181 stats.setTeam(teamDao.findByName("%" + values[1] + "%"));
182 stats.setGamesPlayed(new Integer(values[2]));
183 stats.setReceivingRecptions(new Integer(values[4]));
184 stats.setReceivingYards(new Integer(values[5]));
185 stats.setReceivingLong(new Integer(values[8]));
186 stats.setReceivingFirstdowns(new Integer(values[10]));
187 stats.setReceivingTouchdown(new Integer(values[11]));
188
189 stats.setKickReturnReturns(new Integer(values[13]));
190 stats.setKickReturnYards(new Integer(values[14]));
191 stats.setKickReturnLong(new Integer(values[16]));
192
193 stats.setPuntReturnReturns(new Integer(values[18]));
194 stats.setPuntReturnYards(new Integer(values[19]));
195 stats.setPuntReturnLong(new Integer(values[21]));
196
197 stats.setFumbles(new Integer(values[23]));
198 stats.setFunblesLost(new Integer(values[24]));
199
200 seasonStatsDao.save(stats);
201 }
202 }
203 }
204 else if ("K".equals(currentPosition))
205 {
206 while (reader.ready())
207 {
208 String line = reader.readLine();
209 if (line.indexOf("<td class=\"yspscores\" align=\"left\">") >= 0)
210 {
211 String[] values = ParsingUtils.getTdContentsAsArray(line);
212 SeasonStats stats = seasonStatsDao.findById(player, new Integer(values[0]));
213
214 stats.setPosition("K");
215 stats.setTeam(teamDao.findByName("%" + values[1] + "%"));
216 stats.setGamesPlayed(new Integer(values[2]));
217
218 stats.setFieldGoalRange0To19(new Integer(values[4]));
219 stats.setFieldGoalRange20To29(new Integer(values[5]));
220 stats.setFieldGoalRange30To39(new Integer(values[6]));
221 stats.setFieldGoalRange40To49(new Integer(values[7]));
222 stats.setFieldGoalRange50Plus(new Integer(values[8]));
223
224 stats.setFieldGoalMade(new Integer(values[9]));
225 stats.setFieldGoalAttempt(new Integer(values[10]));
226
227 stats.setFieldGoalLong(new Integer(values[12]));
228
229 stats.setExtraPointAttempt(new Integer(values[14]));
230 stats.setExtraPointMade(new Integer(values[15]));
231
232 seasonStatsDao.save(stats);
233 }
234 }
235 }
236 }
237 catch (NumberFormatException e)
238 {
239 // TODO Auto-generated catch block
240 e.printStackTrace();
241 }
242 catch (MalformedURLException e)
243 {
244 // TODO Auto-generated catch block
245 e.printStackTrace();
246 }
247 catch (FileNotFoundException e)
248 {
249 // TODO Auto-generated catch block
250 e.printStackTrace();
251 }
252 catch (IOException e)
253 {
254 // TODO Auto-generated catch block
255 e.printStackTrace();
256 }
257 eventListener.onEvent(new ProgressEvent(totalCount, ++count));
258 }
259 }
260
261 private String getPosition(String line)
262 {
263 if (line.indexOf("Linebacker") > 0)
264 {
265 return "";
266 }
267 else if (line.indexOf("Wide Receiver") > 0)
268 {
269 return "WR";
270 }
271 else if (line.indexOf("Cornerback") > 0)
272 {
273 return "";
274 }
275 else if (line.indexOf("Center") > 0)
276 {
277 return "";
278 }
279 else if (line.indexOf("Running back") > 0)
280 {
281 return "RB";
282 }
283 else if (line.indexOf("Defensive tackle") > 0)
284 {
285 return "";
286 }
287 else if (line.indexOf("Cornerback") > 0)
288 {
289 return "";
290 }
291 else if (line.indexOf("Quarterback") > 0)
292 {
293 return "QB";
294 }
295 else if (line.indexOf("Tight end ") > 0)
296 {
297 return "TE";
298 }
299 else if (line.indexOf("Kicker") > 0)
300 {
301 return "K";
302 }
303 else
304 {
305 return null;
306 }
307 }
308 }
This page was automatically generated by Maven