/*
* 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.mport.retro.park;
import java.util.Map;
import java.util.Map.Entry;
import org.apache.commons.collections15.Transformer;
import org.statmantis.model.Park;
import org.statmantis.model.PinPointLocation;
import org.statmantis.model.StateProvince;
import org.statmantis.mport.retro.RetrosheetFlatCsvEnumReader;
import org.statmantis.util.MapUtils;
/**
* Reader for reading parks
*
* @author Chad Retz
*/
public class RetrosheetParkReader extends RetrosheetFlatCsvEnumReader<Park, ParkColumn> {
private static final String URL = "http://www.retrosheet.org/parkcode.txt";
@Override
protected String getUrl() {
return URL;
}
@Override
protected Class<ParkColumn> getEnumClass() {
return ParkColumn.class;
}
@Override
protected boolean isFirstLineSkipped() {
return true;
}
@Override
protected Transformer<Map<ParkColumn, String>, Entry<String, Park>> getTransformer() {
return new Transformer<Map<ParkColumn, String>, Entry<String, Park>>() {
@Override
public Entry<String, Park> transform(final Map<ParkColumn, String> csv) {
Park model = new Park();
model.setComments(csv.get(ParkColumn.NOTES));
if (!"NA".equals(csv.get(ParkColumn.END))) {
model.setConclusion(formatSqlDateOrNull(csv.get(ParkColumn.END)));
}
if (!"NA".equals(csv.get(ParkColumn.START))) {
model.setInception(formatSqlDateOrNull(csv.get(ParkColumn.START)));
}
model.setLocation(new PinPointLocation(null, csv.get(ParkColumn.CITY),
StateProvince.STATES.get(csv.get(ParkColumn.STATE)),
null, null));
model.setName(csv.get(ParkColumn.NAME));
model.setPreviousNames(splitAndTrimOrNull(
csv.get(ParkColumn.AKA)));
model.setRetroId(csv.get(ParkColumn.PARK_ID));
return MapUtils.createEntry(model.getRetroId(), model);
}
};
}
}