Files
0xb00b5-packmate/src/main/java/ru/serega6531/packmate/model/Stream.java
Sergey Shkurov 4e2473a3cc Update libraries
2023-04-27 22:35:02 +02:00

86 lines
2.3 KiB
Java

package ru.serega6531.packmate.model;
import lombok.Getter;
import lombok.RequiredArgsConstructor;
import lombok.Setter;
import lombok.ToString;
import org.hibernate.Hibernate;
import org.hibernate.annotations.GenericGenerator;
import org.hibernate.annotations.Parameter;
import ru.serega6531.packmate.model.enums.Protocol;
import jakarta.persistence.*;
import java.util.HashSet;
import java.util.List;
import java.util.Objects;
import java.util.Set;
@Getter
@Setter
@ToString
@RequiredArgsConstructor
@Entity
@GenericGenerator(
name = "stream_generator",
strategy = "org.hibernate.id.enhanced.SequenceStyleGenerator",
parameters = {
@Parameter(name = "sequence_name", value = "stream_seq"),
@Parameter(name = "initial_value", value = "1"),
@Parameter(name = "increment_size", value = "1000"),
@Parameter(name = "optimizer", value = "hilo")
}
)
@Table(indexes = {@Index(name = "stream_id_desc_index", columnList = "id DESC")})
public class Stream {
@Id
@GeneratedValue(generator = "stream_generator")
private Long id;
@Column(name = "service_id", nullable = false)
private int service;
@Enumerated
@Column(nullable = false)
private Protocol protocol;
@OneToMany(mappedBy = "stream", cascade = CascadeType.ALL, orphanRemoval = true)
@OrderBy("id")
@ToString.Exclude
private List<Packet> packets;
private long startTimestamp;
private long endTimestamp;
@ManyToMany(fetch = FetchType.EAGER)
@JoinTable(
name = "stream_found_patterns",
joinColumns = @JoinColumn(name = "stream_id"),
inverseJoinColumns = @JoinColumn(name = "pattern_id")
)
@ToString.Exclude
private Set<Pattern> foundPatterns = new HashSet<>();
private boolean favorite;
@Column(nullable = false, columnDefinition = "smallint")
private int ttl;
@Column(columnDefinition = "char(3)")
private String userAgentHash;
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || Hibernate.getClass(this) != Hibernate.getClass(o)) return false;
Stream stream = (Stream) o;
return id != null && Objects.equals(id, stream.id);
}
@Override
public int hashCode() {
return getClass().hashCode();
}
}