public byte[] getDeliveredReport(UserInput user, DeliveredReportInfo info)
      throws ServiceException {
    userService.authenticate(user);

    try {
      DeliveryMethod method = getDeliveryMethod(info.getDeliveryMethod());
      return method.getDeliveredReport(Converter.convertToDeliveredReport(info));
    } catch (DeliveryException e) {
      throw new ServiceException(e);
    }
  }
  public DeliveredReportInfo[] getDeliveredReports(UserInput user, String deliveryMethod)
      throws ServiceException {
    userService.authenticate(user);

    try {
      ReportUser reportUser = userProvider.getUser(user.getUserName(), user.getPassword());

      DeliveryMethod method = getDeliveryMethod(deliveryMethod);

      DeliveredReport[] reports = method.getDeliveredReports(reportUser);
      DeliveredReportInfo[] info = new DeliveredReportInfo[reports.length];
      for (int i = 0; i < reports.length; i++) {
        info[i] = Converter.convertToDeliveredReportInfo(reports[i]);
      }

      return info;

    } catch (ORException e) {
      throw new ServiceException(e);
    }
  }