Introduce Makefile for Java build
[lgpl/argeo-commons.git] / org.argeo.cms.e4 / src / org / argeo / cms / e4 / users / UserBatchUpdateWizard.java
index 6ce51b80384442500df310948e27671dccfe3fe7..a38d171ef70f67b86d7d6e0dff8eab13abc8bad4 100644 (file)
@@ -5,24 +5,21 @@ import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 
-import javax.transaction.SystemException;
-import javax.transaction.UserTransaction;
-
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
+import org.argeo.api.cms.CmsConstants;
+import org.argeo.api.cms.CmsLog;
 import org.argeo.cms.CmsException;
 import org.argeo.cms.auth.CurrentUser;
+import org.argeo.cms.auth.UserAdminUtils;
 import org.argeo.cms.e4.users.providers.CommonNameLP;
 import org.argeo.cms.e4.users.providers.DomainNameLP;
 import org.argeo.cms.e4.users.providers.MailLP;
 import org.argeo.cms.e4.users.providers.UserNameLP;
-import org.argeo.cms.util.UserAdminUtils;
 import org.argeo.eclipse.ui.ColumnDefinition;
 import org.argeo.eclipse.ui.EclipseUiUtils;
 import org.argeo.eclipse.ui.parts.LdifUsersTable;
-import org.argeo.naming.LdapAttrs;
-import org.argeo.naming.LdapObjs;
-import org.argeo.node.NodeConstants;
+import org.argeo.osgi.transaction.WorkTransaction;
+import org.argeo.util.naming.LdapAttrs;
+import org.argeo.util.naming.LdapObjs;
 import org.eclipse.jface.dialogs.IPageChangeProvider;
 import org.eclipse.jface.dialogs.IPageChangedListener;
 import org.eclipse.jface.dialogs.MessageDialog;
@@ -49,7 +46,7 @@ import org.osgi.service.useradmin.UserAdminEvent;
 /** Wizard to update users */
 public class UserBatchUpdateWizard extends Wizard {
 
-       private final static Log log = LogFactory.getLog(UserBatchUpdateWizard.class);
+       private final static CmsLog log = CmsLog.getLog(UserBatchUpdateWizard.class);
        private UserAdminWrapper userAdminWrapper;
 
        // pages
@@ -90,15 +87,10 @@ public class UserBatchUpdateWizard extends Wizard {
        public boolean performFinish() {
                if (!canFinish())
                        return false;
-               UserTransaction ut = userAdminWrapper.getUserTransaction();
-               try {
-                       if (ut.getStatus() != javax.transaction.Status.STATUS_NO_TRANSACTION
-                                       && !MessageDialog.openConfirm(getShell(), "Existing Transaction",
-                                                       "A user transaction is already existing, " + "are you sure you want to proceed ?"))
-                               return false;
-               } catch (SystemException e) {
-                       throw new CmsException("Cannot get user transaction state " + "before user batch update", e);
-               }
+               WorkTransaction ut = userAdminWrapper.getUserTransaction();
+               if (!ut.isNoTransactionStatus() && !MessageDialog.openConfirm(getShell(), "Existing Transaction",
+                               "A user transaction is already existing, " + "are you sure you want to proceed ?"))
+                       return false;
 
                // We cannot use jobs, user modifications are still meant to be done in
                // the UIThread
@@ -151,14 +143,9 @@ public class UserBatchUpdateWizard extends Wizard {
                        } catch (Exception e) {
                                throw new CmsException("Cannot perform batch update on users", e);
                        } finally {
-                               UserTransaction ut = userAdminWrapper.getUserTransaction();
-                               try {
-                                       if (ut.getStatus() != javax.transaction.Status.STATUS_NO_TRANSACTION)
-                                               ut.rollback();
-                               } catch (IllegalStateException | SecurityException | SystemException e) {
-                                       log.error("Unable to rollback session in 'finally', " + "the system might be in a dirty state");
-                                       e.printStackTrace();
-                               }
+                               WorkTransaction ut = userAdminWrapper.getUserTransaction();
+                               if (!ut.isNoTransactionStatus())
+                                       ut.rollback();
                        }
                }
        }
@@ -190,14 +177,9 @@ public class UserBatchUpdateWizard extends Wizard {
                        } catch (Exception e) {
                                throw new CmsException("Cannot perform batch update on users", e);
                        } finally {
-                               UserTransaction ut = userAdminWrapper.getUserTransaction();
-                               try {
-                                       if (ut.getStatus() != javax.transaction.Status.STATUS_NO_TRANSACTION)
-                                               ut.rollback();
-                               } catch (IllegalStateException | SecurityException | SystemException e) {
-                                       log.error("Unable to rollback session in finally block, the system might be in a dirty state");
-                                       e.printStackTrace();
-                               }
+                               WorkTransaction ut = userAdminWrapper.getUserTransaction();
+                               if (!ut.isNoTransactionStatus())
+                                       ut.rollback();
                        }
                }
        }
@@ -457,8 +439,7 @@ public class UserBatchUpdateWizard extends Wizard {
        }
 
        /**
-        * Displays a list of users with a check box to be able to choose some of
-        * them
+        * Displays a list of users with a check box to be able to choose some of them
         */
        private class ChooseUsersWizardPage extends WizardPage implements IPageChangedListener {
                private static final long serialVersionUID = 7651807402211214274L;
@@ -481,7 +462,7 @@ public class UserBatchUpdateWizard extends Wizard {
                        columnDefs.add(new ColumnDefinition(new DomainNameLP(), "Domain", 200));
 
                        // Only show technical DN to admin
-                       if (CurrentUser.isInRole(NodeConstants.ROLE_ADMIN))
+                       if (CurrentUser.isInRole(CmsConstants.ROLE_ADMIN))
                                columnDefs.add(new ColumnDefinition(new UserNameLP(), "Distinguished Name", 300));
 
                        userTableCmp = new ChooseUserTableViewer(pageCmp, SWT.MULTI | SWT.H_SCROLL | SWT.V_SCROLL);
@@ -580,7 +561,7 @@ public class UserBatchUpdateWizard extends Wizard {
                        columnDefs.add(new ColumnDefinition(new MailLP(), "E-mail", 150));
                        columnDefs.add(new ColumnDefinition(new DomainNameLP(), "Domain", 200));
                        // Only show technical DN to admin
-                       if (CurrentUser.isInRole(NodeConstants.ROLE_ADMIN))
+                       if (CurrentUser.isInRole(CmsConstants.ROLE_ADMIN))
                                columnDefs.add(new ColumnDefinition(new UserNameLP(), "Distinguished Name", 300));
                        userTableCmp = new ChosenUsersTableViewer(pageCmp, SWT.MULTI | SWT.H_SCROLL | SWT.V_SCROLL);
                        userTableCmp.setLayoutData(EclipseUiUtils.fillAll());