package au.gov.amsa.ihs.reader;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.PrintStream;
import org.joda.time.DateTime;
import com.google.common.base.Optional;
import au.gov.amsa.ihs.model.Ship;
import rx.functions.Action1;
public class ExtractCsvMain {
public static void main(String[] args) throws FileNotFoundException {
File file = new File("/media/analysis/ship-data/ihs/608750.zip");
final PrintStream out = new PrintStream("target/ships.csv");
out.println(
"IMO, MMSI, DWT, GT, Type2, Type3, Type4, Type5, StatCode5, LOAMetres, BreadthMetres, BuildYear, BuildMonth, DisplacementTonnage, DraughtMetres, SpeedKnots, LastUpdateTime");
IhsReader.fromZip(file).map(IhsReader::toShip).forEach(new Action1<Ship>() {
@Override
public void call(Ship s) {
out.printf("%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s\n", s.getImo(),
st(s.getMmsi()), str(s.getDeadweightTonnage()), str(s.getGrossTonnage()),
st(s.getType2()), st(s.getType3()), st(s.getType4()), st(s.getType5()),
st(s.getStatCode5()), str(s.getLengthOverallMetres()),
str(s.getBreadthMetres()), str(s.getYearOfBuild()),
str(s.getMonthOfBuild()), str(s.getDisplacementTonnage()),
str(s.getDraughtMetres()), str(s.getSpeedKnots()),
dst(s.getLastUpdateTime()));
}
});
out.close();
}
private static String dst(Optional<DateTime> d) {
if (d.isPresent())
return d.get().toString();
else
return "";
}
private static String str(Optional<? extends Number> value) {
if (value.isPresent())
return value.get().toString();
else
return "";
}
private static String st(Optional<String> value) {
return value.or("");
}
}