/*
* This library is part of OpenCms -
* the Open Source Content Management System
*
* Copyright (c) Alkacon Software GmbH (http://www.alkacon.com)
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* For further information about Alkacon Software GmbH, please see the
* company website: http://www.alkacon.com
*
* For further information about OpenCms, please see the
* project website: http://www.opencms.org
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
package org.opencms.workplace.tools.accounts;
import org.opencms.file.CmsUser;
import org.opencms.jsp.CmsJspActionElement;
import org.opencms.main.CmsException;
import org.opencms.main.CmsRuntimeException;
import org.opencms.main.OpenCms;
import org.opencms.security.CmsPasswordEncryptionException;
import org.opencms.security.CmsRole;
import org.opencms.util.CmsStringUtil;
import org.opencms.util.CmsUUID;
import org.opencms.util.CmsXsltUtil;
import org.opencms.workplace.CmsDialog;
import org.opencms.workplace.CmsWorkplaceSettings;
import org.opencms.workplace.list.CmsListColumnAlignEnum;
import org.opencms.workplace.list.CmsListColumnDefinition;
import org.opencms.workplace.list.CmsListDirectAction;
import org.opencms.workplace.list.CmsListItem;
import org.opencms.workplace.list.CmsListItemDetails;
import org.opencms.workplace.list.CmsListMetadata;
import org.opencms.workplace.list.CmsListMultiAction;
import org.opencms.workplace.list.I_CmsListFormatter;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.io.IOException;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Hashtable;
import java.util.Iterator;
import java.util.List;
import java.util.Locale;
import java.util.Map;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.jsp.JspException;
import javax.servlet.jsp.PageContext;
/**
* Main system user account management view.<p>
*
* @since 6.5.6
*/
public class CmsUserDataImportList extends A_CmsUsersList {
/** Value for the delete action. */
public static final int ACTION_IMPORT = 121;
/** Request parameter value for the import action. */
public static final String IMPORT_ACTION = "import";
/** list action id constant. */
public static final String LIST_ACTION_VALIDATION = "av";
/** list column id constant. */
public static final String LIST_COLUMN_VALIDATION = "cv";
/** list column id constant. */
public static final String LIST_COLUMN_VALIDATION_HIDDEN = "cvh";
/** list item detail id constant. */
public static final String LIST_DETAIL_REASON = "dre";
/** list id constant. */
public static final String LIST_ID = "lsudi";
/** list action id constant. */
public static final String LIST_MACTION_SELECT = "ms";
/** Stores the value of the request parameter for the group list. */
private String m_paramGroups;
/** Stores the value of the request parameter for the import file. */
private String m_paramImportfile;
/** Stores the value of the request parameter for the organizational unit fqn. */
private String m_paramOufqn;
/** Stores the value of the request parameter for the default password. */
private String m_paramPassword;
/** Stores the value of the request parameter for the role list. */
private String m_paramRoles;
/** Stores the reasons why users may not be imported. */
private Map m_reasons;
/** The file to upload. */
private File m_uploadFile;
/**
* Public constructor.<p>
*
* @param jsp an initialized JSP action element
*/
public CmsUserDataImportList(CmsJspActionElement jsp) {
super(jsp, LIST_ID, Messages.get().container(Messages.GUI_IMPORTLISTCSV_LIST_NAME_0), false);
getList().setSortedColumn(LIST_COLUMN_VALIDATION_HIDDEN);
}
/**
* Public constructor with JSP variables.<p>
*
* @param context the JSP page context
* @param req the JSP request
* @param res the JSP response
*/
public CmsUserDataImportList(PageContext context, HttpServletRequest req, HttpServletResponse res) {
this(new CmsJspActionElement(context, req, res));
}
/**
* @see org.opencms.workplace.list.A_CmsListDialog#actionDialog()
*/
public void actionDialog() throws JspException, ServletException, IOException {
switch (getAction()) {
case ACTION_IMPORT:
List users = getUsers();
Iterator itUsers = users.iterator();
while (itUsers.hasNext()) {
CmsUser user = (CmsUser)itUsers.next();
if (((m_reasons == null) || !m_reasons.containsKey(user.getName()))
&& !isAlreadyAvailable(user.getName())) {
String password = user.getPassword();
if (password.indexOf("_") == -1) {
try {
password = OpenCms.getPasswordHandler().digest(password);
} catch (CmsPasswordEncryptionException e) {
throw new CmsRuntimeException(
Messages.get().container(Messages.ERR_DIGEST_PASSWORD_0),
e);
}
} else {
password = password.substring(password.indexOf("_") + 1);
}
CmsUser createdUser;
try {
createdUser = getCms().importUser(
new CmsUUID().toString(),
getParamOufqn() + user.getName(),
password,
user.getFirstname(),
user.getLastname(),
user.getEmail(),
user.getFlags(),
System.currentTimeMillis(),
user.getAdditionalInfo());
} catch (CmsException e) {
throw new CmsRuntimeException(Messages.get().container(Messages.ERR_IMPORT_USER_0), e);
}
if (CmsStringUtil.isNotEmptyOrWhitespaceOnly(getParamGroups())) {
List groups = CmsStringUtil.splitAsList(getParamGroups(), ",");
Iterator itGroups = groups.iterator();
while (itGroups.hasNext()) {
try {
getCms().addUserToGroup(createdUser.getName(), (String)itGroups.next());
} catch (CmsException e) {
throw new CmsRuntimeException(Messages.get().container(
Messages.ERR_ADD_USER_TO_GROUP_0), e);
}
}
}
if (CmsStringUtil.isNotEmptyOrWhitespaceOnly(getParamRoles())) {
List roles = CmsStringUtil.splitAsList(getParamRoles(), ",");
Iterator itRoles = roles.iterator();
while (itRoles.hasNext()) {
try {
OpenCms.getRoleManager().addUserToRole(
getCms(),
CmsRole.valueOfGroupName((String)itRoles.next()),
createdUser.getName());
} catch (CmsException e) {
throw new CmsRuntimeException(Messages.get().container(
Messages.ERR_ADD_USER_TO_ROLE_0), e);
}
}
}
}
}
setAction(ACTION_CANCEL);
actionCloseDialog();
break;
default:
super.actionDialog();
}
}
/**
* @see org.opencms.workplace.tools.accounts.A_CmsUsersList#executeListMultiActions()
*/
public void executeListMultiActions() throws CmsRuntimeException {
if (getParamListAction().equals(LIST_MACTION_SELECT)) {
Iterator itItems = getSelectedItems().iterator();
while (itItems.hasNext()) {
CmsListItem listItem = (CmsListItem)itItems.next();
String userName = listItem.get(LIST_COLUMN_DISPLAY).toString();
List users = getUsers();
Iterator itUsers = users.iterator();
while (itUsers.hasNext()) {
CmsUser user = (CmsUser)itUsers.next();
try {
if (user.getName().equals(userName)
&& ((m_reasons == null) || !m_reasons.containsKey(userName))
&& !isAlreadyAvailable(user.getName())) {
String password = user.getPassword();
if (password.indexOf("_") == -1) {
password = OpenCms.getPasswordHandler().digest(password);
} else {
password = password.substring(password.indexOf("_") + 1);
}
CmsUser createdUser = getCms().importUser(
new CmsUUID().toString(),
getParamOufqn() + user.getName(),
password,
user.getFirstname(),
user.getLastname(),
user.getEmail(),
user.getFlags(),
System.currentTimeMillis(),
user.getAdditionalInfo());
if (CmsStringUtil.isNotEmptyOrWhitespaceOnly(getParamGroups())) {
List groups = CmsStringUtil.splitAsList(getParamGroups(), ",");
Iterator itGroups = groups.iterator();
while (itGroups.hasNext()) {
getCms().addUserToGroup(createdUser.getName(), (String)itGroups.next());
}
}
if (CmsStringUtil.isNotEmptyOrWhitespaceOnly(getParamRoles())) {
List roles = CmsStringUtil.splitAsList(getParamRoles(), ",");
Iterator itRoles = roles.iterator();
while (itRoles.hasNext()) {
OpenCms.getRoleManager().addUserToRole(
getCms(),
CmsRole.valueOfGroupName((String)itRoles.next()),
createdUser.getName());
}
}
break;
}
} catch (CmsException e) {
// noop
}
}
}
Map params = new HashMap();
params.put(A_CmsOrgUnitDialog.PARAM_OUFQN, getParamOufqn());
params.put(CmsDialog.PARAM_ACTION, CmsDialog.DIALOG_INITIAL);
try {
getToolManager().jspForwardTool(this, getParentPath(), params);
} catch (ServletException e) {
throw new CmsRuntimeException(Messages.get().container(Messages.ERR_FORWARDING_TO_PARENT_TOOL_0), e);
} catch (IOException e) {
throw new CmsRuntimeException(Messages.get().container(Messages.ERR_FORWARDING_TO_PARENT_TOOL_0), e);
}
} else {
throwListUnsupportedActionException();
}
listSave();
}
/**
* Returns the paramGroups.<p>
*
* @return the paramGroups
*/
public String getParamGroups() {
return m_paramGroups;
}
/**
* Returns the paramImportfile.<p>
*
* @return the paramImportfile
*/
public String getParamImportfile() {
return m_paramImportfile;
}
/**
* Returns the organizational unit fqn parameter value.<p>
*
* @return the organizational unit fqn parameter value
*/
public String getParamOufqn() {
return m_paramOufqn;
}
/**
* Returns the paramPassword.<p>
*
* @return the paramPassword
*/
public String getParamPassword() {
return m_paramPassword;
}
/**
* Returns the paramRoles.<p>
*
* @return the paramRoles
*/
public String getParamRoles() {
return m_paramRoles;
}
/**
* Returns the reasons.<p>
*
* @return the reasons
*/
public Map getReasons() {
return m_reasons;
}
/**
* Sets the paramGroups.<p>
*
* @param paramGroups the paramGroups to set
*/
public void setParamGroups(String paramGroups) {
m_paramGroups = paramGroups;
}
/**
* Sets the paramImportfile.<p>
*
* @param paramImportfile the paramImportfile to set
*/
public void setParamImportfile(String paramImportfile) {
m_paramImportfile = paramImportfile;
}
/**
* Sets the organizational unit fqn parameter value.<p>
*
* @param ouFqn the organizational unit fqn parameter value
*/
public void setParamOufqn(String ouFqn) {
if (ouFqn == null) {
ouFqn = "";
}
m_paramOufqn = ouFqn;
}
/**
* Sets the paramPassword.<p>
*
* @param paramPassword the paramPassword to set
*/
public void setParamPassword(String paramPassword) {
m_paramPassword = paramPassword;
}
/**
* Sets the paramRoles.<p>
*
* @param paramRoles the paramRoles to set
*/
public void setParamRoles(String paramRoles) {
m_paramRoles = paramRoles;
}
/**
* Sets the reasons.<p>
*
* @param reasons the reasons to set
*/
public void setReasons(Map reasons) {
m_reasons = reasons;
}
/**
* @see org.opencms.workplace.list.A_CmsListDialog#customHtmlEnd()
*/
protected String customHtmlEnd() {
StringBuffer result = new StringBuffer(512);
result.append(super.customHtmlEnd());
result.append("<form name='actions' method='post' action='");
result.append(getDialogRealUri());
result.append("' class='nomargin' onsubmit=\"return submitAction('ok', null, 'actions');\">\n");
result.append(allParamsAsHidden());
result.append(dialogButtonRow(HTML_START));
result.append("<input name='");
result.append(IMPORT_ACTION);
result.append("' type='button' value='");
result.append(key(org.opencms.workplace.Messages.GUI_DIALOG_BUTTON_OK_0));
result.append("' onclick=\"submitAction('");
result.append(IMPORT_ACTION);
result.append("', form);\" class='dialogbutton'>\n");
dialogButtonsHtml(result, BUTTON_CANCEL, "");
result.append(dialogButtonRow(HTML_END));
result.append("</form>\n");
return result.toString();
}
/**
* @see org.opencms.workplace.list.A_CmsListDialog#customHtmlStart()
*/
protected String customHtmlStart() {
StringBuffer result = new StringBuffer(1024);
result.append(dialogBlockStart(key(Messages.GUI_USERDATA_IMPORT_LABEL_HINT_BLOCK_0)));
result.append(key(Messages.GUI_IMPORTLISTCSV_IMPORT_LABEL_HINT_TEXT_0));
result.append(dialogBlockEnd());
result.append("<div class=\"dialogspacer\" unselectable=\"on\"> </div>");
return result.toString();
}
/**
* @see org.opencms.workplace.tools.accounts.A_CmsUsersList#fillDetails(java.lang.String)
*/
protected void fillDetails(String detailId) {
// get content
List users = getList().getAllContent();
Iterator itUsers = users.iterator();
while (itUsers.hasNext()) {
CmsListItem item = (CmsListItem)itUsers.next();
String userName = item.get(LIST_COLUMN_DISPLAY).toString();
StringBuffer html = new StringBuffer(512);
try {
if (detailId.equals(LIST_DETAIL_REASON) && (m_reasons != null) && m_reasons.containsKey(userName)) {
html.append(m_reasons.get(userName));
} else {
html.append(key(Messages.GUI_IMPORTLISTCSV_VALID_USER_0));
}
} catch (Exception e) {
// noop
}
item.set(detailId, html.toString());
}
}
/**
* @see org.opencms.workplace.tools.accounts.A_CmsUsersList#getGroupIcon()
*/
protected String getGroupIcon() {
return null;
}
/**
* @see org.opencms.workplace.tools.accounts.A_CmsUsersList#getListItems()
*/
protected List getListItems() {
List ret = new ArrayList();
// get content
List users = getUsers();
Iterator itUsers = users.iterator();
while (itUsers.hasNext()) {
CmsUser user = (CmsUser)itUsers.next();
CmsListItem item = getList().newItem(user.getName());
item.set(LIST_COLUMN_DISPLAY, user.getName());
if (isAlreadyAvailable(user.getName())) {
if (m_reasons == null) {
m_reasons = new HashMap();
}
m_reasons.put(
user.getName(),
Messages.get().container(Messages.GUI_IMPORTLISTCSV_ALREADY_EXISTS_0).key(getLocale()));
}
if ((m_reasons != null) && m_reasons.containsKey(user.getName())) {
item.set(LIST_COLUMN_VALIDATION_HIDDEN, "invalid");
} else {
item.set(LIST_COLUMN_VALIDATION_HIDDEN, "valid");
}
ret.add(item);
}
return ret;
}
/**
* @see org.opencms.workplace.tools.accounts.A_CmsUsersList#getUsers()
*/
protected List getUsers() {
String separator = null;
List values = null;
m_uploadFile = new File(m_paramImportfile);
FileReader fileReader;
BufferedReader bufferedReader;
List users = null;
try {
fileReader = new FileReader(m_uploadFile);
bufferedReader = new BufferedReader(fileReader);
String line;
boolean headline = true;
while ((line = bufferedReader.readLine()) != null) {
if (users == null) {
users = new ArrayList();
}
if (separator == null) {
separator = CmsXsltUtil.getPreferredDelimiter(line);
}
List lineValues = CmsStringUtil.splitAsList(line, separator);
if (headline) {
values = new ArrayList();
Iterator itLineValues = lineValues.iterator();
while (itLineValues.hasNext()) {
values.add(itLineValues.next());
}
headline = false;
} else if (values != null) {
CmsUser curUser = new CmsUser();
try {
for (int i = 0; i < values.size(); i++) {
String curValue = (String)values.get(i);
try {
Method method = CmsUser.class.getMethod("set"
+ curValue.substring(0, 1).toUpperCase()
+ curValue.substring(1), new Class[] {String.class});
String value = "";
if ((lineValues.size() > i) && (lineValues.get(i) != null)) {
value = (String)lineValues.get(i);
}
if (curValue.equals("password")) {
if (CmsStringUtil.isEmptyOrWhitespaceOnly(value)) {
value = m_paramPassword;
}
}
if (CmsStringUtil.isNotEmptyOrWhitespaceOnly(value) && !value.equals("null")) {
method.invoke(curUser, new Object[] {value});
}
} catch (NoSuchMethodException ne) {
curUser.setAdditionalInfo(curValue, lineValues.get(i));
} catch (IllegalAccessException le) {
if (m_reasons == null) {
m_reasons = new HashMap();
}
m_reasons.put(curUser.getName(), le);
} catch (InvocationTargetException te) {
if (m_reasons == null) {
m_reasons = new HashMap();
}
m_reasons.put(curUser.getName(), te);
}
}
} catch (CmsRuntimeException e) {
if (m_reasons == null) {
m_reasons = new HashMap();
}
if (curUser.getName() == null) {
m_reasons.put(lineValues.get(0), e);
} else {
m_reasons.put(curUser.getName(), e);
}
}
users.add(curUser);
}
}
bufferedReader.close();
} catch (IOException e) {
//noop
}
// m_reasons
return users;
}
/**
* Initializes the message info object to work with depending on the dialog state and request parameters.<p>
*/
protected void initExportObject() {
try {
if (CmsStringUtil.isEmpty(getParamAction()) || CmsDialog.DIALOG_INITIAL.equals(getParamAction())) {
// create a new list
m_reasons = new HashMap();
} else {
Map objects = (Map)getSettings().getDialogObject();
if (objects == null) {
// using hashtable as most efficient version of a synchronized map
objects = new Hashtable();
getSettings().setDialogObject(objects);
}
m_reasons = (Map)objects.get(getClass().getName());
}
} catch (Exception e) {
// create a new list
m_reasons = new HashMap();
}
}
/**
* @see org.opencms.workplace.list.A_CmsListDialog#initWorkplaceRequestValues(org.opencms.workplace.CmsWorkplaceSettings, javax.servlet.http.HttpServletRequest)
*/
protected void initWorkplaceRequestValues(CmsWorkplaceSettings settings, HttpServletRequest request) {
super.initWorkplaceRequestValues(settings, request);
if (IMPORT_ACTION.equals(getParamAction())) {
setAction(ACTION_IMPORT);
}
// save the current state of the message (may be changed because of the widget values)
if (m_reasons == null) {
// null object: remove the entry from the map
Map objects = (Map)getSettings().getDialogObject();
if (objects == null) {
// using hashtable as most efficient version of a synchronized map
objects = new Hashtable();
getSettings().setDialogObject(objects);
}
objects.remove(getClass().getName());
} else {
Map objects = (Map)getSettings().getDialogObject();
if (objects == null) {
// using hashtable as most efficient version of a synchronized map
objects = new Hashtable();
getSettings().setDialogObject(objects);
}
objects.put(getClass().getName(), m_reasons);
}
}
/**
* Checks if the given user name is already available inside the current ou.<p>
*
* @param userName the user name to check
* @return <code>true</code> if the user name is already available, otherwise return <code>false</code>
*/
protected boolean isAlreadyAvailable(String userName) {
List availableUsers;
try {
availableUsers = OpenCms.getOrgUnitManager().getUsers(getCms(), getParamOufqn(), false);
} catch (CmsException e) {
availableUsers = new ArrayList();
}
Iterator itAvailableUsers = availableUsers.iterator();
while (itAvailableUsers.hasNext()) {
if (userName.equals(((CmsUser)itAvailableUsers.next()).getSimpleName())) {
return true;
}
}
return false;
}
/**
* @see org.opencms.workplace.tools.accounts.A_CmsUsersList#readUser(java.lang.String)
*/
protected CmsUser readUser(String name) {
return null;
}
/**
* @see org.opencms.workplace.tools.accounts.A_CmsUsersList#setColumns(org.opencms.workplace.list.CmsListMetadata)
*/
protected void setColumns(CmsListMetadata metadata) {
initExportObject();
super.setColumns(metadata);
metadata.getColumnDefinition(LIST_COLUMN_GROUPS).setVisible(false);
metadata.getColumnDefinition(LIST_COLUMN_ROLE).setVisible(false);
metadata.getColumnDefinition(LIST_COLUMN_ACTIVATE).setVisible(false);
metadata.getColumnDefinition(LIST_COLUMN_DELETE).setVisible(false);
metadata.getColumnDefinition(LIST_COLUMN_NAME).setVisible(false);
metadata.getColumnDefinition(LIST_COLUMN_EMAIL).setVisible(false);
metadata.getColumnDefinition(LIST_COLUMN_LASTLOGIN).setVisible(false);
metadata.getColumnDefinition(LIST_COLUMN_DISPLAY).getDefaultAction(LIST_DEFACTION_EDIT).setEnabled(false);
metadata.getColumnDefinition(LIST_COLUMN_DISPLAY).setWidth("100%");
// create hidden column for state
CmsListColumnDefinition hiddenStateCol = new CmsListColumnDefinition(LIST_COLUMN_VALIDATION_HIDDEN);
hiddenStateCol.setName(Messages.get().container(Messages.GUI_IMPORTLISTCSV_LIST_COLS_VAIDATION_0));
hiddenStateCol.setVisible(false);
hiddenStateCol.setSorteable(true);
metadata.addColumn(hiddenStateCol);
// create column for state
CmsListColumnDefinition stateCol = new CmsListColumnDefinition(LIST_COLUMN_VALIDATION);
stateCol.setName(Messages.get().container(Messages.GUI_IMPORTLISTCSV_LIST_COLS_VAIDATION_0));
stateCol.setWidth("20");
stateCol.setAlign(CmsListColumnAlignEnum.ALIGN_CENTER);
stateCol.setSorteable(false);
// add action for icon displaying
CmsListDirectAction stateAction = new CmsListDirectAction(LIST_ACTION_VALIDATION) {
/**
* @see org.opencms.workplace.tools.A_CmsHtmlIconButton#getIconPath()
*/
public String getIconPath() {
String userName = getItem().getId();
if (((((CmsUserDataImportList)getWp()).getReasons() != null) && ((CmsUserDataImportList)getWp()).getReasons().containsKey(
userName))
|| ((CmsUserDataImportList)getWp()).isAlreadyAvailable(userName)) {
return ICON_MULTI_DELETE;
}
return ICON_MULTI_ACTIVATE;
}
};
stateAction.setName(Messages.get().container(Messages.GUI_IMPORTLISTCSV_LIST_COLS_VAIDATION_0));
stateAction.setIconPath(ICON_MULTI_ACTIVATE);
stateAction.setEnabled(false);
stateCol.addDirectAction(stateAction);
metadata.addColumn(stateCol, 1);
}
/**
* @see org.opencms.workplace.tools.accounts.A_CmsUsersList#setDeleteAction(org.opencms.workplace.list.CmsListColumnDefinition)
*/
protected void setDeleteAction(CmsListColumnDefinition deleteCol) {
// noop
}
/**
* @see org.opencms.workplace.tools.accounts.A_CmsUsersList#setEditAction(org.opencms.workplace.list.CmsListColumnDefinition)
*/
protected void setEditAction(CmsListColumnDefinition editCol) {
CmsListDirectAction editAction = new CmsListDirectAction(LIST_ACTION_EDIT);
editAction.setName(Messages.get().container(Messages.GUI_USERS_LIST_ACTION_EDIT_NAME_0));
editAction.setIconPath(PATH_BUTTONS + "user.png");
editAction.setEnabled(false);
editCol.addDirectAction(editAction);
}
/**
* @see org.opencms.workplace.tools.accounts.A_CmsUsersList#setIndependentActions(org.opencms.workplace.list.CmsListMetadata)
*/
protected void setIndependentActions(CmsListMetadata metadata) {
// add reason details
CmsListItemDetails reasonDetails = new CmsListItemDetails(LIST_DETAIL_REASON);
reasonDetails.setAtColumn(LIST_COLUMN_DISPLAY);
reasonDetails.setVisible(true);
reasonDetails.setShowActionName(Messages.get().container(Messages.GUI_IMPORTLISTCSV_DETAIL_SHOW_REASON_NAME_0));
reasonDetails.setShowActionHelpText(Messages.get().container(
Messages.GUI_IMPORTLISTCSV_DETAIL_SHOW_REASON_HELP_0));
reasonDetails.setHideActionName(Messages.get().container(Messages.GUI_IMPORTLISTCSV_DETAIL_HIDE_REASON_NAME_0));
reasonDetails.setHideActionHelpText(Messages.get().container(
Messages.GUI_IMPORTLISTCSV_DETAIL_HIDE_REASON_HELP_0));
reasonDetails.setName(Messages.get().container(Messages.GUI_IMPORTLISTCSV_DETAIL_REASON_NAME_0));
reasonDetails.setFormatter(new I_CmsListFormatter() {
/**
* @see org.opencms.workplace.list.I_CmsListFormatter#format(java.lang.Object, java.util.Locale)
*/
public String format(Object data, Locale locale) {
StringBuffer html = new StringBuffer(512);
html.append("<table border='0' cellspacing='0' cellpadding='0'>\n");
html.append("\t<tr>\n");
html.append("\t\t<td style='white-space:normal;' >\n");
html.append("\t\t\t");
html.append(data == null ? "" : data);
html.append("\n");
html.append("\t\t</td>\n");
html.append("\t</tr>\n");
html.append("</table>\n");
return html.toString();
}
});
metadata.addItemDetails(reasonDetails);
}
/**
* @see org.opencms.workplace.tools.accounts.A_CmsUsersList#setMultiActions(org.opencms.workplace.list.CmsListMetadata)
*/
protected void setMultiActions(CmsListMetadata metadata) {
// add the select multi action
CmsListMultiAction selectUser = new CmsListMultiAction(LIST_MACTION_SELECT);
selectUser.setName(Messages.get().container(Messages.GUI_IMPORTLISTCSV_LIST_MACTION_SELECT_NAME_0));
selectUser.setHelpText(Messages.get().container(Messages.GUI_IMPORTLISTCSV_LIST_MACTION_SELECT_HELP_0));
selectUser.setIconPath(ICON_MULTI_ADD);
metadata.addMultiAction(selectUser);
}
}