package de.twenty11.skysail.server.ext.notes.domain; import javax.persistence.Entity; import javax.persistence.GeneratedValue; import javax.persistence.GenerationType; import javax.persistence.Id; import javax.persistence.JoinColumn; import javax.persistence.ManyToOne; import javax.persistence.TableGenerator; import javax.validation.constraints.NotNull; import javax.validation.constraints.Size; import org.apache.commons.lang.Validate; import de.twenty11.skysail.common.forms.Field; import de.twenty11.skysail.common.forms.Form; import de.twenty11.skysail.server.um.domain.SkysailUser; /** * */ @Entity @Form(name = "folderform") public class Folder extends Component implements Comparable<Folder> { @Id @TableGenerator(name = "TABLE_GEN", table = "SEQUENCE", pkColumnValue = "EXT_NOTES_SEQ") @GeneratedValue(strategy = GenerationType.TABLE, generator = "TABLE_GEN") protected int pid;// primary key for db private Folder parent; @ManyToOne() @JoinColumn(name = "owner", nullable = false) private SkysailUser owner; @Field @NotNull(message = "Name is mandatory") @Size(min = 1, message = "name must not be empty") private String folderName; public int getPid() { return this.pid; } @Override public boolean equals(Object obj) { if (this == obj) { return true; } if (obj == null) { return false; } if (getClass() != obj.getClass()) { return false; } Folder other = (Folder) obj; if (pid != other.getPid()) { return false; } return true; } @Override public int hashCode() { final int prime = 31; int result = 1; result = prime * result + pid; return result; } public static Folder createRoot(String folderName) { return new Folder(null, folderName); } public Folder() { // needed for EclipseLink } public Folder(Folder parent, String folderName) { Validate.notNull(folderName, "A folder needs a name"); this.parent = parent; this.folderName = folderName; this.parent = parent; } public static boolean isRootFolder(Folder folder) { return folder.parent == null; } public Folder getParent() { return parent; } public String getFolderName() { return folderName; } @Override public int compareTo(Folder other) { return folderName.compareTo(other.getFolderName()); } public SkysailUser getOwner() { return owner; } public void setOwner(SkysailUser owner) { this.owner = owner; } @Override public String toString() { return folderName; } }