/** * 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; }
@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; }