/** * BonitaSoft, 32 rue Gustave Eiffel - 38000 Grenoble * Copyright (C) 2012 BonitaSoft S.A. * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 2.0 of the License, or * (at your option) any later version. * * This program 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 General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see <http://www.gnu.org/licenses/>. */ package org.bonitasoft.console.client.admin.organization.users.view; import static java.util.Arrays.asList; import static org.bonitasoft.web.toolkit.client.common.i18n.AbstractI18n._; import java.util.ArrayList; import java.util.LinkedList; import java.util.List; import org.bonitasoft.web.rest.model.identity.UserDefinition; import org.bonitasoft.web.rest.model.identity.UserItem; import org.bonitasoft.web.toolkit.client.data.item.Definitions; import org.bonitasoft.web.toolkit.client.data.item.attribute.reader.DateAttributeReader; import org.bonitasoft.web.toolkit.client.ui.JsId; import org.bonitasoft.web.toolkit.client.ui.action.ActionShowPopup; import org.bonitasoft.web.toolkit.client.ui.action.CheckValidSessionBeforeAction; import org.bonitasoft.web.toolkit.client.ui.component.Clickable; import org.bonitasoft.web.toolkit.client.ui.component.Link; import org.bonitasoft.web.toolkit.client.ui.component.table.ItemTable; import org.bonitasoft.web.toolkit.client.ui.page.itemListingPage.ItemListingFilter; import org.bonitasoft.web.toolkit.client.ui.page.itemListingPage.ItemListingPage; import org.bonitasoft.web.toolkit.client.ui.page.itemListingPage.ItemListingResourceFilter; import org.bonitasoft.web.toolkit.client.ui.page.itemListingPage.ItemListingSort; import org.bonitasoft.web.toolkit.client.ui.page.itemListingPage.ItemListingTable; import org.bonitasoft.web.toolkit.client.ui.utils.DateFormat.FORMAT; /** * @author Paul AMAR * */ public class UserListingAdminPage extends ItemListingPage<UserItem> { public static final String TOKEN = "userlistingadmin"; private static final String TABLE_ENABLED_USERS = "enabledusers"; private static final String TABLE_DISABLED_USERS = "disabledusers"; private static final String FILTER_PRIMARY_ENABLED_USERS = "enabledusers"; private static final String FILTER_PRIMARY_DISABLED_USERS = "disabledusers"; public static final List<String> PRIVILEGES = new ArrayList<String>(); static { PRIVILEGES.add(UserListingAdminPage.TOKEN); } @Override public void defineTitle() { this.setTitle(_("Users")); } @Override protected List<Clickable> defineFilterPanelActions() { return asList(addUserLink()); } private Clickable addUserLink() { return new Link(_("Create"), _("Opens a popup to create a user"), new CheckValidSessionBeforeAction(new ActionShowPopup(new PopupAddUserPage()))); } @Override protected LinkedList<ItemListingFilter> definePrimaryFilters() { LinkedList<ItemListingFilter> filters = new LinkedList<ItemListingFilter>(); filters.add(enabledUsersFilter()); filters.add(disabledUsersFilter()); return filters; } private ItemListingFilter disabledUsersFilter() { return new ItemListingFilter(FILTER_PRIMARY_DISABLED_USERS, _("Inactive"), _("Inactive Users"), TABLE_DISABLED_USERS) .addFilter(UserItem.ATTRIBUTE_ENABLED, "false"); } private ItemListingFilter enabledUsersFilter() { return new ItemListingFilter(FILTER_PRIMARY_ENABLED_USERS, _("Active"), _("Active Users"), TABLE_ENABLED_USERS) .addFilter(UserItem.ATTRIBUTE_ENABLED, "true"); } @Override protected ItemListingSort defineDefaultSort() { return new ItemListingSort(UserItem.ATTRIBUTE_USERNAME, true); } @Override protected LinkedList<ItemListingTable> defineTables() { final LinkedList<ItemListingTable> tables = new LinkedList<ItemListingTable>(); tables.add(enabledUserTable()); tables.add(disabledUserTable()); return tables; } protected ItemListingTable enabledUserTable() { ItemTable itemTable = itemTable(); return new ItemListingTable(new JsId(TABLE_ENABLED_USERS), _("Users"), itemTable, getItemQuickDetailPage()); } private ItemListingTable disabledUserTable() { ItemTable itemTable = itemTable(); return new ItemListingTable(new JsId(TABLE_DISABLED_USERS), _("Users"), itemTable, getItemQuickDetailPage()); } protected ItemTable itemTable() { return new ItemTable(Definitions.get(UserDefinition.TOKEN)) .addColumn(UserItem.ATTRIBUTE_ICON, _("Icon")) .addColumn(UserItem.ATTRIBUTE_FIRSTNAME, _("First name"), true) .addColumn(UserItem.ATTRIBUTE_LASTNAME, _("Last name"), true) .addColumn(new DateAttributeReader(UserItem.ATTRIBUTE_LAST_CONNECTION_DATE, FORMAT.DISPLAY_RELATIVE), _("Last login")) .addColumn(UserItem.ATTRIBUTE_JOB_TITLE, _("Job title"), false); } protected UserQuickDetailsPage getItemQuickDetailPage() { return new UserQuickDetailsAdminPage(); } @Override protected ItemListingResourceFilter defineResourceFilters() { return null; } @Override public String defineToken() { return TOKEN; } }