]> git.argeo.org Git - lgpl/argeo-commons.git/blobdiff - org.argeo.security.ui.admin/src/org/argeo/security/ui/admin/internal/UserTransactionProvider.java
Introduce a UserAdmin wrapper service
[lgpl/argeo-commons.git] / org.argeo.security.ui.admin / src / org / argeo / security / ui / admin / internal / UserTransactionProvider.java
index 3a57c59adf347c67e8bc340b99862bb256f87e23..a3af53e63e478b6639e53b1f43f6662e27f0d56e 100644 (file)
@@ -11,15 +11,13 @@ import org.argeo.security.ui.admin.SecurityAdminPlugin;
 import org.eclipse.ui.AbstractSourceProvider;
 import org.eclipse.ui.ISources;
 
-/** Centralize interaction with the UserTransaction among the UI */
+/** Notifies the UI on UserTransaction state change */
 public class UserTransactionProvider extends AbstractSourceProvider {
        public final static String TRANSACTION_STATE = SecurityAdminPlugin.PLUGIN_ID
                        + ".userTransactionState";
        public final static String STATUS_ACTIVE = "status.active";
        public final static String STATUS_NO_TRANSACTION = "status.noTransaction";
 
-       private String transactionState = STATUS_NO_TRANSACTION;
-
        /* DEPENDENCY INJECTION */
        private UserTransaction userTransaction;
 
@@ -31,10 +29,7 @@ public class UserTransactionProvider extends AbstractSourceProvider {
        @Override
        public Map<String, String> getCurrentState() {
                Map<String, String> currentState = new HashMap<String, String>(1);
-               // TODO implement asking to the UserTransaction
-               // String transactionState = isActive ? STATUS_ACTIVE :
-               // STATUS_NO_TRANSACTION;
-               currentState.put(TRANSACTION_STATE, transactionState);
+               currentState.put(TRANSACTION_STATE, getInternalCurrentState());
                return currentState;
        }
 
@@ -42,23 +37,15 @@ public class UserTransactionProvider extends AbstractSourceProvider {
        public void dispose() {
        }
 
-       /** Publish the ability to change the state. */
-       public void setUserTransactionState(String newState) {
-               transactionState = newState;
-               // fireSourceChanged(ISources.WORKBENCH, TRANSACTION_STATE,
-               // transactionState);
-       }
-
-       private void refreshState() {
+       private String getInternalCurrentState() {
                try {
-                       if (userTransaction != null) {
-                               if (userTransaction.getStatus() == Status.STATUS_NO_TRANSACTION)
-                                       transactionState = STATUS_NO_TRANSACTION;
-                               else if (userTransaction.getStatus() == Status.STATUS_ACTIVE)
-                                       transactionState = STATUS_ACTIVE;
-                               fireSourceChanged(ISources.WORKBENCH, TRANSACTION_STATE,
-                                               transactionState);
-                       }
+                       String transactionState;
+                       if (userTransaction.getStatus() == Status.STATUS_NO_TRANSACTION)
+                               transactionState = STATUS_NO_TRANSACTION;
+                       else
+                               // if (userTransaction.getStatus() == Status.STATUS_ACTIVE)
+                               transactionState = STATUS_ACTIVE;
+                       return transactionState;
                } catch (Exception e) {
                        throw new ArgeoException("Unable to begin transaction", e);
                }
@@ -66,14 +53,12 @@ public class UserTransactionProvider extends AbstractSourceProvider {
 
        /** Publish the ability to notify a state change */
        public void fireTransactionStateChange() {
-               refreshState();
+               fireSourceChanged(ISources.WORKBENCH, TRANSACTION_STATE,
+                               getInternalCurrentState());
        }
 
-       /** FIXME: Rather inject the UserTransaction. */
-       @Deprecated
+       /* DEPENDENCY INJECTION */
        public void setUserTransaction(UserTransaction userTransaction) {
                this.userTransaction = userTransaction;
-               // dirty init
-               refreshState();
        }
 }
\ No newline at end of file