//$Id: Hotel.java 6893 2007-12-04 12:05:03Z pmuir $
package org.jboss.seam.example.booking;
import java.io.Serializable;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.OneToMany;
import javax.persistence.Transient;
import org.hibernate.validator.Length;
import org.hibernate.validator.NotNull;
import org.jboss.seam.annotations.Name;
@Entity
@Name("hotel")
public class Hotel implements Serializable
{
private Long id;
private String name;
private String address;
private String city;
private String state;
private String zip;
private String country;
private List<Room> rooms;
Hotel() {
this.rooms = new ArrayList<Room>();
}
@Id @GeneratedValue
public Long getId()
{
return id;
}
public void setId(Long id)
{
this.id = id;
}
@Length(max=50) @NotNull
public String getName()
{
return name;
}
public void setName(String name)
{
this.name = name;
}
@Length(max=100) @NotNull
public String getAddress()
{
return address;
}
public void setAddress(String address)
{
this.address = address;
}
@Length(max=40) @NotNull
public String getCity()
{
return city;
}
public void setCity(String city)
{
this.city = city;
}
@Length(min=4, max=6) @NotNull
public String getZip()
{
return zip;
}
public void setZip(String zip)
{
this.zip = zip;
}
@Length(min=2, max=10) @NotNull
public String getState()
{
return state;
}
public void setState(String state)
{
this.state = state;
}
@Length(min=2, max=40) @NotNull
public String getCountry()
{
return country;
}
public void setCountry(String country)
{
this.country = country;
}
@Transient
public BigDecimal getMinPrice()
{
return this.getStandardRoom().getPrice();
}
@Transient
public BigDecimal getMaxPrice()
{
BigDecimal maxPrice = this.getRooms().get(0).getPrice();
for(int i = 1; i < this.getRooms().size(); i++)
{
Room room = this.getRooms().get(i);
if(maxPrice.compareTo(room.getPrice()) < 0)
{
maxPrice = room.getPrice();
}
}
return maxPrice;
}
@OneToMany
@JoinColumn(name="HOTEL_ID")
public List<Room> getRooms()
{
return rooms;
}
public void setRooms(List<Room> roomsSelections)
{
this.rooms = roomsSelections;
}
@Transient
public List<Room> getAvailableRooms(Date checkinDate, Date checkoutDate)
{
// checking could be performed here to determine which
// rooms are available for the provided dates. to simplify
// the example, just return the list of rooms
return rooms;
}
@Transient
public Room getStandardRoom()
{
for(Room room : this.getRooms())
{
if(room.isIncluded())
{
return room;
}
}
return null;
}
@Override
public String toString()
{
return "Hotel(" + name + "," + address + "," + city + "," + zip + ")";
}
}