org.roda.wui.client.common.lists.RodaMemberList.java Source code

Java tutorial

Introduction

Here is the source code for org.roda.wui.client.common.lists.RodaMemberList.java

Source

/**
 * The contents of this file are subject to the license and copyright
 * detailed in the LICENSE file at the root of the source
 * tree and available online at
 *
 * https://github.com/keeps/roda
 */
package org.roda.wui.client.common.lists;

import java.util.Arrays;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import org.roda.core.data.common.RodaConstants;
import org.roda.core.data.v2.index.facet.Facets;
import org.roda.core.data.v2.index.filter.Filter;
import org.roda.core.data.v2.index.sort.Sorter;
import org.roda.core.data.v2.user.RODAMember;
import org.roda.core.data.v2.user.User;
import org.roda.wui.client.common.lists.utils.BasicAsyncTableCell;
import org.roda.wui.client.common.utils.StringUtils;
import org.roda.wui.common.client.ClientLogger;

import com.google.gwt.cell.client.SafeHtmlCell;
import com.google.gwt.core.client.GWT;
import com.google.gwt.safehtml.shared.SafeHtml;
import com.google.gwt.safehtml.shared.SafeHtmlUtils;
import com.google.gwt.user.cellview.client.CellTable;
import com.google.gwt.user.cellview.client.Column;
import com.google.gwt.user.cellview.client.ColumnSortList;
import com.google.gwt.user.cellview.client.TextColumn;

import config.i18n.client.ClientMessages;

public class RodaMemberList extends BasicAsyncTableCell<RODAMember> {

    @SuppressWarnings("unused")
    private final ClientLogger logger = new ClientLogger(getClass().getName());
    private static final ClientMessages messages = GWT.create(ClientMessages.class);

    private Column<RODAMember, SafeHtml> activeColumn;
    private Column<RODAMember, SafeHtml> typeColumn;
    private TextColumn<RODAMember> nameColumn;
    private TextColumn<RODAMember> fullNameColumn;
    private TextColumn<RODAMember> groupsColumn;

    private static final List<String> fieldsToReturn = Arrays.asList(RodaConstants.INDEX_UUID,
            RodaConstants.MEMBERS_ID, RodaConstants.MEMBERS_IS_USER, RodaConstants.MEMBERS_NAME,
            RodaConstants.MEMBERS_FULLNAME, RodaConstants.MEMBERS_GROUPS, RodaConstants.MEMBERS_IS_ACTIVE);

    public RodaMemberList() {
        this(null, null, null, false);
    }

    public RodaMemberList(Filter filter, Facets facets, String summary, boolean selectable) {
        super(RODAMember.class, filter, facets, summary, selectable, fieldsToReturn);
    }

    public RodaMemberList(Filter filter, Facets facets, String summary, boolean selectable, int pageSize,
            int incrementPage) {
        super(RODAMember.class, filter, facets, summary, selectable, pageSize, incrementPage, fieldsToReturn);
    }

    @Override
    protected void configureDisplay(CellTable<RODAMember> display) {
        typeColumn = new Column<RODAMember, SafeHtml>(new SafeHtmlCell()) {
            @Override
            public SafeHtml getValue(RODAMember member) {
                return SafeHtmlUtils.fromSafeConstant(member != null
                        ? (member.isUser() ? "<i class='fa fa-user'></i>" : "<i class='fa fa-users'></i>")
                        : "");

            }
        };

        nameColumn = new TextColumn<RODAMember>() {

            @Override
            public String getValue(RODAMember member) {
                return member != null ? member.getName() : null;
            }
        };

        fullNameColumn = new TextColumn<RODAMember>() {

            @Override
            public String getValue(RODAMember member) {
                return member != null ? member.getFullName() : null;
            }
        };

        groupsColumn = new TextColumn<RODAMember>() {

            @Override
            public String getValue(RODAMember member) {
                if (member instanceof User) {
                    User user = (User) member;
                    return StringUtils.prettyPrint(user.getGroups());
                } else {
                    return null;
                }
            }
        };

        activeColumn = new Column<RODAMember, SafeHtml>(new SafeHtmlCell()) {
            @Override
            public SafeHtml getValue(RODAMember member) {
                return SafeHtmlUtils.fromSafeConstant(member != null
                        ? (member.isActive() ? "<i class='fa fa-check-circle'></i>" : "<i class='fa fa-ban'></i>")
                        : "");

            }
        };

        typeColumn.setSortable(true);
        nameColumn.setSortable(true);
        fullNameColumn.setSortable(true);
        activeColumn.setSortable(true);

        addColumn(typeColumn, SafeHtmlUtils.fromSafeConstant("<i class='fa fa-user'></i>"), false, false, 3);
        addColumn(nameColumn, messages.userIdentifier(), true, false);
        addColumn(fullNameColumn, messages.userFullName(), true, false);
        addColumn(groupsColumn, messages.userGroups(), true, false);
        addColumn(activeColumn, SafeHtmlUtils.fromSafeConstant("<i class='fa fa-check-circle'></i>"), false, false,
                2);

        addStyleName("my-list-rodamember");
    }

    @Override
    protected Sorter getSorter(ColumnSortList columnSortList) {
        Map<Column<RODAMember, ?>, List<String>> columnSortingKeyMap = new HashMap<>();
        columnSortingKeyMap.put(activeColumn, Arrays.asList(RodaConstants.MEMBERS_IS_ACTIVE));
        columnSortingKeyMap.put(typeColumn, Arrays.asList(RodaConstants.MEMBERS_IS_USER));
        columnSortingKeyMap.put(nameColumn, Arrays.asList(RodaConstants.MEMBERS_NAME));
        columnSortingKeyMap.put(fullNameColumn, Arrays.asList(RodaConstants.MEMBERS_FULLNAME));
        return createSorter(columnSortList, columnSortingKeyMap);
    }

}