All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.javers.core.changelog.SimpleTextChangeLog Maven / Gradle / Ivy

There is a newer version: 7.6.1
Show newest version
package org.javers.core.changelog;

import org.javers.core.commit.CommitMetadata;
import org.javers.core.diff.changetype.NewObject;
import org.javers.core.diff.changetype.ObjectRemoved;
import org.javers.core.diff.changetype.ReferenceChange;
import org.javers.core.diff.changetype.ValueChange;
import org.javers.core.diff.changetype.container.ArrayChange;
import org.javers.core.diff.changetype.container.ListChange;
import org.javers.core.diff.changetype.container.SetChange;
import org.javers.core.diff.changetype.map.MapChange;
import org.javers.core.metamodel.object.GlobalId;
import java.time.format.DateTimeFormatter;

/**
 * Sample text changeLog, renders text log like that:
 * 
 * commit 3.0, author:another author, 2014-12-06 13:22:51
 *   changed object: org.javers.core.model.DummyUser/bob
 *     value changed on 'sex' property: 'null' -> 'FEMALE'
 *     set changed on 'stringSet' property: [removed:'groovy', added:'java', added:'scala']
 *     list changed on 'integerList' property: [(0).added:'22', (1).added:'23']
 * commit 2.0, author:some author, 2014-12-06 13:22:51
 *     value changed on 'age' property: '0' -> '18'
 *     value changed on 'surname' property: 'Dijk' -> 'van Dijk'
 *     reference changed on 'supervisor' property: 'null' -> 'org.javers.core.model.DummyUser/New Supervisor'
 * 
* * @author bartosz walacik */ public class SimpleTextChangeLog extends AbstractTextChangeLog { public static final DateTimeFormatter DEFAULT_DATE_FORMATTER = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"); private final DateTimeFormatter dateTimeFormatter; public SimpleTextChangeLog() { this(DEFAULT_DATE_FORMATTER); } public SimpleTextChangeLog(DateTimeFormatter dateTimeFormatter) { this.dateTimeFormatter = dateTimeFormatter; } @Override public void onCommit(CommitMetadata commitMetadata) { appendln("commit " + commitMetadata.getId() + ", author: " + commitMetadata.getAuthor() + ", " + dateTimeFormatter.format(commitMetadata.getCommitDate())); } @Override public void onAffectedObject(GlobalId globalId) { appendln(" changed object: " + globalId.value()); } @Override public void onValueChange(ValueChange valueChange) { appendln(" value changed on '"+valueChange.getPropertyName()+"' property: '"+ valueChange.getLeft() + "' -> '" + valueChange.getRight() + "'"); } @Override public void onReferenceChange(ReferenceChange referenceChange) { appendln(" reference changed on '" + referenceChange.getPropertyName() + "' property: '" + referenceChange.getLeft() + "' -> '" + referenceChange.getRight() + "'"); } @Override public void onNewObject(NewObject newObject) { appendln(" new object: " + newObject.getAffectedGlobalId()); } @Override public void onObjectRemoved(ObjectRemoved objectRemoved) { appendln(" object removed: '" + objectRemoved.getAffectedGlobalId()); } @Override public void onMapChange(MapChange mapChange) { appendln(" map changed on '" + mapChange.getPropertyName() + "' property: " + mapChange.getEntryChanges()); } @Override public void onArrayChange(ArrayChange arrayChange) { appendln(" array changed on '" + arrayChange.getPropertyName() + "' property: " + arrayChange.getChanges()); } @Override public void onListChange(ListChange listChange) { appendln(" list changed on '" + listChange.getPropertyName() + "' property: " + listChange.getChanges()); } @Override public void onSetChange(SetChange setChange) { appendln(" set changed on '" + setChange.getPropertyName() + "' property: "+ setChange.getChanges()); } }




© 2015 - 2024 Weber Informatics LLC | Privacy Policy