示例#1
0
  /**
   * Retrieve user by id
   *
   * @param userId the user identifier
   * @return the user corresponding to the specified user identifier
   */
  @RequestMapping(method = RequestMethod.GET, value = "/{userId}")
  public UserResource userGet(
      @PathVariable("userId") Long userId, HttpServletRequest httpServletRequest) {

    User requestBo = null;
    try {
      requestBo = userRepo.findOne(userId);
    } catch (DataAccessException e) {

      String msg = "Can't retrieve asked users from DB";
      logger.error(msg, e);
      throw new DefaultSportManagerException(
          new ErrorResource("db error", msg, HttpStatus.INTERNAL_SERVER_ERROR));
    }

    if (requestBo == null) {
      String msg = "User with id " + userId + " not found";
      throw new DefaultSportManagerException(
          new ErrorResource("not found", msg, HttpStatus.NOT_FOUND));
    }

    UserResource resource = userResourceAssembler.toResource(requestBo);
    if (httpServletRequest.isUserInRole("AK_ADMIN")) {
      resource.add(
          linkTo(methodOn(UserController.class).userGet(userId, null))
              .withRel(ActionsConstants.UPDATE_VIA_PUT));
      resource.add(
          linkTo(methodOn(UserController.class).userGet(userId, null))
              .withRel(ActionsConstants.DELETE_VIA_DELETE));
    }
    return resource;
  }
示例#2
0
  @RequestMapping(method = RequestMethod.GET, produces = "application/json; charset=utf-8")
  public PagedResources<UserResource> collectionList(
      Pageable pageable,
      PagedResourcesAssembler<User> assembler,
      @RequestParam(value = "firstName", required = false) String firstName,
      @RequestParam(value = "lastName", required = false) String lastName,
      @RequestParam(value = "mail", required = false) String mail,
      HttpServletRequest httpServletRequest) {

    Page<User> users = null;

    try {
      if (firstName != null || lastName != null || mail != null) {

        if (firstName == null) firstName = "";
        if (lastName == null) lastName = "";
        if (mail == null) mail = "";

        users =
            userRepo.findByLastNameLikeIgnoreCaseAndFirstNameLikeIgnoreCaseAndMailLikeIgnoreCase(
                "%" + lastName + "%", "%" + firstName + "%", "%" + mail + "%", pageable);
      } else {
        users = userRepo.findAllPaged(pageable);
      }

    } catch (DataAccessException e) {
      String msg = "Can't retrieve asked users from DB";
      logger.error(msg, e);
      throw new DefaultSportManagerException(
          new ErrorResource("db error", msg, HttpStatus.INTERNAL_SERVER_ERROR));
    }

    PagedResources<UserResource> resources = assembler.toResource(users, userResourceAssembler);
    resources.add(linkTo(UserController.class).withSelfRel());
    if (httpServletRequest.isUserInRole("AK_ADMIN")) {
      resources.add(linkTo(UserController.class).withRel(ActionsConstants.CREATE_VIA_POST));
      // On rajoute les liens sur les users
      for (UserResource resource : resources) {
        resource.add(
            linkTo(methodOn(UserController.class).userGet(resource.getTech_id(), null))
                .withRel(ActionsConstants.UPDATE_VIA_PUT));
        resource.add(
            linkTo(methodOn(UserController.class).userGet(resource.getTech_id(), null))
                .withRel(ActionsConstants.DELETE_VIA_DELETE));
      }
    }
    return resources;
  }