1 package org
.argeo
.cms
.ui
.workbench
.internal
.useradmin
.providers
;
3 import java
.util
.HashMap
;
6 import org
.argeo
.api
.cms
.CmsLog
;
7 import org
.argeo
.cms
.CmsException
;
8 import org
.argeo
.cms
.ui
.workbench
.WorkbenchUiPlugin
;
9 import org
.argeo
.osgi
.transaction
.WorkTransaction
;
10 import org
.eclipse
.ui
.AbstractSourceProvider
;
11 import org
.eclipse
.ui
.ISources
;
13 /** Observe and notify UI on UserTransaction state changes */
14 public class UserTransactionProvider
extends AbstractSourceProvider
{
15 private final static CmsLog log
= CmsLog
16 .getLog(UserTransactionProvider
.class);
18 public final static String TRANSACTION_STATE
= WorkbenchUiPlugin
.PLUGIN_ID
19 + ".userTransactionState";
20 public final static String STATUS_ACTIVE
= "status.active";
21 public final static String STATUS_NO_TRANSACTION
= "status.noTransaction";
23 /* DEPENDENCY INJECTION */
24 private WorkTransaction userTransaction
;
27 public String
[] getProvidedSourceNames() {
28 return new String
[] { TRANSACTION_STATE
};
32 public Map
<String
, String
> getCurrentState() {
33 Map
<String
, String
> currentState
= new HashMap
<String
, String
>(1);
34 currentState
.put(TRANSACTION_STATE
, getInternalCurrentState());
39 public void dispose() {
42 private String
getInternalCurrentState() {
44 String transactionState
;
45 if (userTransaction
.isNoTransactionStatus())
46 transactionState
= STATUS_NO_TRANSACTION
;
48 // if (userTransaction.getStatus() == Status.STATUS_ACTIVE)
49 transactionState
= STATUS_ACTIVE
;
50 return transactionState
;
51 } catch (Exception e
) {
52 throw new CmsException("Unable to begin transaction", e
);
56 /** Publishes the ability to notify a state change */
57 public void fireTransactionStateChange() {
59 fireSourceChanged(ISources
.WORKBENCH
, TRANSACTION_STATE
,
60 getInternalCurrentState());
61 } catch (Exception e
) {
62 log
.warn("Cannot fire transaction state change event. Caught exception: "
63 + e
.getClass().getCanonicalName() + " - " + e
.getMessage());
67 /* DEPENDENCY INJECTION */
68 public void setUserTransaction(WorkTransaction userTransaction
) {
69 this.userTransaction
= userTransaction
;