Commit 5f05ee74 by Patryk Czarnik

Dodatkowe klasy ProductList i Price na potrzeby XML

parent 623a5154
...@@ -15,7 +15,9 @@ import sklep.db.DBConnection; ...@@ -15,7 +15,9 @@ import sklep.db.DBConnection;
import sklep.db.DBException; import sklep.db.DBException;
import sklep.db.ProductDAO; import sklep.db.ProductDAO;
import sklep.db.RecordNotFound; import sklep.db.RecordNotFound;
import sklep.model.Price;
import sklep.model.Product; import sklep.model.Product;
import sklep.model.ProductList;
@Path("/products.xml") @Path("/products.xml")
@Produces("application/xml") @Produces("application/xml")
...@@ -23,10 +25,10 @@ import sklep.model.Product; ...@@ -23,10 +25,10 @@ import sklep.model.Product;
public class RProductsXML { public class RProductsXML {
@GET @GET
public List<Product> readAll() throws DBException { public ProductList readAll() throws DBException {
try(DBConnection db = DBConnection.open()) { try(DBConnection db = DBConnection.open()) {
ProductDAO productDAO = db.productDAO(); ProductDAO productDAO = db.productDAO();
return productDAO.readAll(); return new ProductList(productDAO.readAll());
} }
} }
...@@ -50,20 +52,20 @@ public class RProductsXML { ...@@ -50,20 +52,20 @@ public class RProductsXML {
@GET @GET
@Path("/{id}/price") @Path("/{id}/price")
public BigDecimal getPrice(@PathParam("id") int productId) throws DBException, RecordNotFound { public Price getPrice(@PathParam("id") int productId) throws DBException, RecordNotFound {
try(DBConnection db = DBConnection.open()) { try(DBConnection db = DBConnection.open()) {
ProductDAO productDAO = db.productDAO(); ProductDAO productDAO = db.productDAO();
return productDAO.findById(productId).getPrice(); return new Price(productDAO.findById(productId).getPrice());
} }
} }
@PUT @PUT
@Path("/{id}/price") @Path("/{id}/price")
public void setPrice(@PathParam("id") int productId, BigDecimal newPrice) throws DBException, RecordNotFound { public void setPrice(@PathParam("id") int productId, Price newPrice) throws DBException, RecordNotFound {
try(DBConnection db = DBConnection.open()) { try(DBConnection db = DBConnection.open()) {
ProductDAO productDAO = db.productDAO(); ProductDAO productDAO = db.productDAO();
Product product = productDAO.findById(productId); Product product = productDAO.findById(productId);
product.setPrice(newPrice); product.setPrice(newPrice.getValue());
productDAO.update(product); productDAO.update(product);
db.commit(); db.commit();
} }
......
package sklep.model;
import java.math.BigDecimal;
import jakarta.xml.bind.annotation.XmlRootElement;
import jakarta.xml.bind.annotation.XmlValue;
@XmlRootElement
public class Price {
@XmlValue
private BigDecimal value;
public Price() {
this.value = BigDecimal.ZERO;
}
public Price(BigDecimal value) {
this.value = value;
}
public BigDecimal getValue() {
return value;
}
public void setValue(BigDecimal value) {
this.value = value;
}
@Override
public String toString() {
return value.toString();
}
}
package sklep.model;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
import java.util.List;
import jakarta.xml.bind.annotation.XmlElement;
import jakarta.xml.bind.annotation.XmlRootElement;
@XmlRootElement(name="products")
public class ProductList {
@XmlElement(name="product")
private final List<Product> products = new ArrayList<>();
public ProductList() {
// zostawia pustą listę
}
public ProductList(Collection<Product> products) {
this.products.addAll(products);
}
public List<Product> getProducts() {
return Collections.unmodifiableList(this.products);
}
public void setProducts(Collection<Product> products) {
this.products.clear();
this.products.addAll(products);
}
@Override
public String toString() {
return this.products.toString();
}
}
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