У меня есть следующие DTO:
@Data
public class PersonDTO implements Diffable<PersonDTO> {
private String id;
private String firstName;
private String lastName;
private List<AddressDTO> addresses;
@Override
public DiffResult diff(PersonDTO personDTO) {
return new DiffBuilder(this, personDTO, SHORT_PREFIX_STYLE)
.append("id", this.id, personDTO.getId())
.append("firstName", this.firstName, personDTO.getFirstName())
.append("lastName", this.lastName, personDTO.getLastName())
.append("addresses", addresses, personDTO.getAddresses())
.build();
}
}
@Data
public class AddressDTO implements Diffable<AddressDTO> {
private String id;
private String personId;
private String addressType;
private String street;
private String houseNumber;
private String postalCode;
private String city;
private String countryId;
@Override
public DiffResult diff(AddressDTO addressDTO) {
return new DiffBuilder(this, addressDTO, SHORT_PREFIX_STYLE)
.append("id", this.id, addressDTO.getId())
.append("personId", this.personId, addressDTO.getPersonId())
.append("addressType", this.addressType, addressDTO.getAddressType())
.append("street", this.street, addressDTO.getStreet())
.append("houseNumber", this.houseNumber, addressDTO.getHouseNumber())
.append("postalCode", this.postalCode, addressDTO.getPostalCode())
.append("city", this.city, addressDTO.getCity())
.append("countryId", this.countryId, addressDTO.getCountryId())
.build();
}
}
Моя главная цель - найти различия между двумя похожими объектами человека. В настоящее время я пытался использовать Diffable
интерфейс из apache commons, который идеально подходит для объекта. Посоветуйте, пожалуйста, как обращаться с коллекциями, если размер каждой коллекции может быть разным. Например, несколько адресов было удалено, несколько было добавлено, а несколько обновлено. Пожалуйста, см. Пример ниже:
![enter image description here](https://i.stack.imgur.com/ezjIh.png)
Возможно, есть еще одна библиотека, которая помогает достичь аналогичных целей, пожалуйста, совет