litesoft
@ 151
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 |
// This Source Code is in the Public Domain per: http://litesoft.org/License.txt package org.litesoft.orsup.nonpublic; import java.io.*; import java.sql.*; import org.litesoft.orsup.base.*; import org.litesoft.orsup.transact.*; public class TransCommitEntry { private PersistentObjectImpl mParticipant; private int mChangeNumber = PersistentObjectImpl.INITIAL_CHANGE_NUMBER - 1; private Serializable mExtraPOinfo = null; public TransCommitEntry( PersistentObjectImpl pParticipant ) { mParticipant = pParticipant; } public void updateChangeNumber() { mChangeNumber = mParticipant.getChangeNumber(); } public boolean hasChanged() { return (mChangeNumber != mParticipant.getChangeNumber()); } public boolean checkShouldProcess_AboutToCommit( CA_LinkListNode pCommitAugmentors, Timestamp pTransactionTimeStamp ) { if ( !hasChanged() ) { return false; } for ( CA_LinkListNode zCA = pCommitAugmentors; zCA != null; zCA = zCA.getNext() ) { zCA.getCommitAugmentor().pre_aboutToCommitAugment( mParticipant, pTransactionTimeStamp ); } mExtraPOinfo = mParticipant.aboutToCommit( pTransactionTimeStamp ); for ( CA_LinkListNode zCA = pCommitAugmentors; zCA != null; zCA = zCA.getNext() ) { zCA.getCommitAugmentor().post_aboutToCommitAugment( mParticipant, pTransactionTimeStamp ); } MetaDataForPOinternalExtension md = (MetaDataForPOinternalExtension) mParticipant.getMetaDataForPO(); boolean notTossing = !mParticipant.willTossFromTransactionCommit(); // Note: the Change Propagation probably does NOT propagate beyond one hop! if ( notTossing ) { for ( AbstractAttributeAccessorSCDtoOne toOne : // md.getToOneAccessorSCDsThatFlagPeerChange() ) { PersistentObjectImpl.BackDoor.changeToManyDueToOne( mParticipant, toOne ); } } if ( notTossing || mParticipant.isForcedChangeNotification() ) { for ( AbstractAttributeAccessorSCDtoOne toOne : // md.getToOneAccessorSCDsThatFlagPeerChangeNotification() ) { PersistentObjectImpl.BackDoor.changeNotifyToManyDueToOne( mParticipant, toOne ); } } updateChangeNumber(); return true; } public void augment( HistoryAugmentor pHistoryAugmentor, Timestamp pTransactionTimeStamp ) { pHistoryAugmentor.historize( mParticipant, pTransactionTimeStamp ); } public PersistentObjectImpl getParticipant() { return mParticipant; } public Serializable getExtraPOinfo() { return mExtraPOinfo; } @Override public boolean equals( Object o ) { return (this == o) || // ((o instanceof TransCommitEntry) && equals( (TransCommitEntry) o )); } public boolean equals( TransCommitEntry them ) { return (this == them) || // ((them != null) // && this.mParticipant.equals( them.mParticipant ) // ); } @Override public int hashCode() { return mParticipant.hashCode(); } } |