Package com.nomagic.uml2.transaction
Class ModelTransaction
- java.lang.Object
-
- com.nomagic.uml2.transaction.ModelTransaction
-
public class ModelTransaction extends java.lang.ObjectOne Transaction, objects of this type can be reused.
-
-
Field Summary
Fields Modifier and Type Field Description private java.util.Map<Element,java.lang.String>changedElementsIf no fire post commit changed elements are collected in this collection.private java.util.Collection<java.beans.PropertyChangeEvent>collectedEventsEvents fired during transaction.private booleanfirePostCommitprivate InvalidModelHandlerinvalidModelHandler(package private) org.apache.log4j.LoggerLOGprivate booleanmodelFixTransactionprivate ModelValidatormodelValidatorprivate com.nomagic.uml2.ext.jmi.ModifiedElementsmodifiedElementsprivate booleanreadOnlyModeprivate AbstractRepositoryrepositoryprivate com.nomagic.uml2.transaction.TransactionManagerImpltransactionsManagerprivate booleanvalidateModel
-
Constructor Summary
Constructors Modifier Constructor Description (package private)ModelTransaction(AbstractRepository repository, com.nomagic.uml2.transaction.TransactionManagerImpl manager)privateModelTransaction(AbstractRepository repository, com.nomagic.uml2.transaction.TransactionManagerImpl manager, boolean modelFixTransaction)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description private voidaddAllElementsToChanged(com.nomagic.uml2.ext.jmi.ModifiedElements modifiedElements)Marks all objects in the repository as changed by this transaction, which results in that all elements are validated on commitvoidbeforeChange()voidchanged(javax.jmi.reflect.RefObject object)Handles model change event.voidcommit()private ModelTransactioncreateNestedTransaction(boolean modelFix)private voiddestroyNestedTransaction()private java.util.Collection<java.lang.Runnable>fireEvents(java.util.Collection<java.beans.PropertyChangeEvent> collectedEvents)private InvalidModelHandler.ResultfixModel(java.util.Collection<ModelValidationResult> notValid, java.util.Collection<java.beans.PropertyChangeEvent> collectedEvents)private java.util.Collection<Element>getChangedElements(java.util.Collection<java.beans.PropertyChangeEvent> changes)Return elements which are sources for property change events, and are still in the project.booleanisFirePostCommit()Determines whether post commit events are firedbooleanisStarted()voidmodelChanged(java.beans.PropertyChangeEvent evt)Handles model change event.private voidrunCodeAfterFire(java.util.Collection<java.lang.Runnable> run)private voidrunInNestedTransaction(java.lang.Runnable r, boolean readonly)private voidrunModelFixInNestedTransaction(java.lang.Runnable r, java.util.Collection<java.beans.PropertyChangeEvent> collectedEventsInParent, InvalidModelHandler.Result[] result)voidsetFirePostCommit(boolean firePostCommit)voidsetInvalidModelHandler(InvalidModelHandler handler)voidsetModelValidator(ModelValidator handler)voidsetModifiedElements(com.nomagic.uml2.ext.jmi.ModifiedElements modifiedElements)voidstart()Starts transaction.voidstart(boolean readOnly, boolean validateModel)private java.util.Collection<ModelValidationResult>validateModel()
-
-
-
Field Detail
-
LOG
org.apache.log4j.Logger LOG
-
collectedEvents
private volatile java.util.Collection<java.beans.PropertyChangeEvent> collectedEvents
Events fired during transaction.
-
readOnlyMode
private boolean readOnlyMode
-
modelValidator
private ModelValidator modelValidator
-
invalidModelHandler
private InvalidModelHandler invalidModelHandler
-
repository
private final AbstractRepository repository
-
transactionsManager
private final com.nomagic.uml2.transaction.TransactionManagerImpl transactionsManager
-
modelFixTransaction
private final boolean modelFixTransaction
-
firePostCommit
private boolean firePostCommit
-
validateModel
private boolean validateModel
-
changedElements
private java.util.Map<Element,java.lang.String> changedElements
If no fire post commit changed elements are collected in this collection. In other case collection should be empty.
-
modifiedElements
private com.nomagic.uml2.ext.jmi.ModifiedElements modifiedElements
-
-
Constructor Detail
-
ModelTransaction
ModelTransaction(AbstractRepository repository, com.nomagic.uml2.transaction.TransactionManagerImpl manager)
-
ModelTransaction
private ModelTransaction(AbstractRepository repository, com.nomagic.uml2.transaction.TransactionManagerImpl manager, boolean modelFixTransaction)
-
-
Method Detail
-
start
public void start()
Starts transaction. After transaction started events will be recorded and analyzed.
-
start
public void start(boolean readOnly, boolean validateModel)
-
commit
public void commit() throws RollbackException- Throws:
RollbackException
-
runInNestedTransaction
private void runInNestedTransaction(java.lang.Runnable r, boolean readonly) throws RollbackException- Throws:
RollbackException
-
runModelFixInNestedTransaction
private void runModelFixInNestedTransaction(java.lang.Runnable r, java.util.Collection<java.beans.PropertyChangeEvent> collectedEventsInParent, InvalidModelHandler.Result[] result) throws RollbackException- Throws:
RollbackException
-
runCodeAfterFire
private void runCodeAfterFire(java.util.Collection<java.lang.Runnable> run) throws RollbackException- Throws:
RollbackException
-
fireEvents
private java.util.Collection<java.lang.Runnable> fireEvents(java.util.Collection<java.beans.PropertyChangeEvent> collectedEvents)
-
fixModel
private InvalidModelHandler.Result fixModel(java.util.Collection<ModelValidationResult> notValid, java.util.Collection<java.beans.PropertyChangeEvent> collectedEvents) throws RollbackException
- Throws:
RollbackException
-
validateModel
private java.util.Collection<ModelValidationResult> validateModel() throws RollbackException
- Throws:
RollbackException
-
destroyNestedTransaction
private void destroyNestedTransaction()
-
createNestedTransaction
private ModelTransaction createNestedTransaction(boolean modelFix)
-
modelChanged
public void modelChanged(java.beans.PropertyChangeEvent evt)
Handles model change event.- Parameters:
evt- event
-
changed
public void changed(javax.jmi.reflect.RefObject object)
Handles model change event.- Parameters:
object- object
-
addAllElementsToChanged
private void addAllElementsToChanged(com.nomagic.uml2.ext.jmi.ModifiedElements modifiedElements)
Marks all objects in the repository as changed by this transaction, which results in that all elements are validated on commit- Parameters:
modifiedElements- modified elements.
-
isStarted
public boolean isStarted()
-
isFirePostCommit
public boolean isFirePostCommit()
Determines whether post commit events are fired- Returns:
trueif events are fired,falseotherwise
-
setInvalidModelHandler
public void setInvalidModelHandler(InvalidModelHandler handler)
-
setModelValidator
public void setModelValidator(ModelValidator handler)
-
beforeChange
public void beforeChange()
-
setFirePostCommit
public void setFirePostCommit(boolean firePostCommit)
-
getChangedElements
private java.util.Collection<Element> getChangedElements(java.util.Collection<java.beans.PropertyChangeEvent> changes)
Return elements which are sources for property change events, and are still in the project.- Parameters:
changes- collected events.- Returns:
- sources from events which are registered in project.
-
setModifiedElements
public void setModifiedElements(com.nomagic.uml2.ext.jmi.ModifiedElements modifiedElements)
-
-