Описание интерфейсов#

Вектор изменений#

Вектор изменений — API, предоставляющий информацию об изменениях, выполненных в рамках БД транзакции.

  • ChangeVector — корневой интерфейс, содержащий коллекцию ChangeSet;

  • ChangeSet — информация о наборе изменений, сброшенных в БД методом flush. В рамках одной транзакции может быть несколько ChangeSet;

  • ChangeEvent — интерфейс описывает события изменений в БД, таких, как insert, update, delete;

  • CreateEvent — расширение ChangeEvent, описывающее вставку записи в БД;

  • UpdateEvent — расширение ChangeEvent, описывающее обновление записи в БД;

  • DeleteEvent — расширение ChangeEvent, описывающее удаление записи из БД;

  • CollectionModification — интерфейс, описывающий изменение коллекции (расшифровочной таблицы либо обратной ссылки);

  • PropertyChange — интерфейс, описывающий изменение свойства сущности.

public interface ChangeVector extends Serializable {
    Collection<ChangeSet> getChangeSets();
    boolean isEmpty();
}

public interface ChangeSet extends Serializable {
    Collection<CreateEvent> getCreateEvents();
    Collection<UpdateEvent> getUpdateEvents();
    Collection<DeleteEvent> getDeleteEvents();
    boolean isEmpty();
}

public interface ChangeEvent extends Serializable {
    String getAlias();
    Serializable getId();
    Serializable getVersion();
}

public interface CreateEvent extends ChangeEvent {
    Map<String, Serializable> getPrimitives();
    Map<String, Serializable> getReferences();
    Map<String, Collection<Serializable>> getPrimitiveCollections();
    Map<String, Collection<Serializable>> getReferenceCollections();
}

public interface UpdateEvent extends ChangeEvent {
    Serializable getPreviousVersion();
    Map<String, PropertyChange> getPrimitiveChanges();
    Map<String, PropertyChange> getReferenceChanges();
    Map<String, CollectionModification> getPrimitiveCollectionsChanges();
    Map<String, CollectionModification> getReferenceCollectionsChanges();
}

public interface DeleteEvent extends ChangeEvent {

}

public interface CollectionModification extends Serializable {
    boolean isCleared();
    Collection<Serializable> getAdded();
    Collection<Serializable> getRemoved();
    boolean isEmpty();
}

public interface PropertyChange extends Serializable {
    Serializable getOldValue();
    Serializable getNewValue();
}