public JsonVehicleRoutingSolution convertToJsonVehicleRoutingSolution( VehicleRoutingSolution solution) { JsonVehicleRoutingSolution jsonSolution = new JsonVehicleRoutingSolution(); jsonSolution.setName(solution.getName()); List<JsonCustomer> jsonCustomerList = new ArrayList<JsonCustomer>(solution.getCustomerList().size()); for (Customer customer : solution.getCustomerList()) { Location customerLocation = customer.getLocation(); jsonCustomerList.add( new JsonCustomer( customerLocation.getId(), customerLocation.getName(), customerLocation.getLatitude(), customerLocation.getLongitude(), customer.getDemand())); } jsonSolution.setCustomerList(jsonCustomerList); List<JsonVehicleRoute> jsonVehicleRouteList = new ArrayList<JsonVehicleRoute>(solution.getVehicleList().size()); TangoColorFactory tangoColorFactory = new TangoColorFactory(); for (Vehicle vehicle : solution.getVehicleList()) { JsonVehicleRoute jsonVehicleRoute = new JsonVehicleRoute(); Location depotLocation = vehicle.getDepot().getLocation(); jsonVehicleRoute.setId(vehicle.getId()); jsonVehicleRoute.setDepotLocationName(depotLocation.getName()); jsonVehicleRoute.setDepotLatitude(depotLocation.getLatitude()); jsonVehicleRoute.setDepotLongitude(depotLocation.getLongitude()); jsonVehicleRoute.setCapacity(vehicle.getCapacity()); Color color = tangoColorFactory.pickColor(vehicle); jsonVehicleRoute.setHexColor( String.format("#%02x%02x%02x", color.getRed(), color.getGreen(), color.getBlue())); Customer customer = vehicle.getNextCustomer(); int demandTotal = 0; List<JsonCustomer> jsonVehicleCustomerList = new ArrayList<JsonCustomer>(); while (customer != null) { Location customerLocation = customer.getLocation(); demandTotal += customer.getDemand(); jsonVehicleCustomerList.add( new JsonCustomer( customerLocation.getId(), customerLocation.getName(), customerLocation.getLatitude(), customerLocation.getLongitude(), customer.getDemand())); customer = customer.getNextCustomer(); } jsonVehicleRoute.setDemandTotal(demandTotal); jsonVehicleRoute.setCustomerList(jsonVehicleCustomerList); jsonVehicleRouteList.add(jsonVehicleRoute); } jsonSolution.setVehicleRouteList(jsonVehicleRouteList); HardSoftLongScore score = solution.getScore(); jsonSolution.setFeasible(score != null && score.isFeasible()); jsonSolution.setDistance(solution.getDistanceString(NUMBER_FORMAT)); return jsonSolution; }