fi.evolver.ai.vaadin.entity.Chat Maven / Gradle / Ivy
The newest version!
package fi.evolver.ai.vaadin.entity;
import java.time.LocalDateTime;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.UUID;
import org.hibernate.annotations.Fetch;
import org.hibernate.annotations.FetchMode;
import fi.evolver.ai.vaadin.util.AuthUtils;
import jakarta.persistence.*;
@Entity
@Table(name="chat")
public class Chat {
@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
private long id;
@Column(name="chat_id")
private String chatId;
@Column(name="username")
private String username;
@Column(name="display_name")
private String displayName;
@Column(name="start_time")
private LocalDateTime startTime;
@Column(name="chat_type")
private String chatType;
@Column(name="summary")
private String summary;
@Column(name="favorite")
private boolean favorite;
@Column(name="chat_rating")
private Integer chatRating;
@OneToMany(mappedBy="chat", cascade=CascadeType.ALL, orphanRemoval=true, fetch=FetchType.EAGER)
@OrderBy("id")
@Fetch(value = FetchMode.SUBSELECT)
private List chatMessages = new ArrayList<>();
public Chat() {}
public Chat(String chatType) {
this.chatId = UUID.randomUUID().toString();
this.username = AuthUtils.getEmail();
this.displayName = AuthUtils.getUsername();
this.chatType = chatType;
this.startTime = LocalDateTime.now();
}
public long getId() {
return id;
}
public String getChatId() {
return chatId;
}
public String getChatType() {
return chatType;
}
public void setChatType(String chatType) {
this.chatType = chatType;
}
public LocalDateTime getStartTime() {
return startTime;
}
public String getUsername() {
return username;
}
public String getDisplayName() {
return displayName;
}
public String getSummary() {
return summary;
}
public void setSummary(String summary) {
this.summary = summary != null ? summary.substring(0, Math.min(350, summary.length())) : summary;
}
public boolean isFavorite() {
return favorite;
}
public void setFavorite(boolean favorite) {
this.favorite = favorite;
}
public Integer getChatRating() {
return chatRating;
}
public void setChatRating(Integer rating) {
chatRating = rating;
}
public List getChatMessages() {
return Collections.unmodifiableList(chatMessages);
}
public boolean hasMessages() {
return !chatMessages.isEmpty();
}
public void addChatMessages(List chatMessages) {
for (ChatMessage chatMessage: chatMessages) {
chatMessage.setChat(this);
this.chatMessages.add(chatMessage);
}
}
public void addChatMessage(ChatMessage chatMessage) {
addChatMessages(Collections.singletonList(chatMessage));
}
@Override
public String toString() {
return "Chat [id=" + id + ", chatId=" + chatId + ", username=" + username + ", displayName=" + displayName +
", startTime=" + startTime + ", chatType=" + chatType + ", summary=" + summary + ", favorite=" + favorite + ", chatMessages=" +
chatMessages + ", chatRating=" + chatRating + "]";
}
}