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;
/** 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
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
} 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();
}
}
}
} 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();
}
}
}
}
/**
- * 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;
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);
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());