package org.jboss.resteasy.test.cdi.basic.resource;

import javax.persistence.Entity;
import javax.persistence.Id;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Size;
import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlRootElement;
import java.io.Serializable;

/**
 * Book is
 * 1) a JAXB class, suitable for transport over the network, and
 * 2) an @Entity class, suitable for JPA storage
 *
 * It implements Serializable so that it can be returned from a JAX-RS resource
 * in its role as EJB.
 */
@Entity
@XmlRootElement(name = "book")
@XmlAccessorType(XmlAccessType.FIELD)
public class EJBBook implements Serializable {
   private static final long serialVersionUID = 1L;

   @XmlElement
   private int id;

   @XmlElement
   @NotNull
   @Size(min = 1, max = 25)
   private String name;

   public EJBBook() {
   }

   public EJBBook(final String name) {
      this.name = name;
   }

   public EJBBook(final int id, final String name) {
      this.id = id;
      this.name = name;
   }

   @Id
   public int getId() {
      return id;
   }

   public void setId(int id) {
      this.id = id;
   }


   public String getName() {
      return name;
   }

   public void setName(String name) {
      this.name = name;
   }

   public String toString() {
      return "Book[" + id + "," + name + "]";
   }

   public boolean equals(Object o) {
      if (o == null || !(o instanceof EJBBook)) {
         return false;
      }
      return name.equals(((EJBBook) o).name);
   }

   @Override
   public int hashCode() {
      return super.hashCode();
   }
}
