package de.twenty11.skysail.server.ext.notes.domain; import java.util.Date; import javax.persistence.Entity; import javax.persistence.GeneratedValue; import javax.persistence.GenerationType; import javax.persistence.Id; import javax.persistence.JoinColumn; import javax.persistence.Lob; import javax.persistence.ManyToOne; import javax.persistence.TableGenerator; import javax.persistence.Temporal; import javax.persistence.TemporalType; import javax.validation.constraints.NotNull; import javax.validation.constraints.Size; 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 = "noteform") public class Note extends Component { public static final String TITLE = "title"; public static final String CONTENT = "content"; @Id @TableGenerator(name = "EXT_NOTES_NOTE_TABLE_GEN", table = "SEQUENCE", pkColumnValue = "EXT_NOTES_NOTE_SEQ") @GeneratedValue(strategy = GenerationType.TABLE, generator = "EXT_NOTES_NOTE_TABLE_GEN") private int pid; @Field @NotNull(message = "Title is mandatory") @Size(min = 1, message = "title must not be empty") // TODO define business requirements // TODO proper handling of special characters, XSS private String title; @Field(tag = "textarea") // @Column(columnDefinition = "CLOB") @Lob private String content; private Folder parent; @Temporal(TemporalType.TIMESTAMP) private Date created; @ManyToOne() @JoinColumn(name = "owner", nullable = false) private SkysailUser owner; public Note() { } public Note(Folder parent, String title, String content) { this.parent = parent; this.title = title; this.content = content; this.created = new Date(); } public void setPid(int pid) { this.pid = pid; } public int getPid() { return pid; } public String getTitle() { return title; } public String getContent() { return content; } public Date getCreated() { return created; } public Folder getParent() { return parent; } public SkysailUser getOwner() { return owner; } public void setOwner(SkysailUser owner) { this.owner = owner; } @Override public String toString() { return getTitle(); } }