package models;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import org.apache.commons.lang.StringUtils;
import org.apache.commons.lang3.time.DateFormatUtils;
import org.apache.commons.lang3.time.DateUtils;
import org.joda.time.LocalDate;
public class GeoRestos {
public String type = "FeatureCollection";
public List<GeoResto> features = new ArrayList<GeoResto>();
public class GeoResto {
public GeoResto() {
}
public String type = "Feature";
public GeoPoint geometry;
public Map<String, String> properties;
public class GeoPoint {
public GeoPoint(Double latitude, Double longitude) {
this.coordinates = new ArrayList<Double>();
this.coordinates.add(longitude);
this.coordinates.add(latitude);
// = "[" + longitude + "," + latitude + "]";
}
public String type = "Point";
public List<Double> coordinates;
}
}
static public GeoRestos parse(List<Resto> restos) {
GeoRestos georestos = new GeoRestos();
try {
Calendar c = Calendar.getInstance();
Date today = c.getTime();
Date yesterday = DateUtils.addDays(today, -1);
for (Resto resto : restos) {
GeoResto geoResto = georestos.new GeoResto();
geoResto.properties = new HashMap<String, String>();
geoResto.properties.put("uri", "/resto/" + resto.id);
geoResto.properties.put("raisonSociale", resto.raisonSociale);
geoResto.properties.put("distance", resto.distance + "m");
if (resto.menudujour != null || resto.mobile != null) {
if (resto.menudujour != null) {
geoResto.properties.put("menudujour", StringUtils.defaultString(resto.menudujour));
}
if (resto.beforeMidi != null) {
geoResto.properties.put("marker-size", "large");
geoResto.properties.put("marker-color", "#009933");
if (resto.beforeMidi.equals(Boolean.TRUE)) {
geoResto.properties.put("dujour", " Menu du midi");
} else {
geoResto.properties.put("dujour", " Menu du soir");
}
} else if (resto.datedujour != null) {
geoResto.properties.put("marker-color", "#99FF99");
if (DateUtils.isSameDay(resto.datedujour, yesterday)) {
geoResto.properties.put("dujour", " Menu d'hier");
} else {
geoResto.properties.put("dujour", "Menu du " + DateFormatUtils.format(resto.datedujour, "yyyy-MM-dd"));
}
} else if (resto.mobile != null) {
geoResto.properties.put("dujour", " Aucun menu.");
geoResto.properties.put("marker-color", "#99FF99");
}
if ("foodtruck".equals(resto.typeDeResto)) {
geoResto.properties.put("marker-symbol", "bus");
} else {
geoResto.properties.put("marker-symbol", "restaurant");
}
if (resto.menudujour != null) {
geoResto.properties.put("marker-fill", "#03300");
geoResto.properties.put("marker-allow-overlap", "true");
} else {
geoResto.properties.put("marker-allow-overlap", "false");
geoResto.properties.put("marker-size", "medium");
}
} else {
if ("foodtruck".equals(resto.typeDeResto)) {
geoResto.properties.put("marker-symbol", "bus");
} else {
geoResto.properties.put("marker-symbol", "bar");
}
geoResto.properties.put("marker-color", "#fff");
geoResto.properties.put("marker-size", "small");
geoResto.properties.put("marker-allow-overlap", "false");
}
geoResto.geometry = geoResto.new GeoPoint(resto.latitude, resto.longitude);
georestos.features.add(geoResto);
}
} catch (Exception e) {
e.printStackTrace();
}
return georestos;
}
}
/*
* { "type": "Feature", "geometry": {"type": "Point", "coordinates": [102.0,
* 0.5]}, "properties": {"prop0": "value0"} },
*/