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
.argeo
.ArgeoException
;
10 import org
.argeo
.security
.ui
.admin
.SecurityAdminPlugin
;
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 public final static String TRANSACTION_STATE
= SecurityAdminPlugin
.PLUGIN_ID
17 + ".userTransactionState";
18 public final static String STATUS_ACTIVE
= "status.active";
19 public final static String STATUS_NO_TRANSACTION
= "status.noTransaction";
21 /* DEPENDENCY INJECTION */
22 private UserTransaction userTransaction
;
25 public String
[] getProvidedSourceNames() {
26 return new String
[] { TRANSACTION_STATE
};
30 public Map
<String
, String
> getCurrentState() {
31 Map
<String
, String
> currentState
= new HashMap
<String
, String
>(1);
32 currentState
.put(TRANSACTION_STATE
, getInternalCurrentState());
37 public void dispose() {
40 private String
getInternalCurrentState() {
42 String transactionState
;
43 if (userTransaction
.getStatus() == Status
.STATUS_NO_TRANSACTION
)
44 transactionState
= STATUS_NO_TRANSACTION
;
46 // if (userTransaction.getStatus() == Status.STATUS_ACTIVE)
47 transactionState
= STATUS_ACTIVE
;
48 return transactionState
;
49 } catch (Exception e
) {
50 throw new ArgeoException("Unable to begin transaction", e
);
54 /** Publishes the ability to notify a state change */
55 public void fireTransactionStateChange() {
56 fireSourceChanged(ISources
.WORKBENCH
, TRANSACTION_STATE
,
57 getInternalCurrentState());
60 /* DEPENDENCY INJECTION */
61 public void setUserTransaction(UserTransaction userTransaction
) {
62 this.userTransaction
= userTransaction
;