UCHousehold.java
package uk.gov.dhsc.htbhf.dwp.entity.uc;
import lombok.*;
import uk.gov.dhsc.htbhf.dwp.entity.BaseEntity;
import java.util.HashSet;
import java.util.Set;
import javax.persistence.*;
import javax.validation.constraints.Size;
import static java.util.Collections.unmodifiableSet;
@Entity
@Data
@Builder(toBuilder = true)
@Table(name = "dwp_uc_household")
@NoArgsConstructor(access = AccessLevel.PRIVATE)
@AllArgsConstructor
@EqualsAndHashCode(onlyExplicitlyIncluded = true, callSuper = true)
@SuppressWarnings("PMD.DataClass")
public class UCHousehold extends BaseEntity {
@Size(min = 1, max = 50)
@Column(name = "household_identifier")
private String householdIdentifier;
@Column(name = "earnings_threshold_exceeded")
private boolean earningsThresholdExceeded;
@OneToMany(cascade = CascadeType.ALL, mappedBy = "household", orphanRemoval = true)
@ToString.Exclude
private final Set<UCAdult> adults = new HashSet<>();
@OneToMany(cascade = CascadeType.ALL, mappedBy = "household", orphanRemoval = true)
@ToString.Exclude
private final Set<UCChild> children = new HashSet<>();
public UCHousehold addAdult(UCAdult adult) {
adult.setHousehold(this);
this.adults.add(adult);
return this;
}
public Set<UCAdult> getAdults() {
return unmodifiableSet(adults);
}
public void setAdults(Set<UCAdult> adults) {
this.adults.clear();
adults.forEach(this::addAdult);
}
public UCHousehold addChild(UCChild child) {
child.setHousehold(this);
this.children.add(child);
return this;
}
public Set<UCChild> getChildren() {
return unmodifiableSet(children);
}
public void setChildren(Set<UCChild> children) {
this.children.clear();
children.forEach(this::addChild);
}
}