in accord-core/src/main/java/accord/impl/CommandChange.java [520:562]
public Command construct(RedundantBefore redundantBefore)
{
if (!hasUpdate)
return null;
Invariants.require(txnId != null);
if (participants == null) participants = StoreParticipants.empty(txnId);
else participants = participants.filter(LOAD, redundantBefore, txnId, saveStatus.known.isExecuteAtKnown() ? executeAt : null);
if (durability == null)
durability = NotDurable;
WaitingOn waitingOn = null;
if (this.waitingOn != null)
waitingOn = this.waitingOn.provide(txnId, partialDeps, executesAtLeast, minUniqueHlc);
switch (saveStatus.status)
{
case NotDefined:
return saveStatus == SaveStatus.Uninitialised ? uninitialised(txnId)
: notDefined(txnId, saveStatus, durability, participants, promised);
case PreAccepted:
return preaccepted(txnId, saveStatus, durability, participants, promised, executeAt, partialTxn, partialDeps);
case AcceptedInvalidate:
if (!saveStatus.known.isDefinitionKnown())
return notAccepted(txnId, saveStatus, durability, participants, promised, acceptedOrCommitted, partialDeps);
case AcceptedMedium:
case AcceptedSlow:
case PreCommitted:
return accepted(txnId, saveStatus, durability, participants, promised, executeAt, partialTxn, partialDeps, acceptedOrCommitted);
case Committed:
case Stable:
return committed(txnId, saveStatus, durability, participants, promised, executeAt, partialTxn, partialDeps, acceptedOrCommitted, waitingOn);
case PreApplied:
case Applied:
return executed(txnId, saveStatus, durability, participants, promised, executeAt, partialTxn, partialDeps, acceptedOrCommitted, waitingOn, writes, result);
case Truncated:
case Invalidated:
return truncated(txnId, saveStatus, durability, participants, executeAt, partialDeps, executesAtLeast, writes, result);
default:
throw new UnhandledEnum(saveStatus.status);
}
}