package ee.esutoniagodesu.web.rest; import ee.esutoniagodesu.domain.heisig.table.HeisigCoreKw; import ee.esutoniagodesu.domain.heisig.view.VHeisig6Custom; import ee.esutoniagodesu.security.AuthoritiesConstants; import ee.esutoniagodesu.service.HeisigService; import org.springframework.http.HttpStatus; import org.springframework.http.MediaType; import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.*; import javax.annotation.security.RolesAllowed; import javax.inject.Inject; import java.util.List; import java.util.Optional; @RestController @RequestMapping(HeisigResource.BASE_URL) public class HeisigResource { public static final String BASE_URL = "/api/rtk"; @Inject private HeisigService service; @RequestMapping(value = "/byBookAndQuery", method = RequestMethod.GET, produces = MediaType.APPLICATION_JSON_VALUE) public ResponseEntity<List<VHeisig6Custom>> byBookAndQuery(@RequestParam int book, @RequestParam String query) { return Optional.ofNullable(service.findByBookAndQuery(book, query)) .map(entity -> new ResponseEntity<>( entity, HttpStatus.OK)) .orElse(new ResponseEntity<>(HttpStatus.NOT_FOUND)); } @RequestMapping(value = "", method = RequestMethod.GET, produces = MediaType.APPLICATION_JSON_VALUE) public ResponseEntity<List<VHeisig6Custom>> getAll() { return new ResponseEntity<>(service.findAll(), HttpStatus.OK); } @RequestMapping(value = "/{id}", method = RequestMethod.GET, produces = MediaType.APPLICATION_JSON_VALUE) public ResponseEntity<VHeisig6Custom> get(@PathVariable Integer id) { return Optional.ofNullable(service.getHeisig6(id)) .map(entity -> new ResponseEntity<>( entity, HttpStatus.OK)) .orElse(new ResponseEntity<>(HttpStatus.NOT_FOUND)); } @RequestMapping(value = "/defaultWord", method = RequestMethod.POST, produces = MediaType.APPLICATION_JSON_VALUE) @RolesAllowed(AuthoritiesConstants.ADMIN) public ResponseEntity<HeisigCoreKw> defaultWord(@RequestParam String kanji, @RequestParam String word, @RequestParam String wordReading, @RequestParam String wordTranslation) { return new ResponseEntity<>( service.setDefaultHeisigWord(kanji, word, wordReading, wordTranslation), HttpStatus.OK); } }