package ru.ulstu.ping.model; import jakarta.persistence.Column; import jakarta.persistence.DiscriminatorType; import jakarta.persistence.Entity; import jakarta.persistence.JoinColumn; import jakarta.persistence.ManyToOne; import jakarta.persistence.Table; import jakarta.persistence.Temporal; import jakarta.persistence.TemporalType; import org.hibernate.annotations.Any; import org.hibernate.annotations.AnyDiscriminator; import org.hibernate.annotations.AnyDiscriminatorValue; import org.hibernate.annotations.AnyKeyJavaClass; import org.springframework.format.annotation.DateTimeFormat; import ru.ulstu.conference.model.Conference; import ru.ulstu.core.model.BaseEntity; import ru.ulstu.core.model.UserActivity; import ru.ulstu.grant.model.Grant; import ru.ulstu.paper.model.Paper; import ru.ulstu.project.model.Project; import ru.ulstu.user.model.User; import java.util.Date; @Entity @Table(name = "ping") public class Ping extends BaseEntity { @Temporal(value = TemporalType.TIMESTAMP) @DateTimeFormat(pattern = "yyyy-MM-dd") private Date date; @ManyToOne(optional = false) @JoinColumn(name = "users_id") private User user; @Column(name = "activity_type", insertable = false, updatable = false) private String activityType; @Any @AnyDiscriminator(DiscriminatorType.STRING) @AnyKeyJavaClass(Integer.class) @JoinColumn(name = "activity_id") @Column(name = "activity_type") @AnyDiscriminatorValue(entity = Conference.class, discriminator = "CONFERENCE") @AnyDiscriminatorValue(entity = Paper.class, discriminator = "PAPER") @AnyDiscriminatorValue(entity = Project.class, discriminator = "PROJECT") @AnyDiscriminatorValue(entity = Grant.class, discriminator = "GRANT") private UserActivity activity; public Ping() { } public Ping(Date date, User user) { this.date = date; this.user = user; } public Date getDate() { return date; } public void setDate(Date date) { this.date = date; } public User getUser() { return user; } public void setUser(User user) { this.user = user; } public UserActivity getActivity() { return this.activity; } public void setActivity(UserActivity activity) { this.activity = activity; } }