package org.optaconf.domain; import java.util.ArrayList; import java.util.List; import javax.persistence.CascadeType; import javax.persistence.Entity; import javax.persistence.FetchType; import javax.persistence.OneToMany; import javax.validation.constraints.Min; import javax.validation.constraints.NotNull; import javax.validation.constraints.Size; import com.fasterxml.jackson.annotation.JsonManagedReference; import org.apache.commons.lang3.builder.CompareToBuilder; import org.optaplanner.core.api.domain.solution.cloner.DeepPlanningClone; @DeepPlanningClone @Entity(name = "optaconf_room") public class Room extends AbstractConferencedPersistable implements Comparable<Room> { @NotNull @Size(max = 120) private String name; @NotNull @Min(0) private int seatingCapacity; @OneToMany(mappedBy = "room", cascade = CascadeType.ALL, fetch = FetchType.EAGER) @JsonManagedReference private List<Talk> talkList = new ArrayList<Talk>(); public Room() { } public Room(Conference conference, String externalId, String name, int seatingCapacity) { super(conference, externalId); this.name = name; this.seatingCapacity = seatingCapacity; } public String getName() { return name; } public void setName(String name) { this.name = name; } public int getSeatingCapacity() { return seatingCapacity; } public void setSeatingCapacity(int seatingCapacity) { this.seatingCapacity = seatingCapacity; } public List<Talk> getTalkList() { return talkList; } public void setTalkList(List<Talk> talkList) { this.talkList = talkList; } // ************************************************************************ // Real methods // ************************************************************************ @Override public int compareTo(Room other) { return new CompareToBuilder() .append(name, other.name) .append(other.seatingCapacity, seatingCapacity) .append(id, other.id) .toComparison(); } }