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