br.com.hyperclass.snackbar.restapi.StockController.java Source code

Java tutorial

Introduction

Here is the source code for br.com.hyperclass.snackbar.restapi.StockController.java

Source

/*
 * snackbar 1.0 27 de out de 2016
 *
 * Copyright (c) 2016, hyperCLASS. All rights reserved. hyperCLASS
 * proprietary/confidential. Use is subject to license terms.
 */
package br.com.hyperclass.snackbar.restapi;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpStatus;
import org.springframework.http.MediaType;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;

import br.com.hyperclass.snackbar.domain.product.Product;
import br.com.hyperclass.snackbar.domain.stock.Stock;
import br.com.hyperclass.snackbar.domain.stock.StockException;
import br.com.hyperclass.snackbar.restapi.wrapper.ProductWrapper;
import br.com.hyperclass.snackbar.restapi.wrapper.ProductsWrapper;

/**
 * A <code>StockController</code> contem as rotas para adicionar produtos e remover produtos
 * do Stock, tambem contem a rota de mostrar todos produtos disponivel.
 * 
 * @author Joo Batista
 * @version 1.0 27 de out de 2016
 */
@RestController
public class StockController {

    private final Stock stock;

    @Autowired
    public StockController(final Stock stock) {
        super();
        this.stock = stock;
    }

    @RequestMapping(value = "/stock/", method = RequestMethod.POST, produces = MediaType.APPLICATION_JSON_UTF8_VALUE, consumes = MediaType.APPLICATION_JSON_UTF8_VALUE)
    public ResponseEntity<ProductWrapper> addItemStock(@RequestBody final ProductWrapper productWrapper) {
        final Product product = new Product(productWrapper.getName(), productWrapper.getPrice());
        stock.addItemStock(product);
        return new ResponseEntity<>(HttpStatus.OK);
    }

    @RequestMapping(value = "/stock/", method = RequestMethod.DELETE, produces = MediaType.APPLICATION_JSON_UTF8_VALUE, consumes = MediaType.APPLICATION_JSON_UTF8_VALUE)
    public ResponseEntity<ProductWrapper> removeItemStock(@RequestBody final ProductWrapper productWrapper)
            throws StockException {
        final Product product = new Product(productWrapper.getName(), productWrapper.getPrice());
        stock.removeItemStock(product);
        return new ResponseEntity<>(HttpStatus.OK);
    }

    @RequestMapping(value = "/stock/", method = RequestMethod.GET)
    public ResponseEntity<ProductsWrapper> orderItemProducts() {
        return new ResponseEntity<ProductsWrapper>(new ProductsWrapper(stock.getProducts()), HttpStatus.OK);
    }

}