content: /*
   * Copyright 2012-2019 the original author or authors.
   *
   * Licensed under the Apache License, Version 2.0 (the "License");
   * you may not use this file except in compliance with the License.
   * You may obtain a copy of the License at
   *
   *      https://www.apache.org/licenses/LICENSE-2.0
   *
   * Unless required by applicable law or agreed to in writing, software
   * distributed under the License is distributed on an "AS IS" BASIS,
   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
   * See the License for the specific language governing permissions and
   * limitations under the License.
   */
  package org.springframework.samples.petclinic.owner;
  
  import java.time.LocalDate;
  import java.util.Collection;
  import java.util.LinkedHashSet;
  import java.util.Set;
  
  import javax.persistence.CascadeType;
  import javax.persistence.Column;
  import javax.persistence.Entity;
  import javax.persistence.FetchType;
  import javax.persistence.JoinColumn;
  import javax.persistence.ManyToOne;
  import javax.persistence.OneToMany;
  import javax.persistence.OrderBy;
  import javax.persistence.Table;
  
  import org.springframework.format.annotation.DateTimeFormat;
  import org.springframework.samples.petclinic.model.NamedEntity;
  
  /**
   * Simple business object representing a pet.
   *
   * @author Ken Krebs
   * @author Juergen Hoeller
   * @author Sam Brannen
   */
  @Entity
  @Table(name = "pets")
  public class Pet extends NamedEntity {
  
  	@Column(name = "birth_date")
  	@DateTimeFormat(pattern = "yyyy-MM-dd")
  	private LocalDate birthDate;
  
  	@ManyToOne
  	@JoinColumn(name = "type_id")
  	private PetType type;
  
  	@OneToMany(cascade = CascadeType.ALL, fetch = FetchType.EAGER)
  	@JoinColumn(name = "pet_id")
  	@OrderBy("visit_date ASC")
  	private Set<Visit> visits = new LinkedHashSet<>();
  
  	public void setBirthDate(LocalDate birthDate) {
  		this.birthDate = birthDate;
  	}
  
  	public LocalDate getBirthDate() {
  		return this.birthDate;
  	}
  
  	public PetType getType() {
  		return this.type;
  	}
  
  	public void setType(PetType type) {
  		this.type = type;
  	}
  
  	public Collection<Visit> getVisits() {
  		return this.visits;
  	}
  
  	public void addVisit(Visit visit) {
  		getVisits().add(visit);
  	}
  
  }
  