blob: 84e88cc0c9318db50e1ebf94e0f9ee9accec8208 [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.internal.analysis.graph.core.dataprovider;
import java.util.Collections;
import java.util.List;
import java.util.Map.Entry;
import org.eclipse.jdt.annotation.NonNull;
import org.eclipse.tracecompass.analysis.graph.core.base.IGraphWorker;
import org.eclipse.tracecompass.internal.analysis.graph.core.base.TmfGraphStatistics;
import org.eclipse.tracecompass.tmf.core.model.timegraph.TimeGraphEntryModel;
import com.google.common.collect.HashMultimap;
import com.google.common.collect.Multimap;
/**
* {@link TimeGraphEntryModel} for the Critical Path
*
* @author Loic Prieur-Drevon
*/
public class CriticalPathEntry extends TimeGraphEntryModel {
private static final String HOST_ID_STR = "hostId"; //$NON-NLS-1$
private final Long fSum;
private final Double fPercent;
private final @NonNull Multimap<@NonNull String, @NonNull Object> fAspects = HashMultimap.create();
/**
* Constructor
*
* @param id
* unique entry ID
* @param parentId
* entry's parent unique ID
* @param worker
* The graph worker this entry belongs to
* @param startTime
* entry's start time
* @param endTime
* entry's end time
* @param sum
* {@link TmfGraphStatistics} sum for the associated
* {@link IGraphWorker}
* @param percent
* {@link TmfGraphStatistics} percentage for the associated
* {@link IGraphWorker}
*/
public CriticalPathEntry(long id, long parentId, IGraphWorker worker,
long startTime, long endTime, Long sum, Double percent) {
super(id, parentId, Collections.singletonList(String.valueOf(worker)), startTime, endTime);
fSum = sum;
fPercent = percent;
fAspects.put(HOST_ID_STR, worker.getHostId());
for (Entry<@NonNull String, @NonNull Object> entry : worker.getWorkerAspects().entrySet()) {
fAspects.put(entry.getKey(), entry.getValue());
}
}
/**
* Constructor
*
* @param id
* unique entry ID
* @param parentId
* entry's parent unique ID
* @param labels
* The entry labels
* @param startTime
* entry's start time
* @param endTime
* entry's end time
* @param sum
* {@link TmfGraphStatistics} sum for the associated
* {@link IGraphWorker}
* @param percent
* {@link TmfGraphStatistics} percentage for the associated
* {@link IGraphWorker}
*/
public CriticalPathEntry(long id, long parentId, @NonNull List<@NonNull String> labels,
long startTime, long endTime, Long sum, Double percent) {
super(id, parentId, labels, startTime, endTime);
fSum = sum;
fPercent = percent;
}
/**
* Getter for the {@link TmfGraphStatistics} sum of this entry
*
* @return statistics sum for this entry
*/
public Long getSum() {
return fSum;
}
/**
* Getter for the {@link TmfGraphStatistics} percentage for this entry
*
* @return statistics percentage for this entry
*/
public Double getPercent() {
return fPercent;
}
@Override
public @NonNull Multimap<@NonNull String, @NonNull Object> getMetadata() {
return fAspects;
}
@Override
public boolean hasRowModel() {
// parent level entries do not have row models
return getParentId() != -1L;
}
}