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