Commit 2de3211a by Patryk Czarnik

Adnotacje JAXB

parent db45575f
package sklep.model;
import jakarta.xml.bind.annotation.XmlAttribute;
import jakarta.xml.bind.annotation.XmlElement;
import jakarta.xml.bind.annotation.XmlElementWrapper;
import java.time.LocalDateTime;
import java.util.ArrayList;
import java.util.Collection;
......@@ -8,14 +12,20 @@ import java.util.List;
import java.util.Objects;
public class Order {
@XmlAttribute(name="id")
private Integer orderId;
@XmlElement(name="customer-email")
private String customerEmail;
@XmlElement(name="order-date")
private LocalDateTime orderDate;
@XmlAttribute(name="status")
private Status orderStatus;
@XmlElementWrapper(name="products")
@XmlElement(name="product")
public final List<OrderProduct> products = new ArrayList<>();
public Order() {
......@@ -46,9 +56,9 @@ public class Order {
return customerEmail;
}
public void setCustomerEmail(String customerEmail) {
this.customerEmail = customerEmail;
}
// public void setCustomerEmail(String customerEmail) {
// this.customerEmail = customerEmail;
// }
public LocalDateTime getOrderDate() {
return orderDate;
......
package sklep.model;
import jakarta.xml.bind.annotation.XmlAttribute;
import jakarta.xml.bind.annotation.XmlElement;
import java.math.BigDecimal;
import java.util.Objects;
public class OrderProduct {
@XmlAttribute(name="order-id")
private Integer orderId;
@XmlAttribute(name="product-id")
private Integer productId;
private int quantity;
@XmlElement(name="price")
private BigDecimal actualPrice;
public OrderProduct() {
......
package sklep.model;
import jakarta.xml.bind.annotation.XmlAttribute;
import jakarta.xml.bind.annotation.XmlElement;
import java.math.BigDecimal;
import java.util.Objects;
public class Product {
@XmlAttribute(name="id")
private Integer productId;
@XmlElement(name="product-name")
private String productName;
private BigDecimal price;
private BigDecimal vat;
......
@XmlAccessorType(XmlAccessType.FIELD)
package sklep.model;
import jakarta.xml.bind.annotation.XmlAccessType;
import jakarta.xml.bind.annotation.XmlAccessorType;
\ No newline at end of file
......@@ -3,15 +3,17 @@ package sklep.soap;
import jakarta.jws.WebParam;
import jakarta.jws.WebResult;
import jakarta.jws.WebService;
import sklep.db.DBConnection;
import sklep.db.DBException;
import sklep.db.ProductDAO;
import sklep.db.RecordNotFound;
import sklep.model.Product;
import sklep.db.*;
import sklep.model.*;
import java.math.BigDecimal;
import java.util.List;
// JAX-WS - Usługi SOAP w Javie
// JAXB ("XML Binding") - mapowanie obiektów Java na fragmenty XML
// Jeśli chcemy wpłynąć na postać XML, który powstaje z obiektów, to w klasach modelu należy dodać adnotacje JAXB
// @XmlElement, @XmlValue ...
@WebService
public class Sklep {
......@@ -46,4 +48,21 @@ public class Sklep {
db.commit();
}
}
@WebResult(name="customer")
public Customer oneCustomer(@WebParam(name="email") String email) throws DBException, RecordNotFound {
try(DBConnection db = DBConnection.open()) {
CustomerDAO customerDAO = db.customerDAO();
return customerDAO.findByEmail(email);
}
}
@WebResult(name="order")
public Order oneOrder(@WebParam(name="id") int orderId) throws DBException, RecordNotFound {
try(DBConnection db = DBConnection.open()) {
OrderDAO orderDAO = db.orderDAO();
return orderDAO.findById(orderId);
}
}
}
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