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;
}
}