Shelter.java
package org.petify.shelter.model;
import jakarta.persistence.CascadeType;
import jakarta.persistence.Column;
import jakarta.persistence.Entity;
import jakarta.persistence.GeneratedValue;
import jakarta.persistence.GenerationType;
import jakarta.persistence.Id;
import jakarta.persistence.OneToMany;
import jakarta.persistence.PrePersist;
import jakarta.persistence.Table;
import lombok.AllArgsConstructor;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
import org.apache.commons.lang3.builder.EqualsBuilder;
import org.apache.commons.lang3.builder.HashCodeBuilder;
import org.apache.commons.lang3.builder.ToStringBuilder;
import java.util.List;
@AllArgsConstructor
@NoArgsConstructor
@Getter
@Setter
@Entity
@Table(name = "shelters")
public class Shelter {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "id", nullable = false)
private Long id;
@Column(name = "owner_username", unique = true, nullable = false)
private String ownerUsername;
@Column(name = "name", nullable = false)
private String name;
@Column(name = "description", columnDefinition = "TEXT")
private String description;
@Column(name = "address")
private String address;
@Column(name = "latitude")
private Double latitude;
@Column(name = "longitude")
private Double longitude;
@Column(name = "phone_number")
private String phoneNumber;
@Column(name = "is_active", nullable = false)
private Boolean isActive;
@Column(name = "image_name")
private String imageName;
@OneToMany(mappedBy = "shelter", cascade = CascadeType.ALL, orphanRemoval = true)
private List<Pet> pets;
public Shelter(String ownerUsername, String name, String description, String address,
Double latitude, Double longitude, String phoneNumber) {
this.ownerUsername = ownerUsername;
this.name = name;
this.description = description;
this.address = address;
this.latitude = latitude;
this.longitude = longitude;
this.phoneNumber = phoneNumber;
this.isActive = false; // w ramach testow mozna zmienic na true
}
@PrePersist
protected void onCreate() {
if (isActive == null) {
isActive = false;
}
}
@Override
public boolean equals(Object o) {
if (this == o) {
return true;
}
if (!(o instanceof Shelter shelter)) {
return false;
}
return new EqualsBuilder().append(getId(), shelter.getId()).append(getOwnerUsername(),
shelter.getOwnerUsername()).append(getName(), shelter.getName()).append(getDescription(),
shelter.getDescription()).append(getAddress(), shelter.getAddress()).append(getLatitude(),
shelter.getLatitude()).append(getLongitude(), shelter.getLongitude()).append(getPhoneNumber(),
shelter.getPhoneNumber()).append(getIsActive(), shelter.getIsActive()).isEquals();
}
@Override
public int hashCode() {
return new HashCodeBuilder(17, 37).append(getId()).append(getOwnerUsername())
.append(getName()).append(getDescription()).append(getAddress()).append(getLatitude())
.append(getLongitude()).append(getPhoneNumber()).append(getIsActive()).toHashCode();
}
@Override
public String toString() {
return new ToStringBuilder(this)
.append("id", id)
.append("ownerUsername", ownerUsername)
.append("name", name)
.append("description", description)
.append("address", address)
.append("latitude", latitude)
.append("longitude", longitude)
.append("phoneNumber", phoneNumber)
.append("isActive", isActive)
.toString();
}
}