package pl.net.bluesoft.rnd.processtool.model.config; import org.hibernate.annotations.*; import pl.net.bluesoft.rnd.processtool.model.AbstractPersistentEntity; import pl.net.bluesoft.rnd.processtool.model.PersistentEntity; import javax.persistence.*; import javax.persistence.CascadeType; import javax.persistence.Entity; import javax.persistence.Parameter; import javax.persistence.Table; import javax.xml.bind.annotation.XmlTransient; import java.util.HashSet; import java.util.Set; import static pl.net.bluesoft.util.lang.FormatUtil.nvl; /** * @author tlipski@bluesoft.net.pl */ @Entity @Table(name="pt_process_state_widget") public class ProcessStateWidget extends AbstractPersistentEntity { @Id @GeneratedValue(generator = "idGenerator") @GenericGenerator( name = "idGenerator", strategy = "org.hibernate.id.enhanced.SequenceStyleGenerator", parameters = { @org.hibernate.annotations.Parameter(name = "initial_value", value = "" + 1), @org.hibernate.annotations.Parameter(name = "value_column", value = "_DB_ID"), @org.hibernate.annotations.Parameter(name = "sequence_name", value = "DB_SEQ_ID_PROC_STATE_WIDGET") } ) @Column(name = "id") protected Long id; // @XmlTransient @ManyToOne @JoinColumn(name="state_id") private ProcessStateConfiguration config; // @XmlTransient @ManyToOne @JoinColumn(name="parent_id") private ProcessStateWidget parent; @OneToMany(cascade = CascadeType.ALL) @JoinColumn(name="parent_id") private Set<ProcessStateWidget> children = new HashSet(); @OneToMany(cascade = CascadeType.ALL) @JoinColumn(name="widget_id") private Set<ProcessStateWidgetPermission> permissions = new HashSet(); @OneToMany(cascade = CascadeType.ALL) @JoinColumn(name="widget_id") private Set<ProcessStateWidgetAttribute> attributes = new HashSet(); private String name; private String className; private Boolean optional; private Integer priority = Integer.valueOf(0); private String generateFromCollection; @Transient private String generatorKey; public Long getId() { return id; } public void setId(Long id) { this.id = id; } public String getClassName() { return className; } public void setClassName(String className) { this.className = className; } @XmlTransient public ProcessStateWidget getParent() { return parent; } // @XmlTransient public void setParent(ProcessStateWidget parent) { this.parent = parent; } public Set<ProcessStateWidget> getChildren() { if (children == null) children = new HashSet<ProcessStateWidget>(); return children; } public void setChildren(Set<ProcessStateWidget> children) { this.children = children; } public Set<ProcessStateWidgetAttribute> getAttributes() { if (attributes == null) attributes = new HashSet<ProcessStateWidgetAttribute>(); return attributes; } public void setAttributes(Set<ProcessStateWidgetAttribute> attributes) { this.attributes = attributes; } @XmlTransient public ProcessStateConfiguration getConfig() { return config; } // @XmlTransient public void setConfig(ProcessStateConfiguration config) { this.config = config; } public String getName() { return nvl(name, className); } public void setName(String name) { this.name = name; } public Set<ProcessStateWidgetPermission> getPermissions() { if (permissions == null) permissions = new HashSet<ProcessStateWidgetPermission>(); return permissions; } public void setPermissions(Set<ProcessStateWidgetPermission> permissions) { this.permissions = permissions; } public Integer getPriority() { if (priority == null) priority = Integer.valueOf(0); return priority; } public void setPriority(Integer priority) { this.priority = priority; } public Boolean getOptional() { return optional; } public void setOptional(Boolean optional) { this.optional = optional; } public String getGeneratorKey() { return generatorKey; } public void setGeneratorKey(String generatorKey) { this.generatorKey = generatorKey; } public String getGenerateFromCollection() { return generateFromCollection; } public void setGenerateFromCollection(String generateFromCollection) { this.generateFromCollection = generateFromCollection; } }