package entity.building; import com.sun.istack.internal.NotNull; import gui.interfaces.EditorComponent; import gui.interfaces.NotRemovableUnlessEmpty; import op.tools.SYSTools; import org.hibernate.validator.constraints.NotEmpty; import javax.persistence.*; import javax.validation.constraints.Max; import javax.validation.constraints.Min; import javax.validation.constraints.Size; import java.util.ArrayList; import java.util.List; /** * Created by tloehr on 04.05.15. */ @Entity @Table(name = "floors") public class Floors { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) @Column(name = "floorid") @EditorComponent(label = "misc.msg.primary.key", component = {"textfield"}, readonly = "true") private long floorid; @JoinColumn(name = "HomeID", referencedColumnName = "EID") @ManyToOne @NotNull private Homes home; @Basic @Column(name = "name", nullable = true, insertable = true, updatable = true, length = 30) @Size(min = 1, max = 30) @NotEmpty @EditorComponent(label = "misc.msg.nameOfElement", component = {"textfield"}) private String name; @Basic @Column(name = "level", nullable = true, insertable = true, updatable = true) @Min(0) @Max(8) @EditorComponent(label = "misc.msg.floor", component = {"combobox", "2.Untergeschoss", "1.Untergeschoss", "Erdgeschoss", "1.Etage", "2.Etage", "3.Etage", "4.Etage", "5.Etage", "6.Etage"}) private Integer level; @Basic @Column(name = "lift", nullable = true, insertable = true, updatable = true) @Min(0) @Max(10) @EditorComponent(label = "misc.msg.lifts", parserClass = "gui.parser.IntegerParser", component = {"textfield"}, tooltip = "misc.msg.lifts.connecting.this.floor") private Integer lift; // number of lifts connecting to this floor @Version @Column(name = "version") private Long version; @OneToMany(cascade = CascadeType.ALL, mappedBy = "floor", fetch = FetchType.EAGER) @NotRemovableUnlessEmpty(message = "msg.cantberemoved.rooms.assigned") private List<Rooms> rooms; private static final long serialVersionUID = 1L; public long getFloorid() { return floorid; } public void setFloorid(long floorid) { this.floorid = floorid; } public Floors() { } public Floors(Homes home, String name) { this.home = home; this.name = name; level = 2; // means groundfloor lift = 0; rooms = new ArrayList<>(); Rooms newRoom = new Rooms(SYSTools.xx("opde.settings.home.btnAddRoom"), true, true, this); rooms.add(newRoom); } public String getName() { return name; } public void setName(String name) { this.name = name; } public Integer getLevel() { return level; } public void setLevel(Integer level) { this.level = level; } public Integer getLift() { return lift; } public void setLift(Integer lift) { this.lift = lift; } public Homes getHome() { return home; } public void setHome(Homes home) { this.home = home; } public List<Rooms> getRooms() { return rooms; } @Override public boolean equals(Object o) { if (this == o) return true; if (o == null || getClass() != o.getClass()) return false; Floors floors = (Floors) o; if (floorid != floors.floorid) return false; if (name != null ? !name.equals(floors.name) : floors.name != null) return false; if (level != null ? !level.equals(floors.level) : floors.level != null) return false; if (lift != null ? !lift.equals(floors.lift) : floors.lift != null) return false; return !(home != null ? !home.equals(floors.home) : floors.home != null); } @Override public int hashCode() { int result = (int) (floorid ^ (floorid >>> 32)); result = 31 * result + (name != null ? name.hashCode() : 0); result = 31 * result + (level != null ? level.hashCode() : 0); result = 31 * result + (lift != null ? lift.hashCode() : 0); result = 31 * result + (home != null ? home.hashCode() : 0); return result; } @Override public String toString() { return "Floors{" + "floorid=" + floorid + ", name='" + name + '\'' + ", level=" + level + ", lift=" + lift + ", home=" + home + ", rooms=" + rooms + '}'; } // // public String getKey(){ // return "floor:"+floorid; // } }