DiffBuilder etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster
DiffBuilder etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster

12 Mart 2020 Perşembe

Lang3 DiffBuilder Sınıfı

Giriş
Şu satırı dahil ederiz. DiffBuilder bir DiffResult döner. DiffResult aslında Diff nesneleri listedir.
import org.apache.commons.lang3.builder.Diff;
import org.apache.commons.lang3.builder.DiffBuilder;
import org.apache.commons.lang3.builder.DiffResult;
Kullanım
- DiffBuilder nesnesini kurarken karşılaştırılacak nesneler verilir.
- append() metodu ile karşılaştırılacak alanlar eklenir.
- build() metodu ile DiffResult alınır

Örnek
Şöyle yaparız
DiffResult<Employee> diff = new DiffBuilder(emp1, emp2, ToStringStyle.SHORT_PREFIX_STYLE)
  .append("name", emp1.getName(), emp2.getName())
  .append("age", emp1.getAge(), emp2.getAge())
  .append("fulltime", emp1.getFulltime(), emp2.getFulltime())
  .build();
Örnek
Elimizde şöyle bir kod olsun.
@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();
  }
}
Şöyle yaparız
PersonDTO person1 = ...
PersonDTO person2 = ...

DiffResult diff = person1.diff(person2);

for(Diff<?> d: diff.getDiffs()) {
  System.out.println(d.getFieldName() 
    + "= FROM[" + d.getLeft() + "] TO [" + d.getRight() + "]");

}