1 package au.gov.amsa.ihs.reader;
2
3 import java.io.File;
4 import java.io.FileNotFoundException;
5 import java.io.PrintStream;
6
7 import org.joda.time.DateTime;
8
9 import com.google.common.base.Optional;
10
11 import au.gov.amsa.ihs.model.Ship;
12 import rx.functions.Action1;
13
14 public class ExtractCsvMain {
15
16 public static void main(String[] args) throws FileNotFoundException {
17 File file = new File("/media/analysis/ship-data/ihs/608750.zip");
18 final PrintStream out = new PrintStream("target/ships.csv");
19 out.println(
20 "IMO, MMSI, DWT, GT, Type2, Type3, Type4, Type5, StatCode5, LOAMetres, BreadthMetres, BuildYear, BuildMonth, DisplacementTonnage, DraughtMetres, SpeedKnots, LastUpdateTime");
21 IhsReader.fromZip(file).map(IhsReader::toShip).forEach(new Action1<Ship>() {
22
23 @Override
24 public void call(Ship s) {
25 out.printf("%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s\n", s.getImo(),
26 st(s.getMmsi()), str(s.getDeadweightTonnage()), str(s.getGrossTonnage()),
27 st(s.getType2()), st(s.getType3()), st(s.getType4()), st(s.getType5()),
28 st(s.getStatCode5()), str(s.getLengthOverallMetres()),
29 str(s.getBreadthMetres()), str(s.getYearOfBuild()),
30 str(s.getMonthOfBuild()), str(s.getDisplacementTonnage()),
31 str(s.getDraughtMetres()), str(s.getSpeedKnots()),
32 dst(s.getLastUpdateTime()));
33 }
34 });
35 out.close();
36 }
37
38 private static String dst(Optional<DateTime> d) {
39
40 if (d.isPresent())
41 return d.get().toString();
42 else
43 return "";
44 }
45
46 private static String str(Optional<? extends Number> value) {
47 if (value.isPresent())
48 return value.get().toString();
49 else
50 return "";
51 }
52
53 private static String st(Optional<String> value) {
54 return value.or("");
55 }
56 }