Commit 2bd7ca5f by Patryk Czarnik

RProductsXML - pierwsza działająca wersja

parent 2c7d40f1
......@@ -5,12 +5,14 @@ import java.util.Objects;
import javax.xml.bind.annotation.XmlAttribute;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlRootElement;
/* Technologia JAXB jest odpowiedzialna za automatyczne tłumaczenie obiektów Javy do postaci XML i odwrotnie.
* To działa w oparciu o adnotacje, których większośc rozpoczyna się od @Xml....
* Za pomocą takich adnotacji możemy wpłynąć na postać XML (nazwy, kolejność, sposób konwersji).
*/
@XmlRootElement
public class Product {
@XmlAttribute(name="id")
private Integer productId;
......
package sklep.rest;
import java.math.BigDecimal;
import java.util.List;
import javax.ws.rs.Consumes;
import javax.ws.rs.DELETE;
import javax.ws.rs.GET;
import javax.ws.rs.POST;
import javax.ws.rs.PUT;
import javax.ws.rs.Path;
import javax.ws.rs.PathParam;
import javax.ws.rs.Produces;
import sklep.db.DBConnection;
import sklep.db.DBException;
import sklep.db.ProductDAO;
import sklep.db.RecordNotFound;
import sklep.model.Product;
import sklep.photo.PhotoUtil;
@Path("/products.xml")
@Produces("application/xml")
@Consumes("application/xml")
public class RProductsXML {
@GET
public List<Product> readAll() throws DBException {
try(DBConnection db = DBConnection.open()) {
ProductDAO productDAO = db.productDAO();
return productDAO.readAll();
}
}
@GET
@Path("/{id}")
public Product readOne(@PathParam("id") int productId) throws DBException, RecordNotFound {
try(DBConnection db = DBConnection.open()) {
ProductDAO productDAO = db.productDAO();
return productDAO.findById(productId);
}
}
@GET
@Path("/{id}/price")
@Produces("text/plain")
public BigDecimal getPrice(@PathParam("id") int productId) throws DBException, RecordNotFound {
try(DBConnection db = DBConnection.open()) {
ProductDAO productDAO = db.productDAO();
Product product = productDAO.findById(productId);
return product.getPrice();
}
}
@PUT
@Path("/{id}/price")
@Consumes("text/plain")
public void setPrice(@PathParam("id") int productId, BigDecimal newPrice) throws DBException, RecordNotFound {
try(DBConnection db = DBConnection.open()) {
ProductDAO productDAO = db.productDAO();
Product product = productDAO.findById(productId);
product.setPrice(newPrice);
productDAO.update(product);
db.commit();
}
}
@POST
public Product addProduct(Product product) throws DBException {
try(DBConnection db = DBConnection.open()) {
ProductDAO productDAO = db.productDAO();
if(product.getProductId() != null) {
throw new IllegalArgumentException("Nowy produkt nie może mieć ustawionego ID");
}
productDAO.insertNew(product);
db.commit();
return product;
}
}
@DELETE
@Path("/{id}")
public void removeProduct(@PathParam("id") int productId) throws DBException, RecordNotFound {
try(DBConnection db = DBConnection.open()) {
ProductDAO productDAO = db.productDAO();
if(productDAO.delete(productId)) {
db.commit();
} else {
throw new RecordNotFound("Nie ma produktu nr " + productId);
}
}
}
@GET
@Path("/{id}/photo")
@Produces("image/jpeg")
public byte[] getPhoto(@PathParam("id") int productId) throws DBException, RecordNotFound {
return PhotoUtil.readBytes(productId);
}
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment