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() + "]");

}

Hiç yorum yok:

Yorum Gönder