package hu.sch.domain.logging; import hu.sch.domain.Group; import hu.sch.domain.user.User; import java.io.Serializable; import java.util.Date; import javax.persistence.Column; import javax.persistence.Entity; import javax.persistence.EnumType; import javax.persistence.Enumerated; import javax.persistence.GeneratedValue; import javax.persistence.Id; import javax.persistence.JoinColumn; import javax.persistence.ManyToOne; import javax.persistence.NamedQueries; import javax.persistence.NamedQuery; import javax.persistence.SequenceGenerator; import javax.persistence.Table; import javax.persistence.Temporal; import javax.persistence.TemporalType; /** * * @author aldaris */ @Entity @Table(name = "log") @NamedQueries({ @NamedQuery(name = Log.getFreshEventsForEventTypeByGroup, query = "SELECT l FROM Log l " + "WHERE l.id > :lastUsedLogId AND l.id <= :lastLogId " + "AND l.event IN :events " + "AND l.group IS NOT NULL " + "ORDER BY l.group.name, l.event, l.user.lastName" ), @NamedQuery(name = Log.getFreshEventsForSvie, query = "SELECT l FROM Log l " + "WHERE l.id > :lastUsedLogId AND l.id <= :lastLogId " + "AND l.event IN :events " + "AND l.group IS NULL " + "ORDER BY l.event, l.user.lastName" ), @NamedQuery(name = Log.getLastId, query = "SELECT l.id FROM Log l ORDER BY l.id DESC" ) }) @SequenceGenerator(name = "log_seq", sequenceName = "log_seq", allocationSize = 1) public class Log implements Serializable { private static final long serialVersionUID = 1l; public static final String getFreshEventsForEventTypeByGroup = "getFreshEventsForEventTypeByGroup"; public static final String getFreshEventsForSvie = "getFreshEventsForSvie"; public static final String getLastId = "getLastId"; // @Id @GeneratedValue(generator = "log_seq") @Column(name = "id") private Long id; // @ManyToOne @JoinColumn(name = "grp_id", insertable = true, updatable = false) private Group group; // @ManyToOne @JoinColumn(name = "usr_id", insertable = true, updatable = false) private User user; // @Enumerated(EnumType.STRING) @Column(name = "event", length = 30) private EventType event; // @Temporal(TemporalType.DATE) @Column(name = "evt_date", columnDefinition = "timestamp") private Date eventDate; protected Log() { } public Log(final Group group, final User user, final EventType event, final Date eventDate) { this.group = group; this.user = user; this.event = event; this.eventDate = eventDate; } public Long getId() { return id; } public Group getGroup() { return group; } public User getUser() { return user; } public EventType getEvent() { return event; } public Date getEventDate() { return eventDate; } }