FeedItem.java
package org.petify.feed.model;
import jakarta.persistence.Column;
import jakarta.persistence.Entity;
import jakarta.persistence.GeneratedValue;
import jakarta.persistence.GenerationType;
import jakarta.persistence.Id;
import jakarta.persistence.Inheritance;
import jakarta.persistence.InheritanceType;
import jakarta.persistence.PrePersist;
import jakarta.persistence.PreUpdate;
import jakarta.persistence.Table;
import lombok.AllArgsConstructor;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
import org.apache.commons.lang.builder.EqualsBuilder;
import org.apache.commons.lang.builder.HashCodeBuilder;
import org.apache.commons.lang.builder.ToStringBuilder;
import java.time.LocalDateTime;
@AllArgsConstructor
@NoArgsConstructor
@Getter
@Setter
@Entity
@Inheritance(strategy = InheritanceType.JOINED)
@Table(name = "feed_items")
public abstract class FeedItem {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@Column(name = "shelter_id", nullable = false)
private Long shelterId;
@Column(name = "title", nullable = false)
private String title;
@Column(name = "short_description", nullable = false)
private String shortDescription;
@Column(name = "main_image_id")
private Long mainImageId;
@Column(name = "long_description", columnDefinition = "TEXT")
private String longDescription;
@Column(name = "fundraising_id")
private Long fundraisingId;
@Column(name = "created_at", nullable = false, updatable = false)
private LocalDateTime createdAt;
@Column(name = "updated_at", nullable = false)
private LocalDateTime updatedAt;
@PrePersist
protected void onCreate() {
this.createdAt = LocalDateTime.now();
this.updatedAt = LocalDateTime.now();
}
@PreUpdate
protected void onUpdate() {
this.updatedAt = LocalDateTime.now();
}
public FeedItem(Long shelterId, String title, String shortDescription, Long mainImageId, String longDescription, Long fundraisingId) {
this.shelterId = shelterId;
this.title = title;
this.shortDescription = shortDescription;
this.mainImageId = mainImageId;
this.longDescription = longDescription;
this.fundraisingId = fundraisingId;
}
@Override
public boolean equals(Object o) {
if (this == o) {
return true;
}
if (!(o instanceof FeedItem feedItem)) {
return false;
}
return new EqualsBuilder()
.append(getTitle(), feedItem.getTitle())
.append(getShortDescription(), feedItem.getShortDescription())
.append(getMainImageId(), feedItem.getMainImageId())
.append(getLongDescription(), feedItem.getLongDescription())
.append(getShelterId(), feedItem.getShelterId())
.append(getFundraisingId(), feedItem.getFundraisingId())
.isEquals();
}
@Override
public int hashCode() {
return new HashCodeBuilder(17, 37)
.append(getTitle())
.append(getShortDescription())
.append(getMainImageId())
.append(getLongDescription())
.append(getShelterId())
.append(getFundraisingId())
.toHashCode();
}
@Override
public String toString() {
return new ToStringBuilder(this)
.append("id", id)
.append("shelterId", shelterId)
.append("createdAt", createdAt)
.append("title", title)
.append("shortDescription", shortDescription)
.append("mainImageId", mainImageId)
.append("longDescription", longDescription)
.append("fundraisingId", fundraisingId)
.toString();
}
}