/**
   * Create a number of ride offers from list of DTOs. (Bulkadd) This is used for performance test,
   * when we do not want to measure http overhead when adding multiple requests
   *
   * @param request
   * @return
   */
  @POST
  @Path("bulkadd")
  public Response addOffers(String json) {

    DriverUndertakesRideControllerLocal durcl = lookupDriverUndertakesRideControllerBean();
    RideOfferDTO[] dtos;
    try {
      dtos = jacksonMapper.readValue(json, RideOfferDTO[].class);
    } catch (IOException e) {

      // TODO: log error!
      return Response.status(Response.Status.BAD_REQUEST).build();
    }

    for (RideOfferDTO dto : dtos) {

      int updateResult =
          durcl.addRide(
              dto.getCustomerId().intValue(),
              locationConverter.point(dto.getStartLocation()),
              locationConverter.point(dto.getEndLocation()),
              // intermediate Points currently left out...
              new Point[0], // Point[] intermediate route
              null, // Have to know DriveId to add waypoints!
              new Date(dto.getStartTime().getTime()),
              dto.getComment(),
              null, // no acceptable Detour Minutes
              dto.getAcceptableDetourKM(),
              null, // no Acceptable Detour
              // In Percent(),
              dto.getOfferedSeatsNo(),
              // StringEscapeUtils.unescapeHtml(r.getStartptAddress())
              dto.getStartLocation().getAddress(),
              // StringEscapeUtils.unescapeHtml(r.getEndptAddress())))
              dto.getEndLocation().getAddress());

      if (updateResult == -1) {
        return Response.status(Response.Status.BAD_REQUEST).build();
      }

      // to add waypoints, we'll have to get hold of the rideId
      Integer rideId = updateResult;
      DriverUndertakesRideEntity ride = durcl.getDriveByDriveId(rideId);
      WaypointDTOConverter waypointDTOConverter = new WaypointDTOConverter();

      // add waypoints
      for (WaypointDTO wDTO : dto.getWayPoints()) {
        WaypointEntity wEntity = waypointDTOConverter.waypointEntity(wDTO, ride);
        durcl.addWaypoint(rideId, wEntity, wDTO.getRouteIdx());
      }
    }
    return Response.status(Response.Status.ACCEPTED).build();
  }