blob: 5eb334e71ae691cb1b39b3aa10d1c071d75ac59f [file] [log] [blame]
/**********************************************************************
* Copyright (c) 2018 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.analysis.timing.core.segmentstore;
import java.util.Collections;
import java.util.List;
import org.eclipse.tracecompass.analysis.timing.core.statistics.IStatistics;
import org.eclipse.tracecompass.segmentstore.core.ISegment;
import org.eclipse.tracecompass.tmf.core.model.tree.TmfTreeDataModel;
/**
* A {@link TmfTreeDataModel} extended with the getters from {@link IStatistics}
*
* @author Loic Prieur-Drevon
* @since 4.0
*/
public class SegmentStoreStatisticsModel extends TmfTreeDataModel {
private final long fMin;
private final long fMax;
private final long fNbElements;
private final double fMean;
private final double fStdDev;
private final double fTotal;
private final long fMinStart;
private final long fMinEnd;
private final long fMaxStart;
private final long fMaxEnd;
/**
* Constructor
*
* @param id
* The id of the model
* @param parentId
* The parent id of this model. If it has none, give <code>-1</code>.
* @param name
* The name of this model
* @param statistics
* the {@link IStatistics} who's values will be copied into this
* model.
*/
public SegmentStoreStatisticsModel(long id, long parentId, String name, IStatistics<ISegment> statistics) {
this(id, parentId, Collections.singletonList(name), statistics);
}
/**
* Constructor
*
* @param id
* The id of the model
* @param parentId
* The parent id of this model. If it has none, give <code>-1</code>.
* @param labels
* The labels of this model
* @param statistics
* the {@link IStatistics} who's values will be copied into this
* model.
* @since 5.0
*/
public SegmentStoreStatisticsModel(long id, long parentId, List<String> labels, IStatistics<ISegment> statistics) {
super(id, parentId, labels);
fMin = statistics.getMin();
fMax = statistics.getMax();
fNbElements = statistics.getNbElements();
fMean = statistics.getMean();
fStdDev = statistics.getStdDev();
fTotal = statistics.getTotal();
ISegment max = statistics.getMaxObject();
if (max != null) {
fMaxStart = max.getStart();
fMaxEnd = max.getEnd();
} else {
fMaxStart = 0;
fMaxEnd = 0;
}
ISegment min = statistics.getMinObject();
if (min != null) {
fMinStart = min.getStart();
fMinEnd = min.getEnd();
} else {
fMinStart = 0;
fMinEnd = 0;
}
}
/**
* Get the minimum value from the statistics
*
* @return mininum value.
*/
public long getMin() {
return fMin;
}
/**
* Get the maximum value from the statistics
*
* @return maximum value.
*/
public long getMax() {
return fMax;
}
/**
* Get the number of elements in the statistics
*
* @return the number of elements.
*/
public long getNbElements() {
return fNbElements;
}
/**
* Get the mean value from the statistics
*
* @return mean value.
*/
public double getMean() {
return fMean;
}
/**
* Get the standard deviation from the statistics
*
* @return standard deviation.
*/
public double getStdDev() {
return fStdDev;
}
/**
* Get the total value from the statistics
*
* @return total value.
*/
public double getTotal() {
return fTotal;
}
/**
* Get the minimum's start time from the statistics, if there was one, else
* {@code 0}
*
* @return minimum's start time.
*/
public long getMinStart() {
return fMinStart;
}
/**
* Get the minimum's end time from the statistics, if there was one, else
* {@code 0}
*
* @return minimum's end time.
*/
public long getMinEnd() {
return fMinEnd;
}
/**
* Get the maximum's start time from the statistics, if there was one, else
* {@code 0}
*
* @return maximum's start time.
*/
public long getMaxStart() {
return fMaxStart;
}
/**
* Get the maximum's end time from the statistics, if there was one, else
* {@code 0}
*
* @return maximum's end time.
*/
public long getMaxEnd() {
return fMaxEnd;
}
}