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

Java tutorial

Introduction

Here is the source code for org.roda.wui.client.common.lists.TransferredResourceList.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.Date;
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.ip.TransferredResource;
import org.roda.wui.client.common.lists.utils.BasicAsyncTableCell;
import org.roda.wui.common.client.ClientLogger;
import org.roda.wui.common.client.tools.Humanize;

import com.google.gwt.cell.client.DateCell;
import com.google.gwt.cell.client.SafeHtmlCell;
import com.google.gwt.core.client.GWT;
import com.google.gwt.i18n.client.DateTimeFormat;
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;

/**
 * 
 * @author Luis Faria <lfaria@keep.pt>
 *
 */
public class TransferredResourceList extends BasicAsyncTableCell<TransferredResource> {

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

    private Column<TransferredResource, SafeHtml> isFileColumn;
    private TextColumn<TransferredResource> nameColumn;
    private TextColumn<TransferredResource> sizeColumn;
    private Column<TransferredResource, Date> creationDateColumn;

    private static final List<String> fieldsToReturn = Arrays.asList(RodaConstants.INDEX_UUID,
            RodaConstants.TRANSFERRED_RESOURCE_ID, RodaConstants.TRANSFERRED_RESOURCE_ISFILE,
            RodaConstants.TRANSFERRED_RESOURCE_NAME, RodaConstants.TRANSFERRED_RESOURCE_SIZE,
            RodaConstants.TRANSFERRED_RESOURCE_DATE, RodaConstants.TRANSFERRED_RESOURCE_RELATIVEPATH);

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

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

    public TransferredResourceList(Filter filter, Facets facets, String summary, boolean selectable,
            int initialPageSize, int pageSizeIncrement) {
        super(TransferredResource.class, filter, facets, summary, selectable, initialPageSize, pageSizeIncrement,
                fieldsToReturn);
    }

    @Override
    protected void configureDisplay(final CellTable<TransferredResource> display) {

        isFileColumn = new Column<TransferredResource, SafeHtml>(new SafeHtmlCell()) {
            @Override
            public SafeHtml getValue(TransferredResource r) {
                SafeHtml ret;
                if (r == null) {
                    logger.error("Trying to display a NULL item");
                    ret = null;
                } else if (r.isFile()) {
                    ret = SafeHtmlUtils.fromSafeConstant("<i class='fa fa-file-o'></i>");
                } else {
                    ret = SafeHtmlUtils.fromSafeConstant("<i class='fa fa-folder-o'></i>");
                }
                return ret;
            }
        };

        nameColumn = new TextColumn<TransferredResource>() {

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

        sizeColumn = new TextColumn<TransferredResource>() {

            @Override
            public String getValue(TransferredResource r) {
                return r != null ? Humanize.readableFileSize(r.getSize()) : "";
            }
        };

        creationDateColumn = new Column<TransferredResource, Date>(
                new DateCell(DateTimeFormat.getFormat(RodaConstants.DEFAULT_DATETIME_FORMAT))) {
            @Override
            public Date getValue(TransferredResource r) {
                return r != null ? r.getCreationDate() : null;
            }
        };

        isFileColumn.setSortable(true);
        nameColumn.setSortable(true);
        sizeColumn.setSortable(true);
        creationDateColumn.setSortable(true);

        addColumn(isFileColumn, SafeHtmlUtils.fromSafeConstant("<i class='fa fa-files-o'></i>"), false, false, 3);
        addColumn(nameColumn, messages.transferredResourceName(), true, false);
        addColumn(sizeColumn, messages.transferredResourceSize(), true, true, 7);
        addColumn(creationDateColumn, messages.transferredResourceDateCreated(), true, true, 11);

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

    @Override
    protected Sorter getSorter(ColumnSortList columnSortList) {
        Map<Column<TransferredResource, ?>, List<String>> columnSortingKeyMap = new HashMap<>();
        columnSortingKeyMap.put(isFileColumn, Arrays.asList(RodaConstants.TRANSFERRED_RESOURCE_ISFILE));
        columnSortingKeyMap.put(nameColumn, Arrays.asList(RodaConstants.TRANSFERRED_RESOURCE_NAME));
        columnSortingKeyMap.put(sizeColumn, Arrays.asList(RodaConstants.TRANSFERRED_RESOURCE_SIZE));
        columnSortingKeyMap.put(creationDateColumn, Arrays.asList(RodaConstants.TRANSFERRED_RESOURCE_DATE));
        return createSorter(columnSortList, columnSortingKeyMap);
    }

}