All Downloads are FREE. Search and download functionalities are using the official Maven repository.

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 + "]";
	}

}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy