Event.java

package org.petify.feed.model;

import jakarta.persistence.Column;
import jakarta.persistence.Entity;
import jakarta.persistence.Table;
import lombok.AllArgsConstructor;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
import org.apache.commons.lang.builder.EqualsBuilder;

import java.time.LocalDateTime;

@AllArgsConstructor
@NoArgsConstructor
@Getter
@Setter
@Entity
@Table(name = "events")
public class Event extends FeedItem {
    @Column(name = "start_date", nullable = false)
    private LocalDateTime startDate;

    @Column(name = "end_date", nullable = false)
    private LocalDateTime endDate;

    @Column(name = "address", nullable = false)
    private String address;

    @Column(name = "latitude")
    private Double latitude;

    @Column(name = "longitude")
    private Double longitude;

    @Column(name = "capacity")
    private Integer capacity;

    public Event(Long shelterId, String title, String shortDescription, Long mainImageId,
                 String longDescription, Long fundraisingId, LocalDateTime startDate, LocalDateTime endDate,
                 String address, Double latitude, Double longitude, Integer capacity) {
        super(shelterId, title, shortDescription, mainImageId, longDescription, fundraisingId);
        this.startDate = startDate;
        this.endDate = endDate;
        this.address = address;
        this.latitude = latitude;
        this.longitude = longitude;
        this.capacity = capacity;
    }

    @Override
    public boolean equals(Object o) {
        if (this == o) {
            return true;
        }
        if (!(o instanceof Event event)) {
            return false;
        }
        return new EqualsBuilder()
                .appendSuper(super.equals(o))
                .append(startDate, event.startDate)
                .append(endDate, event.endDate)
                .append(address, event.address)
                .append(latitude, event.latitude)
                .append(longitude, event.longitude)
                .append(capacity, event.capacity)
                .isEquals();
    }

    @Override
    public int hashCode() {
        return new org.apache.commons.lang.builder.HashCodeBuilder(17, 37)
                .appendSuper(super.hashCode())
                .append(startDate)
                .append(endDate)
                .append(address)
                .append(latitude)
                .append(longitude)
                .append(capacity)
                .toHashCode();
    }

    @Override
    public String toString() {
        return new org.apache.commons.lang.builder.ToStringBuilder(this)
                .appendSuper(super.toString())
                .append("startDate", startDate)
                .append("endDate", endDate)
                .append("address", address)
                .append("latitude", latitude)
                .append("longitude", longitude)
                .append("capacity", capacity)
                .toString();
    }
}