package study.springcaps;

import jakarta.xml.bind.annotation.XmlAccessType;
import jakarta.xml.bind.annotation.XmlAccessorType;
import jakarta.xml.bind.annotation.XmlAttribute;
import jakarta.xml.bind.annotation.XmlElement;
import jakarta.xml.bind.annotation.XmlRootElement;
import jakarta.xml.bind.annotation.XmlType;

/**
 * U49 OXM 教学模型：一个订单与其条目。
 * JAXB 注解只描述映射；能不能被 Jaxb2Marshaller 处理由 supports()/@XmlRootElement 检查决定。
 */
@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "order", propOrder = {"id", "items"})
@XmlRootElement(name = "order")
public class Order {

    @XmlAttribute
    private String currency;

    @XmlElement(required = true)
    private String id;

    @XmlElement(name = "item")
    private java.util.List<Item> items;

    public Order() {
    }

    public Order(String currency, String id, java.util.List<Item> items) {
        this.currency = currency;
        this.id = id;
        this.items = items;
    }

    public String getCurrency() {
        return currency;
    }

    public String getId() {
        return id;
    }

    public java.util.List<Item> getItems() {
        return items;
    }

    @XmlAccessorType(XmlAccessType.FIELD)
    @XmlType(name = "item", propOrder = {"sku", "quantity", "price"})
    public static class Item {

        @XmlAttribute
        private String sku;

        @XmlElement(required = true)
        private int quantity;

        @XmlElement(required = true)
        private java.math.BigDecimal price;

        public Item() {
        }

        public Item(String sku, int quantity, java.math.BigDecimal price) {
            this.sku = sku;
            this.quantity = quantity;
            this.price = price;
        }

        public String getSku() {
            return sku;
        }

        public int getQuantity() {
            return quantity;
        }

        public java.math.BigDecimal getPrice() {
            return price;
        }
    }
}
