View Javadoc
1   package pl.matsuo.core.model;
2   
3   import pl.matsuo.core.model.api.HasId;
4   
5   import javax.persistence.GeneratedValue;
6   import javax.persistence.Id;
7   import javax.persistence.MappedSuperclass;
8   import javax.persistence.SequenceGenerator;
9   import java.util.Date;
10  
11  import static javax.persistence.GenerationType.*;
12  
13  
14  @MappedSuperclass
15  public abstract class AbstractEntity implements HasId, Comparable<AbstractEntity> {
16  
17  
18    @Id
19    @GeneratedValue(strategy = SEQUENCE, generator = "AbstractEntitySequence")
20    @SequenceGenerator(name = "AbstractEntitySequence", sequenceName = "entity_seq")
21    protected Integer id;
22    protected Date createdTime;
23    /**
24     * <p>
25     * This is id defining most general data association to privileges. In most common situation this id is
26     * user id or company id (data aggregated for many users in organization). This id must always match user's
27     * idBucket.
28     * </p>
29     * <p>
30     * All client data must have idBucket assigned. Only it administrative data (like logs from logged-off users) may be
31     * disconnected.
32     * </p>
33     */
34    protected Integer idBucket;
35  
36  
37    @Override
38    public int compareTo(AbstractEntity entity) {
39      return id.compareTo(entity.getId());
40    }
41  
42  
43    // getters & setters
44    @Override
45    public Integer getId() {
46      return id;
47    }
48    @Override
49    public void setId(Integer id) {
50      this.id = id;
51    }
52    public Date getCreatedTime() {
53      return createdTime;
54    }
55    public void setCreatedTime(Date createdTime) {
56      this.createdTime = createdTime;
57    }
58    public Integer getIdBucket() {
59      return idBucket;
60    }
61    public void setIdBucket(Integer idBucket) {
62      this.idBucket = idBucket;
63    }
64  }
65