PROG_LAB5-7/src/main/java/me/zinch/models/Person.java

77 lines
2.5 KiB
Java

package me.zinch.models;
import com.fasterxml.jackson.annotation.JsonProperty;
import jakarta.validation.constraints.NotBlank;
import jakarta.validation.constraints.NotNull;
import jakarta.validation.constraints.Size;
import java.util.Objects;
/**
* Represents a person with a name, passport ID, hair color, and location.
*/
public class Person {
@NotBlank(message = "Person: Имя персоны не может быть пустым или null")
@JsonProperty("name")
private String name; //Поле не может быть null, Строка не может быть пустой
@NotNull(message = "Person: Поле passportID не может быть null")
@Size(min = 5, max = 22, message = "Длина строки passportID должна быть не меньше 5 и не должна быть больше 22")
@JsonProperty("passportID")
private String passportID; //Длина строки должна быть не меньше 5, Длина строки не должна быть больше 22, Поле не может быть null
@JsonProperty("hairColor")
private Color hairColor; //Поле может быть null
@JsonProperty("location")
private Location location; //Поле может быть null
public Person() {}
public Person(String name, String passportID, Color hairColor, Location location) {
this.name = name;
this.passportID = passportID;
this.hairColor = hairColor;
this.location = location;
}
public void setName(String name) {
this.name = name;
}
public void setPassportID(String passportID) {
this.passportID = passportID;
}
public void setHairColor(Color hairColor) {
this.hairColor = hairColor;
}
public void setLocation(Location location) {
this.location = location;
}
@Override
public String toString() {
return "Person{" +
"name='" + name + '\'' +
", passportID='" + passportID + '\'' +
", hairColor=" + hairColor +
", location=" + location +
'}';
}
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
Person person = (Person) o;
return Objects.equals(name, person.name) && Objects.equals(passportID, person.passportID) && hairColor == person.hairColor && Objects.equals(location, person.location);
}
@Override
public int hashCode() {
return Objects.hash(name, passportID, hairColor, location);
}
}