/*******************************************************************************
 * Copyright (c) 2019 Ericsson
 *
 * All rights reserved. This program and the accompanying materials are
 * made available under the terms of the Eclipse Public License 2.0 which
 * accompanies this distribution, and is available at
 * https://www.eclipse.org/legal/epl-2.0/
 *
 * SPDX-License-Identifier: EPL-2.0
 *******************************************************************************/

package org.eclipse.tracecompass.tmf.core.segment;

import java.util.Comparator;

import org.eclipse.jdt.annotation.NonNull;
import org.eclipse.jdt.annotation.Nullable;
import org.eclipse.tracecompass.common.core.NonNullUtils;
import org.eclipse.tracecompass.internal.tmf.core.segment.Messages;
import org.eclipse.tracecompass.segmentstore.core.ISegment;
import org.eclipse.tracecompass.segmentstore.core.SegmentComparators;
import org.eclipse.tracecompass.tmf.core.TmfStrings;

/**
 * An aspect used to get the duration of a segment. It can be used with all
 * segment types.
 *
 * @author David Piché
 * @since 5.2
 *
 */
public final class SegmentDurationAspect implements ISegmentAspect {

    /**
     * The Segment duration aspect instance
     */
    public static final ISegmentAspect SEGMENT_DURATION_ASPECT = new SegmentDurationAspect();

    /**
     * Constructor
     */
    private SegmentDurationAspect() {
        // Do nothing
    }

    @Override
    public @NonNull String getName() {
        return TmfStrings.duration();
    }

    @Override
    public @NonNull String getHelpText() {
        return NonNullUtils.nullToEmptyString(Messages.SegmentDurationAspect_durationDescription);
    }

    @Override
    public @Nullable Comparator<?> getComparator() {
        return SegmentComparators.INTERVAL_LENGTH_COMPARATOR;
    }

    @Override
    public @Nullable Long resolve(@NonNull ISegment segment) {
        return segment.getLength();
    }

    @Override
    public @NonNull SegmentType getType() {
        return ISegmentAspect.SegmentType.CONTINUOUS;
    }

}
