2016-09-10 1 views
0

Привет Я хотел бы показать диф, как это и мне интересно, что это лучший подход с Javers:Как вычислить дифференциал с форматом дерева

a.name   leftV <-> rightB 
a.b[0].value leftV <-> rightB 
a.b[0].c.foo leftV <-> rightB 

В качестве примера:

public class A { 
    public A(String name, List<B> listOfB) { 
     this.name = name; 
     this.listOfB = listOfB; 
    } 

    String name; 
    List<B> listOfB = new ArrayList<>(); 
} 

public class B { 
    public B(int id, String value, C c) { 
     this.id = id; 
     this.value = value; 
     this.c = c; 
    } 

    @Id 
    int id; 
    String value; 
    C c; 
} 

public class C { 
    public C(String address) { 
     this.address = address; 
    } 

    String address; 
} 

... 
public void printGrpah() { 
A a1 = new A("Foo", Arrays.asList(new B(1, "Bar", new C("Paris")), 
            new B(2, "Other", new C("Madrid")))); 
A a2 =new A("Fooo", Arrays.asList(new B(1, "Bar2", new C("London")))); 

I хотел бы получить что-то вроде этого:

Updated: 
    name     Foo <-> Fooo 
    listOfB[0].value  Bar <-> Bar2 
    listOfB[0].c.address Paris <-> London 

Added 
    listOfB[1].value  Other 
    listOfB[1].c.address Madrid 

Я не ищу для окончательного решения, но еще некоторое ключ, чтобы увидеть, где мне нужно подключить м у Код:

  • мне нужно реализовать собственный посетитель
  • Плюс обычай ChangeProcessor
  • ли ...

Thx заранее.

Christophe

ответ

0

ChangeProcessor предназначен для такого рода задач. См http://javers.org/javadoc_2.0/org/javers/core/Javers.html#processChangeList-java.util.List-org.javers.core.changelog.ChangeProcessor-

Например, чтобы получить простой журнал изменений, звоните:

List<Change> changes = javers.calculateDiffs(...); 
String changeLog = javers.processChangeList(changes, new SimpleTextChangeLog()); 
System.out.println(changeLog); 
Смежные вопросы