package io.ebean.event.changelog;

import java.util.ArrayList;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;

Holds a set of changes.
/** * Holds a set of changes. */
public class ChangeSet {
A UUID transaction id specifically created for the change set.
/** * A UUID transaction id specifically created for the change set. */
String txnId;
For large transactions with many change sets this is an incrementing counter.
/** * For large transactions with many change sets this is an incrementing counter. */
long txnBatch;
The state of the transaction (change sets can be sent prior to commit or rollback with large transactions).
/** * The state of the transaction (change sets can be sent prior to commit or rollback * with large transactions). */
TxnState txnState;
User defined 'source' such as the application name.
/** * User defined 'source' such as the application name. */
String source;
Application user id expected to be optionally populated by ChangeLogPrepare.
/** * Application user id expected to be optionally populated by ChangeLogPrepare. */
String userId;
Application user ip address expected to be optionally populated by ChangeLogPrepare.
/** * Application user ip address expected to be optionally populated by ChangeLogPrepare. */
String userIpAddress;
Arbitrary user context information expected to be optionally populated by ChangeLogPrepare.
/** * Arbitrary user context information expected to be optionally populated by ChangeLogPrepare. */
Map<String, String> userContext;
The bean changes.
/** * The bean changes. */
List<BeanChange> changes = new ArrayList<>();
Construct with a txnId.
/** * Construct with a txnId. */
public ChangeSet(String txnId, long txnBatch) { this.txnId = txnId; this.txnBatch = txnBatch; this.txnState = TxnState.IN_PROGRESS; }
Default constructor for JSON tools.
/** * Default constructor for JSON tools. */
public ChangeSet() { } @Override public String toString() { return "txnId:" + txnId + " txnState:" + txnState + " txnBatch:" + txnBatch; }
Return the number of changes in the change set.
/** * Return the number of changes in the change set. */
public int size() { return changes.size(); }
Add a bean change to the change set.
/** * Add a bean change to the change set. */
public void addBeanChange(BeanChange beanChange) { changes.add(beanChange); }
Return the txnId.
/** * Return the txnId. */
public String getTxnId() { return txnId; }
Set the txnId (used by JSON tools).
/** * Set the txnId (used by JSON tools). */
public void setTxnId(String txnId) { this.txnId = txnId; }
Returns the batch id.
/** * Returns the batch id. */
public long getTxnBatch() { return txnBatch; }
Sets the batch id (used by JSON tools).
/** * Sets the batch id (used by JSON tools). */
public void setTxnBatch(long txnBatch) { this.txnBatch = txnBatch; }
Return the transaction state. This will be IN_PROGRESS for many changeSets in large transactions as the changeSets are sent in batches before the transaction has completed.
/** * Return the transaction state. This will be IN_PROGRESS for many changeSets in large transactions * as the changeSets are sent in batches before the transaction has completed. */
public TxnState getTxnState() { return txnState; }
Set the state (used by JSON tools).
/** * Set the state (used by JSON tools). */
public void setTxnState(TxnState txnState) { this.txnState = txnState; }
Return a code that identifies the source of the change (like the name of the application).
/** * Return a code that identifies the source of the change (like the name of the application). */
public String getSource() { return source; }
Set the source of the change (like the name of the application).
/** * Set the source of the change (like the name of the application). */
public void setSource(String source) { this.source = source; }
Return the application user Id.
/** * Return the application user Id. */
public String getUserId() { return userId; }
Set the application user Id.

This can be set by the ChangeLogListener in the prepare() method which is called in the foreground thread.

/** * Set the application user Id. * <p> * This can be set by the ChangeLogListener in the prepare() method which is called * in the foreground thread. * </p> */
public void setUserId(String userId) { this.userId = userId; }
Return the application users ip address.
/** * Return the application users ip address. */
public String getUserIpAddress() { return userIpAddress; }
Set the application users ip address.

This can be set by the ChangeLogListener in the prepare() method which is called in the foreground thread.

/** * Set the application users ip address. * <p> * This can be set by the ChangeLogListener in the prepare() method which is called * in the foreground thread. * </p> */
public void setUserIpAddress(String userIpAddress) { this.userIpAddress = userIpAddress; }
Return a user context value - anything you set yourself in ChangeLogListener prepare().
/** * Return a user context value - anything you set yourself in ChangeLogListener prepare(). */
public Map<String, String> getUserContext() { if (userContext == null) { userContext = new LinkedHashMap<>(); } return userContext; }
Set a user context value (anything you like).

This can be set by the ChangeLogListener in the prepare() method which is called in the foreground thread.

/** * Set a user context value (anything you like). * <p> * This can be set by the ChangeLogListener in the prepare() method which is called * in the foreground thread. * </p> */
public void setUserContext(Map<String, String> userContext) { this.userContext = userContext; }
Return the bean changes.
/** * Return the bean changes. */
public List<BeanChange> getChanges() { return changes; }
Set the bean changes (used by JSON tools).
/** * Set the bean changes (used by JSON tools). */
public void setChanges(List<BeanChange> changes) { this.changes = changes; } }