package net.java.cargotracker.domain.model.voyage;
import java.lang.reflect.Field;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import static net.java.cargotracker.application.util.DateUtil.toDate;
import net.java.cargotracker.domain.model.location.Location;
import static net.java.cargotracker.domain.model.location.SampleLocations.CHICAGO;
import static net.java.cargotracker.domain.model.location.SampleLocations.DALLAS;
import static net.java.cargotracker.domain.model.location.SampleLocations.HAMBURG;
import static net.java.cargotracker.domain.model.location.SampleLocations.HANGZOU;
import static net.java.cargotracker.domain.model.location.SampleLocations.HELSINKI;
import static net.java.cargotracker.domain.model.location.SampleLocations.HONGKONG;
import static net.java.cargotracker.domain.model.location.SampleLocations.MELBOURNE;
import static net.java.cargotracker.domain.model.location.SampleLocations.NEWYORK;
import static net.java.cargotracker.domain.model.location.SampleLocations.ROTTERDAM;
import static net.java.cargotracker.domain.model.location.SampleLocations.SHANGHAI;
import static net.java.cargotracker.domain.model.location.SampleLocations.STOCKHOLM;
import static net.java.cargotracker.domain.model.location.SampleLocations.TOKYO;
/**
* Sample carrier movements, for test purposes.
*/
public class SampleVoyages {
public static final Voyage CM001 = createVoyage("CM001", STOCKHOLM, HAMBURG);
public static final Voyage CM002 = createVoyage("CM002", HAMBURG, HONGKONG);
public static final Voyage CM003 = createVoyage("CM003", HONGKONG, NEWYORK);
public static final Voyage CM004 = createVoyage("CM004", NEWYORK, CHICAGO);
public static final Voyage CM005 = createVoyage("CM005", CHICAGO, HAMBURG);
public static final Voyage CM006 = createVoyage("CM006", HAMBURG, HANGZOU);
private static Voyage createVoyage(String id, Location from, Location to) {
return new Voyage(new VoyageNumber(id), new Schedule(
Arrays.asList(new CarrierMovement(from, to, new Date(),
new Date()))));
}
public final static Voyage v100 = new Voyage.Builder(new VoyageNumber(
"V100"), HONGKONG)
.addMovement(TOKYO, toDate("2009-03-03"), toDate("2009-03-05"))
.addMovement(NEWYORK, toDate("2009-03-06"), toDate("2009-03-09"))
.build();
public final static Voyage v200 = new Voyage.Builder(new VoyageNumber(
"V200"), TOKYO)
.addMovement(NEWYORK, toDate("2009-03-06"), toDate("2009-03-08"))
.addMovement(CHICAGO, toDate("2009-03-10"), toDate("2009-03-14"))
.addMovement(STOCKHOLM, toDate("2009-03-14"), toDate("2009-03-16"))
.build();
public final static Voyage v300 = new Voyage.Builder(new VoyageNumber(
"V300"), TOKYO)
.addMovement(ROTTERDAM, toDate("2009-03-08"), toDate("2009-03-11"))
.addMovement(HAMBURG, toDate("2009-03-11"), toDate("2009-03-12"))
.addMovement(MELBOURNE, toDate("2009-03-14"), toDate("2009-03-18"))
.addMovement(TOKYO, toDate("2009-03-19"), toDate("2009-03-21"))
.build();
public final static Voyage v400 = new Voyage.Builder(new VoyageNumber(
"V400"), HAMBURG)
.addMovement(STOCKHOLM, toDate("2009-03-14"), toDate("2009-03-15"))
.addMovement(HELSINKI, toDate("2009-03-15"), toDate("2009-03-16"))
.addMovement(HAMBURG, toDate("2009-03-20"), toDate("2009-03-22"))
.build();
/**
* Voyage number 0100S (by ship)
*
* Hongkong - Hangzou - Tokyo - Melbourne - New York
*/
public static final Voyage HONGKONG_TO_NEW_YORK = new Voyage.Builder(
new VoyageNumber("0100S"), HONGKONG)
.addMovement(HANGZOU, toDate("2008-10-01", "12:00"),
toDate("2008-10-03", "14:30"))
.addMovement(TOKYO, toDate("2008-10-03", "21:00"),
toDate("2008-10-06", "06:15"))
.addMovement(MELBOURNE, toDate("2008-10-06", "11:00"),
toDate("2008-10-12", "11:30"))
.addMovement(NEWYORK, toDate("2008-10-14", "12:00"),
toDate("2008-10-23", "23:10")).build();
/**
* Voyage number 0200T (by train)
*
* New York - Chicago - Dallas
*/
public static final Voyage NEW_YORK_TO_DALLAS = new Voyage.Builder(
new VoyageNumber("0200T"), NEWYORK)
.addMovement(CHICAGO, toDate("2008-10-24", "07:00"),
toDate("2008-10-24", "17:45"))
.addMovement(DALLAS, toDate("2008-10-24", "21:25"),
toDate("2008-10-25", "19:30")).build();
/**
* Voyage number 0300A (by airplane)
*
* Dallas - Hamburg - Stockholm - Helsinki
*/
public static final Voyage DALLAS_TO_HELSINKI = new Voyage.Builder(
new VoyageNumber("0300A"), DALLAS)
.addMovement(HAMBURG, toDate("2008-10-29", "03:30"),
toDate("2008-10-31", "14:00"))
.addMovement(STOCKHOLM, toDate("2008-11-01", "15:20"),
toDate("2008-11-01", "18:40"))
.addMovement(HELSINKI, toDate("2008-11-02", "09:00"),
toDate("2008-11-02", "11:15")).build();
/**
* Voyage number 0301S (by ship)
*
* Dallas - Hamburg - Stockholm - Helsinki, alternate route
*/
public static final Voyage DALLAS_TO_HELSINKI_ALT = new Voyage.Builder(
new VoyageNumber("0301S"), DALLAS).addMovement(HELSINKI,
toDate("2008-10-29", "03:30"), toDate("2008-11-05", "15:45"))
.build();
/**
* Voyage number 0400S (by ship)
*
* Helsinki - Rotterdam - Shanghai - Hongkong
*
*/
public static final Voyage HELSINKI_TO_HONGKONG = new Voyage.Builder(
new VoyageNumber("0400S"), HELSINKI)
.addMovement(ROTTERDAM, toDate("2008-11-04", "05:50"),
toDate("2008-11-06", "14:10"))
.addMovement(SHANGHAI, toDate("2008-11-10", "21:45"),
toDate("2008-11-22", "16:40"))
.addMovement(HONGKONG, toDate("2008-11-24", "07:00"),
toDate("2008-11-28", "13:37")).build();
public static final Map<VoyageNumber, Voyage> ALL = new HashMap();
static {
for (Field field : SampleVoyages.class.getDeclaredFields()) {
if (field.getType().equals(Voyage.class)) {
try {
Voyage voyage = (Voyage) field.get(null);
ALL.put(voyage.getVoyageNumber(), voyage);
} catch (IllegalAccessException e) {
throw new RuntimeException(e);
}
}
}
}
public static List<Voyage> getAll() {
return new ArrayList(ALL.values());
}
public static Voyage lookup(VoyageNumber voyageNumber) {
return ALL.get(voyageNumber);
}
}