Newer
Older
package com.ippon.belt.web.rest;
import com.ippon.belt.domain.Blog;
import com.ippon.belt.repository.BlogRepository;

Remy POCQUERUSSE
committed
import com.ippon.belt.security.SecurityUtils;
import com.ippon.belt.web.rest.errors.BadRequestAlertException;
import java.net.URI;
import java.net.URISyntaxException;
import java.util.List;
import java.util.Objects;
import java.util.Optional;
import javax.validation.Valid;
import javax.validation.constraints.NotNull;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Value;

Remy POCQUERUSSE
committed
import org.springframework.http.HttpStatus;
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
import org.springframework.http.ResponseEntity;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.bind.annotation.*;
import tech.jhipster.web.util.HeaderUtil;
import tech.jhipster.web.util.ResponseUtil;
/**
* REST controller for managing {@link com.ippon.belt.domain.Blog}.
*/
@RestController
@RequestMapping("/api")
@Transactional
public class BlogResource {
private final Logger log = LoggerFactory.getLogger(BlogResource.class);
private static final String ENTITY_NAME = "blog";
@Value("${jhipster.clientApp.name}")
private String applicationName;
private final BlogRepository blogRepository;
public BlogResource(BlogRepository blogRepository) {
this.blogRepository = blogRepository;
}
/**
* {@code POST /blogs} : Create a new blog.
*
* @param blog the blog to create.
* @return the {@link ResponseEntity} with status {@code 201 (Created)} and with body the new blog, or with status {@code 400 (Bad Request)} if the blog has already an ID.
* @throws URISyntaxException if the Location URI syntax is incorrect.
*/
@PostMapping("/blogs")

Remy POCQUERUSSE
committed
public ResponseEntity<?> createBlog(@Valid @RequestBody Blog blog) throws URISyntaxException {
log.debug("REST request to save Blog : {}", blog);
if (blog.getId() != null) {
throw new BadRequestAlertException("A new blog cannot already have an ID", ENTITY_NAME, "idexists");
}

Remy POCQUERUSSE
committed
if (!blog.getUser().getLogin().equals(SecurityUtils.getCurrentUserLogin().orElse(""))) {
return new ResponseEntity<>("error.http.403", HttpStatus.FORBIDDEN);
}
Blog result = blogRepository.save(blog);
return ResponseEntity
.created(new URI("/api/blogs/" + result.getId()))
.headers(HeaderUtil.createEntityCreationAlert(applicationName, true, ENTITY_NAME, result.getId().toString()))
.body(result);
}
/**
* {@code PUT /blogs/:id} : Updates an existing blog.
*
* @param id the id of the blog to save.
* @param blog the blog to update.
* @return the {@link ResponseEntity} with status {@code 200 (OK)} and with body the updated blog,
* or with status {@code 400 (Bad Request)} if the blog is not valid,
* or with status {@code 500 (Internal Server Error)} if the blog couldn't be updated.
* @throws URISyntaxException if the Location URI syntax is incorrect.
*/
@PutMapping("/blogs/{id}")

Remy POCQUERUSSE
committed
public ResponseEntity<?> updateBlog(@PathVariable(value = "id", required = false) final Long id, @Valid @RequestBody Blog blog)
throws URISyntaxException {
log.debug("REST request to update Blog : {}, {}", id, blog);
if (blog.getId() == null) {
throw new BadRequestAlertException("Invalid id", ENTITY_NAME, "idnull");
}
if (!Objects.equals(id, blog.getId())) {
throw new BadRequestAlertException("Invalid ID", ENTITY_NAME, "idinvalid");
}
if (!blogRepository.existsById(id)) {
throw new BadRequestAlertException("Entity not found", ENTITY_NAME, "idnotfound");
}

Remy POCQUERUSSE
committed
if (blog.getUser() != null && !blog.getUser().getLogin().equals(SecurityUtils.getCurrentUserLogin().orElse(""))) {
return new ResponseEntity<>("error.http.403", HttpStatus.FORBIDDEN);
}
Blog result = blogRepository.save(blog);
return ResponseEntity
.ok()
.headers(HeaderUtil.createEntityUpdateAlert(applicationName, true, ENTITY_NAME, blog.getId().toString()))
.body(result);
}
/**
* {@code PATCH /blogs/:id} : Partial updates given fields of an existing blog, field will ignore if it is null
*
* @param id the id of the blog to save.
* @param blog the blog to update.
* @return the {@link ResponseEntity} with status {@code 200 (OK)} and with body the updated blog,
* or with status {@code 400 (Bad Request)} if the blog is not valid,
* or with status {@code 404 (Not Found)} if the blog is not found,
* or with status {@code 500 (Internal Server Error)} if the blog couldn't be updated.
* @throws URISyntaxException if the Location URI syntax is incorrect.
*/

Remy POCQUERUSSE
committed
@PatchMapping(value = "/blogs/{id}", consumes = "application/merge-patch+json")
public ResponseEntity<?> partialUpdateBlog(
@PathVariable(value = "id", required = false) final Long id,
@NotNull @RequestBody Blog blog
) throws URISyntaxException {
log.debug("REST request to partial update Blog partially : {}, {}", id, blog);
if (blog.getId() == null) {
throw new BadRequestAlertException("Invalid id", ENTITY_NAME, "idnull");
}
if (!Objects.equals(id, blog.getId())) {
throw new BadRequestAlertException("Invalid ID", ENTITY_NAME, "idinvalid");
}
if (!blogRepository.existsById(id)) {
throw new BadRequestAlertException("Entity not found", ENTITY_NAME, "idnotfound");
}

Remy POCQUERUSSE
committed
if (blog.getUser() != null && !blog.getUser().getLogin().equals(SecurityUtils.getCurrentUserLogin().orElse(""))) {
return new ResponseEntity<>("error.http.403", HttpStatus.FORBIDDEN);
}
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
Optional<Blog> result = blogRepository
.findById(blog.getId())
.map(existingBlog -> {
if (blog.getName() != null) {
existingBlog.setName(blog.getName());
}
if (blog.getHandle() != null) {
existingBlog.setHandle(blog.getHandle());
}
return existingBlog;
})
.map(blogRepository::save);
return ResponseUtil.wrapOrNotFound(
result,
HeaderUtil.createEntityUpdateAlert(applicationName, true, ENTITY_NAME, blog.getId().toString())
);
}
/**
* {@code GET /blogs} : get all the blogs.
*
* @return the {@link ResponseEntity} with status {@code 200 (OK)} and the list of blogs in body.
*/
@GetMapping("/blogs")
public List<Blog> getAllBlogs() {
log.debug("REST request to get all Blogs");
return blogRepository.findByUserIsCurrentUser();
}
/**
* {@code GET /blogs/:id} : get the "id" blog.
*
* @param id the id of the blog to retrieve.
* @return the {@link ResponseEntity} with status {@code 200 (OK)} and with body the blog, or with status {@code 404 (Not Found)}.
*/
@GetMapping("/blogs/{id}")

Remy POCQUERUSSE
committed
public ResponseEntity<?> getBlog(@PathVariable Long id) {
log.debug("REST request to get Blog : {}", id);
Optional<Blog> blog = blogRepository.findById(id);

Remy POCQUERUSSE
committed
if (
blog.isPresent() &&
blog.get().getUser() != null &&
!blog.get().getUser().getLogin().equals(SecurityUtils.getCurrentUserLogin().orElse(""))
) {
return new ResponseEntity<>("error.http.403", HttpStatus.FORBIDDEN);
}
return ResponseUtil.wrapOrNotFound(blog);
}
/**
* {@code DELETE /blogs/:id} : delete the "id" blog.
*
* @param id the id of the blog to delete.
* @return the {@link ResponseEntity} with status {@code 204 (NO_CONTENT)}.
*/
@DeleteMapping("/blogs/{id}")

Remy POCQUERUSSE
committed
public ResponseEntity<?> deleteBlog(@PathVariable Long id) {
log.debug("REST request to delete Blog : {}", id);

Remy POCQUERUSSE
committed
Optional<Blog> blog = blogRepository.findById(id);
if (
blog.isPresent() &&
blog.get().getUser() != null &&
!blog.get().getUser().getLogin().equals(SecurityUtils.getCurrentUserLogin().orElse(""))
) {
return new ResponseEntity<>("error.http.403", HttpStatus.FORBIDDEN);
}
blogRepository.deleteById(id);
return ResponseEntity
.noContent()
.headers(HeaderUtil.createEntityDeletionAlert(applicationName, true, ENTITY_NAME, id.toString()))
.build();
}
}