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

Java tutorial

Introduction

Here is the source code for org.roda.wui.client.common.lists.LogEntryList.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.log.LogEntry;
import org.roda.wui.client.common.lists.utils.BasicAsyncTableCell;
import org.roda.wui.client.common.utils.HtmlSnippetUtils;
import org.roda.wui.client.common.utils.StringUtils;
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.i18n.client.DateTimeFormat.PredefinedFormat;
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.ColumnSortList.ColumnSortInfo;
import com.google.gwt.user.cellview.client.TextColumn;

import config.i18n.client.ClientMessages;

public class LogEntryList extends BasicAsyncTableCell<LogEntry> {

    private static final ClientMessages messages = GWT.create(ClientMessages.class);

    private Column<LogEntry, Date> dateColumn;
    private Column<LogEntry, SafeHtml> actionComponentColumn;
    private TextColumn<LogEntry> actionMethodColumn;
    private TextColumn<LogEntry> usernameColumn;
    private TextColumn<LogEntry> durationColumn;
    private TextColumn<LogEntry> addressColumn;
    private Column<LogEntry, SafeHtml> stateColumn;

    private static final List<String> fieldsToReturn = Arrays.asList(RodaConstants.INDEX_UUID, RodaConstants.LOG_ID,
            RodaConstants.LOG_DATETIME, RodaConstants.LOG_ACTION_COMPONENT, RodaConstants.LOG_ACTION_METHOD,
            RodaConstants.LOG_USERNAME, RodaConstants.LOG_DURATION, RodaConstants.LOG_ADDRESS,
            RodaConstants.LOG_STATE);

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

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

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

    @Override
    protected void configureDisplay(CellTable<LogEntry> display) {
        dateColumn = new Column<LogEntry, Date>(
                new DateCell(DateTimeFormat.getFormat(PredefinedFormat.DATE_TIME_MEDIUM))) {
            @Override
            public Date getValue(LogEntry logEntry) {
                return logEntry != null ? logEntry.getDatetime() : null;
            }
        };

        actionComponentColumn = new Column<LogEntry, SafeHtml>(new SafeHtmlCell()) {
            @Override
            public SafeHtml getValue(LogEntry entry) {
                return SafeHtmlUtils.fromSafeConstant(
                        translate(RodaConstants.LOG_ACTION_COMPONENT, entry.getActionComponent()));
            }
        };

        actionMethodColumn = new TextColumn<LogEntry>() {

            @Override
            public String getValue(LogEntry logEntry) {
                if (logEntry == null) {
                    return null;
                }

                return StringUtils.getPrettifiedActionMethod(logEntry.getActionMethod());
            }
        };

        usernameColumn = new TextColumn<LogEntry>() {

            @Override
            public String getValue(LogEntry logEntry) {
                return logEntry != null ? logEntry.getUsername() : null;
            }
        };

        durationColumn = new TextColumn<LogEntry>() {

            @Override
            public String getValue(LogEntry logEntry) {
                return logEntry != null ? Humanize.durationMillisToShortDHMS(logEntry.getDuration()) : null;
            }
        };

        addressColumn = new TextColumn<LogEntry>() {

            @Override
            public String getValue(LogEntry logEntry) {
                return logEntry != null ? logEntry.getAddress() : null;
            }
        };

        stateColumn = new Column<LogEntry, SafeHtml>(new SafeHtmlCell()) {
            @Override
            public SafeHtml getValue(LogEntry logEntry) {
                return HtmlSnippetUtils.getLogEntryStateHtml(logEntry.getState());
            }
        };

        dateColumn.setSortable(true);
        actionComponentColumn.setSortable(true);
        actionMethodColumn.setSortable(true);
        usernameColumn.setSortable(true);
        durationColumn.setSortable(true);
        addressColumn.setSortable(true);
        stateColumn.setSortable(true);

        addColumn(dateColumn, messages.logEntryDatetimeExtended(), true, false, 14);
        addColumn(actionComponentColumn, messages.logEntryComponent(), true, false);
        addColumn(actionMethodColumn, messages.logEntryMethod(), true, false);
        addColumn(usernameColumn, messages.logEntryUser(), true, false);
        addColumn(durationColumn, messages.logEntryDuration(), true, true, 5);
        addColumn(addressColumn, messages.logEntryAddress(), true, false);
        addColumn(stateColumn, messages.logEntryState(), true, false);

        // default sorting
        display.getColumnSortList().push(new ColumnSortInfo(dateColumn, false));
        addStyleName("my-collections-table");
    }

    @Override
    protected Sorter getSorter(ColumnSortList columnSortList) {
        Map<Column<LogEntry, ?>, List<String>> columnSortingKeyMap = new HashMap<>();
        columnSortingKeyMap.put(dateColumn, Arrays.asList(RodaConstants.LOG_DATETIME));
        columnSortingKeyMap.put(actionComponentColumn, Arrays.asList(RodaConstants.LOG_ACTION_COMPONENT));
        columnSortingKeyMap.put(actionMethodColumn, Arrays.asList(RodaConstants.LOG_ACTION_METHOD));
        columnSortingKeyMap.put(usernameColumn, Arrays.asList(RodaConstants.LOG_USERNAME));
        columnSortingKeyMap.put(durationColumn, Arrays.asList(RodaConstants.LOG_DURATION));
        columnSortingKeyMap.put(addressColumn, Arrays.asList(RodaConstants.LOG_ADDRESS));
        columnSortingKeyMap.put(stateColumn, Arrays.asList(RodaConstants.LOG_STATE));
        return createSorter(columnSortList, columnSortingKeyMap);
    }

}