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;
 }