package org.jboss.resteasy.test.providers.jaxb.resource;

import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlAttribute;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlRootElement;
import javax.xml.bind.annotation.XmlType;
import java.util.ArrayList;
import java.util.List;

@XmlRootElement
@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "ordertype", propOrder =
      {"person", "shipto", "items"})
public class Order {

   private String person;

   private ShipTo shipto;

   @XmlElement(name = "item", required = true)
   private List<Item> items = new ArrayList<Item>();

   @XmlAttribute(required = true)
   private String orderid;

   /**
    * Get the person.
    *
    * @return the person.
    */
   public String getPerson() {
      return person;
   }

   /**
    * Set the person.
    *
    * @param person The person to set.
    */
   public void setPerson(String person) {
      this.person = person;
   }

   /**
    * Get the shipto.
    *
    * @return the shipto.
    */
   public ShipTo getShipto() {
      return shipto;
   }

   /**
    * Set the shipto.
    *
    * @param shipto The shipto to set.
    */
   public void setShipto(ShipTo shipto) {
      this.shipto = shipto;
   }

   /**
    * Add item to items
    *
    * @param item
    */
   public void addItem(Item item) {
      item.setOrder(this);
      items.add(item);
   }

   /**
    * Get the item.
    *
    * @return the item.
    */
   public List<Item> getItems() {
      return items;
   }

   public Item getItem(int index) {
      return items.get(index);
   }

   /**
    * Remove item from items
    *
    * @param item
    */
   public void removeItem(Item item) {
      items.remove(item);
   }

   /**
    * Remove item on specified index
    *
    * @param index
    * @return
    */
   public Item removeItem(int index) {
      return items.remove(index);
   }

   /**
    * Set the item.
    *
    * @param item The item to set.
    */
   public void setItems(List<Item> items) {
      this.items = items;
   }

   /**
    * Get the orderid.
    *
    * @return the orderid.
    */
   public String getOrderid() {
      return orderid;
   }

   /**
    * Set the orderid.
    *
    * @param orderid The orderid to set.
    */
   public void setOrderid(String orderid) {
      this.orderid = orderid;
   }
}
