package com.opendoorlogistics.components.jsprit.demo;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.URL;
import java.util.ArrayList;
import java.util.TreeMap;
import com.opendoorlogistics.api.geometry.LatLong;
public class DemoAddresses {
int size() {
return data.length;
}
LatLong position(final int i) {
return new LatLong() {
@Override
public double getLongitude() {
return (Double) data[i][4];
}
@Override
public double getLatitude() {
return (Double) data[i][3];
}
};
}
String companyName(int i) {
return data[i][0].toString();
}
String contactName(int i) {
return data[i][1].toString();
}
String address(int i) {
return data[i][2].toString();
}
final private Object[][] data;
public DemoAddresses(Object[][] data) {
super();
this.data = data;
}
static final DemoAddresses UK = new DemoAddresses(DemoAddressesGB.uk_data);
static final DemoAddresses NEUSA = new DemoAddresses(DemoAddressesUSA.NE_USA_data);
@Override
public String toString(){
StringBuilder builder = new StringBuilder();
for(int i =0 ; i < size() ; i++){
String outline = "\"" + companyName(i) + "\",\"" + contactName(i) + "\",\"" + address(i) + "\"," + position(i).getLatitude() + "," + position(i).getLongitude();
builder.append(outline);
builder.append("\n");
}
return builder.toString();
}
public static void main(String []args){
// System.out.println(NEUSA.toString());
}
private static DemoAddresses readFromStream(InputStream stream){
ArrayList<Object[]> list = new ArrayList<Object[]>();
try {
BufferedReader br = new BufferedReader(new InputStreamReader(stream));
String line = null;
while ((line = br.readLine()) != null) {
if(line.length()>0){
// System.out.println(line);
String[] tokens = line.split(",(?=([^\"]*\"[^\"]*\")*[^\"]*$)");
if(tokens.length==5){
Object [] vals = new Object[5];
for(int i = 0 ; i < 3 ; i++){
vals[i] = tokens[i].replace("\"", "");
}
vals[3] = Double.parseDouble(tokens[3]);
vals[4] = Double.parseDouble(tokens[4]);
list.add(vals);
}
}
}
} catch (Exception e) {
throw new RuntimeException(e);
}
return new DemoAddresses(list.toArray(new Object[list.size()][]));
}
public static final TreeMap<String, DemoAddresses> DEMO_ADDRESSES = new TreeMap<String, DemoAddresses>();
static{
for(String name : new String[]{"Australia.csv",
"Austria.csv",
"Belgium.csv",
"Canada.csv",
"Denmark.csv",
"France.csv",
"Germany.csv",
"India.csv",
"Italy.csv",
"Netherlands.csv",
"New Zealand.csv",
"Spain.csv",
"Switzerland.csv",
"Turkey.csv",
"United Kingdom.csv",
"USA.csv",}){
String fullname = "/resources/data/" + name;
InputStream stream = DemoAddresses.class.getResourceAsStream(fullname);
DemoAddresses da = readFromStream(stream);
try {
stream.close();
} catch (IOException e) {
e.printStackTrace();
}
System.out.println("Jsprit integration component - read " +da.size() + " example addresses for " + name);
DEMO_ADDRESSES.put(name.replace(".csv", ""),da );
}
}
}