org.roda.wui.client.common.slider.InfoSliderHelper.java Source code

Java tutorial

Introduction

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

import java.util.HashMap;
import java.util.Map.Entry;

import org.roda.core.data.v2.index.IsIndexed;
import org.roda.core.data.v2.ip.IndexedAIP;
import org.roda.core.data.v2.ip.IndexedFile;
import org.roda.core.data.v2.ip.IndexedRepresentation;
import org.roda.core.data.v2.ip.metadata.FileFormat;
import org.roda.wui.client.common.utils.StringUtils;
import org.roda.wui.common.client.tools.DescriptionLevelUtils;
import org.roda.wui.common.client.tools.Humanize;

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.FlowPanel;
import com.google.gwt.user.client.ui.HTML;
import com.google.gwt.user.client.ui.Label;

import config.i18n.client.ClientMessages;

public class InfoSliderHelper {

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

    private InfoSliderHelper() {

    }

    protected static <T extends IsIndexed> void updateInfoObjectSliderPanel(T object, SliderPanel slider) {
        if (object instanceof IndexedFile) {
            updateInfoSliderPanel((IndexedFile) object, slider);
        } else if (object instanceof IndexedRepresentation) {
            updateInfoSliderPanel((IndexedRepresentation) object, slider);
        } else if (object instanceof IndexedAIP) {
            updateInfoSliderPanel((IndexedAIP) object, slider);
        } else {
            // do nothing
        }
    }

    private static void updateInfoSliderPanel(IndexedAIP aip, SliderPanel infoSliderPanel) {
        HashMap<String, SafeHtml> values = new HashMap<>();

        infoSliderPanel.clear();
        infoSliderPanel.addTitle(new Label(messages.viewRepresentationInfoTitle()));

        if (aip != null) {
            if (StringUtils.isNotBlank(aip.getLevel())) {
                values.put(messages.aipLevel(),
                        DescriptionLevelUtils.getElementLevelIconSafeHtml(aip.getLevel(), true));
            }

            if (StringUtils.isNotBlank(aip.getTitle())) {
                values.put(messages.aipGenericTitle(), SafeHtmlUtils.fromString(aip.getTitle()));
            }

            if (aip.getDateInitial() != null || aip.getDateFinal() != null) {
                values.put(messages.aipDates(), SafeHtmlUtils
                        .fromString(Humanize.getDatesText(aip.getDateInitial(), aip.getDateFinal(), true)));
            }
        }

        populate(infoSliderPanel, values);
    }

    private static void updateInfoSliderPanel(IndexedRepresentation representation, SliderPanel infoSliderPanel) {
        HashMap<String, SafeHtml> values = new HashMap<>();

        infoSliderPanel.clear();
        infoSliderPanel.addTitle(new Label(messages.viewRepresentationInfoTitle()));

        if (representation != null) {

            if (StringUtils.isNotBlank(messages.representationType())) {
                values.put(messages.representationType(),
                        DescriptionLevelUtils.getRepresentationTypeIcon(representation.getType(), true));
            }

            if (StringUtils.isNotBlank(messages.representationFiles())) {
                values.put(messages.representationFiles(),
                        SafeHtmlUtils.fromString(messages.numberOfFiles(representation.getNumberOfDataFiles())));
            }

            if (representation.getNumberOfDataFiles() > 0) {
                values.put(messages.representationFiles(),
                        SafeHtmlUtils.fromString(messages.numberOfFiles(representation.getNumberOfDataFiles())));
            }

            values.put(messages.representationOriginal(),
                    SafeHtmlUtils.fromString(representation.isOriginal() ? messages.originalRepresentation()
                            : messages.alternativeRepresentation()));
        }

        populate(infoSliderPanel, values);
    }

    private static void updateInfoSliderPanel(IndexedFile file, SliderPanel infoSliderPanel) {
        HashMap<String, SafeHtml> values = new HashMap<>();

        infoSliderPanel.clear();
        infoSliderPanel.addTitle(new Label(messages.viewRepresentationInfoTitle()));

        if (file != null) {
            String fileName = file.getOriginalName() != null ? file.getOriginalName() : file.getId();
            values.put(messages.viewRepresentationInfoFilename(), SafeHtmlUtils.fromString(fileName));

            if (file.getSize() > 0) {
                values.put(messages.viewRepresentationInfoSize(),
                        SafeHtmlUtils.fromString(Humanize.readableFileSize(file.getSize())));
            }

            if (file.getFileFormat() != null) {
                FileFormat fileFormat = file.getFileFormat();

                if (StringUtils.isNotBlank(fileFormat.getMimeType())) {
                    values.put(messages.viewRepresentationInfoMimetype(),
                            SafeHtmlUtils.fromString(fileFormat.getMimeType()));
                }

                if (StringUtils.isNotBlank(fileFormat.getFormatDesignationName())) {
                    values.put(messages.viewRepresentationInfoFormat(),
                            SafeHtmlUtils.fromString(fileFormat.getFormatDesignationName()));
                }

                if (StringUtils.isNotBlank(fileFormat.getFormatDesignationVersion())) {
                    values.put(messages.viewRepresentationInfoFormatVersion(),
                            SafeHtmlUtils.fromString(fileFormat.getFormatDesignationVersion()));
                }

                if (StringUtils.isNotBlank(fileFormat.getPronom())) {
                    values.put(messages.viewRepresentationInfoPronom(),
                            SafeHtmlUtils.fromString(fileFormat.getPronom()));
                }

            }

            if (StringUtils.isNotBlank(file.getCreatingApplicationName())) {
                values.put(messages.viewRepresentationInfoCreatingApplicationName(),
                        SafeHtmlUtils.fromString(file.getCreatingApplicationName()));
            }

            if (StringUtils.isNotBlank(file.getCreatingApplicationVersion())) {
                values.put(messages.viewRepresentationInfoCreatingApplicationVersion(),
                        SafeHtmlUtils.fromString(file.getCreatingApplicationVersion()));
            }

            if (StringUtils.isNotBlank(file.getDateCreatedByApplication())) {
                values.put(messages.viewRepresentationInfoDateCreatedByApplication(),
                        SafeHtmlUtils.fromString(file.getDateCreatedByApplication()));
            }

            if (file.getHash() != null && !file.getHash().isEmpty()) {
                SafeHtmlBuilder b = new SafeHtmlBuilder();
                boolean first = true;
                for (String hash : file.getHash()) {
                    if (first) {
                        first = false;
                    } else {
                        b.append(SafeHtmlUtils.fromSafeConstant("<br/>"));
                    }
                    b.append(SafeHtmlUtils.fromSafeConstant("<small>"));
                    b.append(SafeHtmlUtils.fromString(hash));
                    b.append(SafeHtmlUtils.fromSafeConstant("</small>"));
                }
                values.put(messages.viewRepresentationInfoHash(), b.toSafeHtml());
            }

            if (file.getStoragePath() != null) {
                SafeHtmlBuilder b = new SafeHtmlBuilder();
                b.append(SafeHtmlUtils.fromSafeConstant("<small>"));
                b.append(SafeHtmlUtils.fromString(file.getStoragePath()));
                b.append(SafeHtmlUtils.fromSafeConstant("</small>"));

                values.put(messages.viewRepresentationInfoStoragePath(), b.toSafeHtml());
            }
        }

        populate(infoSliderPanel, values);
    }

    private static void populate(SliderPanel infoSliderPanel, HashMap<String, SafeHtml> values) {
        for (Entry<String, SafeHtml> entry : values.entrySet()) {
            FlowPanel entryPanel = new FlowPanel();

            Label keyLabel = new Label(entry.getKey());
            HTML valueLabel = new HTML(entry.getValue());

            entryPanel.add(keyLabel);
            entryPanel.add(valueLabel);

            infoSliderPanel.addContent(entryPanel);

            keyLabel.addStyleName("infoFileEntryKey");
            valueLabel.addStyleName("infoFileEntryValue");
            entryPanel.addStyleName("infoFileEntry");
        }
    }
}