org.roda.wui.client.common.utils.HtmlSnippetUtils.java Source code

Java tutorial

Introduction

Here is the source code for org.roda.wui.client.common.utils.HtmlSnippetUtils.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.utils;

import java.util.List;

import org.roda.core.data.v2.index.facet.FacetFieldResult;
import org.roda.core.data.v2.index.facet.FacetValue;
import org.roda.core.data.v2.ip.AIP;
import org.roda.core.data.v2.ip.AIPState;
import org.roda.core.data.v2.ip.File;
import org.roda.core.data.v2.ip.Representation;
import org.roda.core.data.v2.jobs.Job;
import org.roda.core.data.v2.jobs.Job.JOB_STATE;
import org.roda.core.data.v2.jobs.Report.PluginState;
import org.roda.core.data.v2.log.LogEntry;
import org.roda.core.data.v2.log.LogEntry.LOG_ENTRY_STATE;
import org.roda.core.data.v2.notifications.Notification.NOTIFICATION_STATE;
import org.roda.core.data.v2.risks.Risk.SEVERITY_LEVEL;
import org.roda.core.data.v2.risks.RiskIncidence;
import org.roda.core.data.v2.risks.RiskIncidence.INCIDENCE_STATUS;
import org.roda.wui.client.browse.BrowseAIP;
import org.roda.wui.client.browse.BrowseRepresentation;
import org.roda.wui.common.client.tools.HistoryUtils;

import com.google.gwt.core.client.GWT;
import com.google.gwt.safehtml.shared.SafeHtml;
import com.google.gwt.safehtml.shared.SafeHtmlBuilder;
import com.google.gwt.safehtml.shared.SafeHtmlUtils;
import com.google.gwt.user.client.ui.Anchor;
import com.google.gwt.user.client.ui.Label;
import com.google.gwt.user.client.ui.UIObject;

import config.i18n.client.ClientMessages;

public class HtmlSnippetUtils {

    private static final String OPEN_SPAN_CLASS_LABEL_INFO = "<span class='label-info'>";
    private static final String OPEN_SPAN_CLASS_LABEL_DEFAULT = "<span class='label-default'>";
    private static final String OPEN_SPAN_CLASS_LABEL_DANGER = "<span class='label-danger'>";
    private static final String OPEN_SPAN_CLASS_LABEL_WARNING = "<span class='label-warning'>";
    private static final String OPEN_SPAN_CLASS_LABEL_SUCCESS = "<span class='label-success'>";

    private static final String OPEN_SPAN_ORIGINAL_LABEL_SUCCESS = "<span class='label-success browseRepresentationOriginalIcon'>";
    private static final String OPEN_H4_CLASS_LABEL_SUCCESS = "<span class='h4' style='font-size: 3.2rem'>";
    private static final String CLOSE_SPAN = "</span>";

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

    public static final SafeHtml LOADING = SafeHtmlUtils.fromSafeConstant(
            "<div class='spinner'><div class='double-bounce1'></div><div class='double-bounce2'></div></div>");

    private HtmlSnippetUtils() {
        // do nothing
    }

    public static SafeHtml getJobStateHtml(Job job) {
        SafeHtml ret = null;
        if (job != null) {
            JOB_STATE state = job.getState();
            if (JOB_STATE.COMPLETED.equals(state)) {
                if (job.getJobStats().getSourceObjectsCount() == job.getJobStats()
                        .getSourceObjectsProcessedWithSuccess()) {
                    ret = SafeHtmlUtils.fromSafeConstant(
                            OPEN_SPAN_CLASS_LABEL_SUCCESS + messages.showJobStatusCompleted() + CLOSE_SPAN);
                } else if (job.getJobStats().getSourceObjectsProcessedWithSuccess() > 0) {
                    ret = SafeHtmlUtils.fromSafeConstant(
                            OPEN_SPAN_CLASS_LABEL_WARNING + messages.showJobStatusCompleted() + CLOSE_SPAN);
                } else {
                    ret = SafeHtmlUtils.fromSafeConstant(
                            OPEN_SPAN_CLASS_LABEL_DANGER + messages.showJobStatusCompleted() + CLOSE_SPAN);
                }
            } else if (JOB_STATE.FAILED_DURING_CREATION.equals(state)) {
                ret = SafeHtmlUtils.fromSafeConstant(
                        OPEN_SPAN_CLASS_LABEL_DEFAULT + messages.showJobStatusFailedDuringCreation() + CLOSE_SPAN);
            } else if (JOB_STATE.FAILED_TO_COMPLETE.equals(state)) {
                ret = SafeHtmlUtils.fromSafeConstant(
                        OPEN_SPAN_CLASS_LABEL_DEFAULT + messages.showJobStatusFailedToComplete() + CLOSE_SPAN);
            } else if (JOB_STATE.STOPPING.equals(state)) {
                ret = SafeHtmlUtils.fromSafeConstant(
                        OPEN_SPAN_CLASS_LABEL_DEFAULT + messages.showJobStatusStopping() + CLOSE_SPAN);
            } else if (JOB_STATE.STOPPED.equals(state)) {
                ret = SafeHtmlUtils.fromSafeConstant(
                        OPEN_SPAN_CLASS_LABEL_DEFAULT + messages.showJobStatusStopped() + CLOSE_SPAN);
            } else if (JOB_STATE.CREATED.equals(state)) {
                ret = SafeHtmlUtils.fromSafeConstant(
                        OPEN_SPAN_CLASS_LABEL_INFO + messages.showJobStatusCreated() + CLOSE_SPAN);
            } else if (JOB_STATE.STARTED.equals(state)) {
                ret = SafeHtmlUtils.fromSafeConstant(
                        OPEN_SPAN_CLASS_LABEL_INFO + messages.showJobStatusStarted() + CLOSE_SPAN);
            } else {
                ret = SafeHtmlUtils.fromSafeConstant(OPEN_SPAN_CLASS_LABEL_WARNING + state + CLOSE_SPAN);
            }
        }
        return ret;
    }

    public static SafeHtml getAIPStateHTML(AIPState aipState) {
        SafeHtmlBuilder b = new SafeHtmlBuilder();

        switch (aipState) {
        case ACTIVE:
            b.append(SafeHtmlUtils.fromSafeConstant(OPEN_SPAN_CLASS_LABEL_SUCCESS));
            break;
        case UNDER_APPRAISAL:
            b.append(SafeHtmlUtils.fromSafeConstant(OPEN_SPAN_CLASS_LABEL_WARNING));
            break;
        default:
            b.append(SafeHtmlUtils.fromSafeConstant(OPEN_SPAN_CLASS_LABEL_DANGER));
            break;
        }

        b.append(SafeHtmlUtils.fromString(messages.aipState(aipState)));
        b.append(SafeHtmlUtils.fromSafeConstant(CLOSE_SPAN));

        return b.toSafeHtml();
    }

    public static SafeHtml getRepresentationTypeHTML(String type, boolean isOriginal) {
        SafeHtmlBuilder b = new SafeHtmlBuilder();
        b.append(SafeHtmlUtils.fromSafeConstant(OPEN_H4_CLASS_LABEL_SUCCESS));
        b.append(SafeHtmlUtils.fromString(type));
        b.append(SafeHtmlUtils.fromSafeConstant(CLOSE_SPAN));

        b.append(SafeHtmlUtils.fromSafeConstant(OPEN_SPAN_ORIGINAL_LABEL_SUCCESS));
        if (isOriginal) {
            b.append(SafeHtmlUtils.fromString(messages.originalRepresentation()));
        } else {
            b.append(SafeHtmlUtils.fromString(messages.alternativeRepresentation()));
        }

        b.append(SafeHtmlUtils.fromSafeConstant(CLOSE_SPAN));
        return b.toSafeHtml();
    }

    public static SafeHtml getPluginStateHTML(PluginState pluginState) {
        SafeHtml pluginStateHTML;
        switch (pluginState) {
        case SUCCESS:
            pluginStateHTML = SafeHtmlUtils.fromSafeConstant(
                    OPEN_SPAN_CLASS_LABEL_SUCCESS + messages.pluginStateMessage(pluginState) + CLOSE_SPAN);
            break;
        case RUNNING:
            pluginStateHTML = SafeHtmlUtils.fromSafeConstant(
                    OPEN_SPAN_CLASS_LABEL_DEFAULT + messages.pluginStateMessage(pluginState) + CLOSE_SPAN);
            break;
        case FAILURE:
        default:
            pluginStateHTML = SafeHtmlUtils.fromSafeConstant(
                    OPEN_SPAN_CLASS_LABEL_DANGER + messages.pluginStateMessage(pluginState) + CLOSE_SPAN);
            break;
        }
        return pluginStateHTML;
    }

    public static SafeHtml getNotificationStateHTML(NOTIFICATION_STATE state) {
        String label = messages.notificationStateValue(state);
        return getNotificationStateHTML(state, label);
    }

    public static SafeHtml getNotificationStateHTML(NOTIFICATION_STATE state, String label) {
        SafeHtml notificationStateHTML;
        switch (state) {
        case COMPLETED:
            notificationStateHTML = SafeHtmlUtils
                    .fromSafeConstant(OPEN_SPAN_CLASS_LABEL_SUCCESS + label + CLOSE_SPAN);
            break;
        case FAILED:
            notificationStateHTML = SafeHtmlUtils
                    .fromSafeConstant(OPEN_SPAN_CLASS_LABEL_DANGER + label + CLOSE_SPAN);
            break;
        case CREATED:
        default:
            notificationStateHTML = SafeHtmlUtils
                    .fromSafeConstant(OPEN_SPAN_CLASS_LABEL_DEFAULT + label + CLOSE_SPAN);
            break;
        }
        return notificationStateHTML;
    }

    public static SEVERITY_LEVEL getSeverityLevel(int severity, int lowLimit, int highLimit) {
        if (severity < lowLimit) {
            return SEVERITY_LEVEL.LOW;
        } else if (severity < highLimit) {
            return SEVERITY_LEVEL.MODERATE;
        } else {
            return SEVERITY_LEVEL.HIGH;
        }
    }

    public static SafeHtml getSeverityDefinition(int severity, int lowLimit, int highLimit) {
        return getSeverityDefinition(getSeverityLevel(severity, lowLimit, highLimit));
    }

    public static SafeHtml getSeverityDefinition(SEVERITY_LEVEL level) {
        SafeHtml ret;
        switch (level) {
        case LOW:
            ret = SafeHtmlUtils
                    .fromSafeConstant(OPEN_SPAN_CLASS_LABEL_SUCCESS + messages.severityLevel(level) + CLOSE_SPAN);
            break;
        case MODERATE:
            ret = SafeHtmlUtils
                    .fromSafeConstant(OPEN_SPAN_CLASS_LABEL_WARNING + messages.severityLevel(level) + CLOSE_SPAN);
            break;
        case HIGH:
        default:
            ret = SafeHtmlUtils
                    .fromSafeConstant(OPEN_SPAN_CLASS_LABEL_DANGER + messages.severityLevel(level) + CLOSE_SPAN);
            break;
        }
        return ret;
    }

    public static SafeHtml getStatusDefinition(INCIDENCE_STATUS status) {
        if (status.equals(INCIDENCE_STATUS.UNMITIGATED)) {
            return SafeHtmlUtils.fromSafeConstant(
                    OPEN_SPAN_CLASS_LABEL_DANGER + messages.riskIncidenceStatusValue(status) + CLOSE_SPAN);
        } else {
            return SafeHtmlUtils.fromSafeConstant(
                    OPEN_SPAN_CLASS_LABEL_SUCCESS + messages.riskIncidenceStatusValue(status) + CLOSE_SPAN);
        }
    }

    public static SafeHtml getLogEntryStateHtml(LOG_ENTRY_STATE state) {
        String labelClass;

        switch (state) {
        case SUCCESS:
            labelClass = "label-success";
            break;

        case FAILURE:
            labelClass = "label-danger";
            break;

        case UNAUTHORIZED:
            labelClass = "label-warning";
            break;

        default:
            labelClass = "label-default";
            break;
        }

        return SafeHtmlUtils.fromSafeConstant(
                "<span class='" + labelClass + "'>" + messages.logEntryStateValue(state) + CLOSE_SPAN);
    }

    public static void addRiskIncidenceObjectLinks(RiskIncidence incidence, final Label objectLabel,
            final Anchor objectLink) {
        if (AIP.class.getSimpleName().equals(incidence.getObjectClass())) {
            objectLabel.setText(messages.showAIPExtended());
            objectLink.setHref(HistoryUtils.createHistoryHashLink(BrowseAIP.RESOLVER, incidence.getAipId()));
            objectLink.setText(incidence.getAipId());

        } else if (Representation.class.getSimpleName().equals(incidence.getObjectClass())) {
            objectLabel.setText(messages.showRepresentationExtended());
            objectLink.setHref(HistoryUtils.createHistoryHashLink(BrowseRepresentation.RESOLVER,
                    incidence.getAipId(), incidence.getRepresentationId()));
            objectLink.setText(incidence.getRepresentationId());

        } else if (File.class.getSimpleName().equals(incidence.getObjectClass())) {
            objectLabel.setText(messages.showFileExtended());
            objectLink
                    .setHref(HistoryUtils.createHistoryHashLink(HistoryUtils.getHistoryBrowse(incidence.getAipId(),
                            incidence.getRepresentationId(), incidence.getFilePath(), incidence.getFileId())));
            objectLink.setText(incidence.getFileId());
        }
    }

    public static SafeHtml getLogEntryComponent(LogEntry entry, List<FacetFieldResult> facets) {
        String html = null;
        if (facets != null) {
            for (FacetFieldResult ffr : facets) {
                if ("actionComponent".equalsIgnoreCase(ffr.getField()) && ffr.getValues() != null) {
                    for (FacetValue fv : ffr.getValues()) {
                        if (fv.getValue().equalsIgnoreCase(entry.getActionComponent())) {
                            html = fv.getLabel();
                            break;
                        }

                    }
                }
                if (html != null) {
                    break;
                }
            }
        }
        if (html == null) {
            html = entry.getActionComponent();
        }
        return SafeHtmlUtils.fromSafeConstant(html);
    }

    public static final void setCssClassDisabled(UIObject uiobject, boolean disabled) {
        if (disabled) {
            uiobject.addStyleName("disabled");
        } else {
            uiobject.removeStyleName("disabled");
        }
    }

}