package org.springframework.samples.petportal.domain; import java.io.Serializable; import java.util.Date; import org.springframework.util.Assert; /** * A simple domain object representing a Pet. * * @author John A. Lewis * @author Mark Fisher */ public class Pet implements Comparable, Serializable { private Integer key; private String species; private String breed; private String name; private Date birthdate; private String description; private int hashCode = Integer.MIN_VALUE; public Pet() { super(); } public Pet(String species, String breed, String name, Date birthdate) { super(); setSpecies(species); setBreed(breed); setName(name); setBirthdate(birthdate); } /** * Get the Pet's name. * * @return name */ public String getName() { return name; } /** * Set the Pet's name. */ public void setName(String name) { Assert.notNull(name, "name may not be null"); this.name = name; this.hashCode = Integer.MIN_VALUE; } /** * Get the Pet's species. * * @return species */ public String getSpecies() { return species; } /** * Set the Pet's species. */ public void setSpecies(String species) { Assert.notNull(species, "species may not be null"); this.species = species; this.hashCode = Integer.MIN_VALUE; } /** * Get the Pet's breed. * * @return breed */ public String getBreed() { return this.breed; } /** * Set the Pet's breed. */ public void setBreed(String breed) { Assert.notNull(breed, "breed may not be null"); this.breed = breed; this.hashCode = Integer.MIN_VALUE; } /** * Get the Pet's birthdate. * * @return birthdate */ public Date getBirthdate() { return birthdate; } /** * Set the Pet's birthdate. */ public void setBirthdate(Date birthdate) { this.birthdate = birthdate; } /** * Get the Pet's description * * @return description */ public String getDescription() { return description; } /** * Set the Pet's description. */ public void setDescription(String description) { this.description = description; } /** * Get the Pet's key. * * @return key */ public Integer getKey() { return key; } /** * Set the Pet's key. */ public void setKey(Integer key) { this.key = key; } public int compareTo(Object obj) { if (obj == null) { throw new NullPointerException("Cannot compare to null object"); } if (!(obj instanceof Pet)) { throw new ClassCastException("Can only compare to class " + this.getClass().getName()); } if (this.species == null || this.breed == null || this.name == null) { throw new NullPointerException("This object is not initialized yet"); } if (this.equals(obj)) { return 0; } Pet pet = (Pet) obj; int res = getSpecies().compareTo(pet.getSpecies()); if (res != 0) { return res; } res = getBreed().compareTo(pet.getBreed()); if (res != 0) { return res; } return getName().compareTo(pet.getName()); } public boolean equals(Object obj) { if (obj == null) { return false; } if (!(obj instanceof Pet)) { return false; } if (this.species == null || this.breed == null || this.name == null) { return false; } Pet pet = (Pet) obj; return (this.species.equals(pet.getSpecies()) && this.breed.equals(pet.getBreed()) && this.name.equals(pet.getName())); } public int hashCode() { if (Integer.MIN_VALUE == this.hashCode) { String hashStr = this.getClass().getName() + ":" + this.toString(); this.hashCode = hashStr.hashCode(); } return this.hashCode; } public String toString() { return this.species + ":" + this.breed + ":" + this.name; } }