1 package org
.argeo
.security
.ui
.admin
.internal
.providers
;
3 import java
.util
.HashMap
;
6 import javax
.transaction
.Status
;
7 import javax
.transaction
.UserTransaction
;
9 import org
.apache
.commons
.logging
.Log
;
10 import org
.apache
.commons
.logging
.LogFactory
;
11 import org
.argeo
.cms
.CmsException
;
12 import org
.argeo
.security
.ui
.admin
.SecurityAdminPlugin
;
13 import org
.eclipse
.ui
.AbstractSourceProvider
;
14 import org
.eclipse
.ui
.ISources
;
16 /** Observe and notify UI on UserTransaction state changes */
17 public class UserTransactionProvider
extends AbstractSourceProvider
{
18 private final static Log log
= LogFactory
19 .getLog(UserTransactionProvider
.class);
21 public final static String TRANSACTION_STATE
= SecurityAdminPlugin
.PLUGIN_ID
22 + ".userTransactionState";
23 public final static String STATUS_ACTIVE
= "status.active";
24 public final static String STATUS_NO_TRANSACTION
= "status.noTransaction";
26 /* DEPENDENCY INJECTION */
27 private UserTransaction userTransaction
;
30 public String
[] getProvidedSourceNames() {
31 return new String
[] { TRANSACTION_STATE
};
35 public Map
<String
, String
> getCurrentState() {
36 Map
<String
, String
> currentState
= new HashMap
<String
, String
>(1);
37 currentState
.put(TRANSACTION_STATE
, getInternalCurrentState());
42 public void dispose() {
45 private String
getInternalCurrentState() {
47 String transactionState
;
48 if (userTransaction
.getStatus() == Status
.STATUS_NO_TRANSACTION
)
49 transactionState
= STATUS_NO_TRANSACTION
;
51 // if (userTransaction.getStatus() == Status.STATUS_ACTIVE)
52 transactionState
= STATUS_ACTIVE
;
53 return transactionState
;
54 } catch (Exception e
) {
55 throw new CmsException("Unable to begin transaction", e
);
59 /** Publishes the ability to notify a state change */
60 public void fireTransactionStateChange() {
62 fireSourceChanged(ISources
.WORKBENCH
, TRANSACTION_STATE
,
63 getInternalCurrentState());
64 } catch (Exception e
) {
65 log
.warn("Cannot fire transaction state change event. Caught exception: "
66 + e
.getClass().getCanonicalName() + " - " + e
.getMessage());
70 /* DEPENDENCY INJECTION */
71 public void setUserTransaction(UserTransaction userTransaction
) {
72 this.userTransaction
= userTransaction
;