package de.rwth.idsg.bikeman.domain;
import lombok.*;
import org.hibernate.annotations.Cache;
import org.hibernate.annotations.CacheConcurrencyStrategy;
import org.hibernate.annotations.Type;
import org.joda.time.LocalDateTime;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.EnumType;
import javax.persistence.Enumerated;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.Table;
import javax.persistence.TableGenerator;
import java.io.Serializable;
/**
* Created by max on 26/06/15.
*/
@Entity
@Table(name = "T_TRANSACTION_EVENT")
//@Cache(usage = CacheConcurrencyStrategy.NONSTRICT_READ_WRITE)
@TableGenerator(name="transaction_event_gen", initialValue=0, allocationSize=1)
@EqualsAndHashCode
@Getter
@Setter
public class TransactionEvent implements Serializable {
private static final long serialVersionUID = 855587893926001422L;
@Id
@GeneratedValue(strategy = GenerationType.TABLE, generator = "transaction_event_gen")
@Column(name = "transaction_event_id")
private Long transactionEventId;
@Column(name = "arrived_timestamp")
@Type(type = "org.jadira.usertype.dateandtime.joda.PersistentLocalDateTime")
private LocalDateTime arrivedTimestamp;
@Column(name = "type")
@Enumerated(EnumType.STRING)
private TransactionType type;
@Column(name = "status")
@Enumerated(EnumType.STRING)
private TransactionStatus status;
@Column(name = "timestamp")
@Type(type = "org.jadira.usertype.dateandtime.joda.PersistentLocalDateTime")
private LocalDateTime timestamp;
@ManyToOne
@JoinColumn(name = "card_account_id")
private CardAccount cardAccount;
@ManyToOne
@JoinColumn(name = "station_slot_id")
private StationSlot stationSlot;
@ManyToOne
@JoinColumn(name = "pedelec_id")
private Pedelec pedelec;
}