blob: ea29bfafddee3fe4afe5c3ef6fab7c4ae7a10d5d [file] [log] [blame]
/**********************************************************************
* Copyright (c) 2018 Ericsson, École Polytechnique de Montréal
*
* 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.incubator.internal.ros.ui.views.queues;
import java.util.Collections;
import java.util.Map;
import org.apache.commons.lang3.StringUtils;
import org.eclipse.tracecompass.incubator.internal.ros.core.analysis.AbstractRosStateProvider;
import org.eclipse.tracecompass.incubator.internal.ros.ui.views.AbstractRosPresentationProvider;
import org.eclipse.tracecompass.incubator.internal.ros.ui.views.Messages;
import org.eclipse.tracecompass.tmf.ui.widgets.timegraph.model.ITimeEvent;
import org.eclipse.tracecompass.tmf.ui.widgets.timegraph.model.ITimeGraphEntry;
import com.google.common.collect.ImmutableMap;
/**
* ROS Queues presentation provider
*
* @author Christophe Bedard
*/
public class RosQueuesPresentationProvider extends AbstractRosPresentationProvider {
/**
* Constructor
*/
public RosQueuesPresentationProvider() {
// Nothing to do
}
@Override
public String getStateTypeName(ITimeGraphEntry entry) {
String entryName = entry.getName();
if (StringUtils.isNumeric(entryName)) {
return Messages.AbstractRosPresentationProvider_QueuePosition;
}
return null;
}
@Override
public Map<String, String> getEventHoverToolTipInfo(ITimeEvent event) {
String label = event.getLabel();
if (label == null) {
return Collections.emptyMap();
}
ImmutableMap.Builder<String, String> builder = new ImmutableMap.Builder<>();
String entryName = event.getEntry().getName();
String nodeName = Messages.AbstractRosPresentationProvider_Unknown;
String topicName = Messages.AbstractRosPresentationProvider_Unknown;
if (StringUtils.isNumeric(entryName)) {
topicName = event.getEntry().getParent().getParent().getName();
nodeName = event.getEntry().getParent().getParent().getParent().getParent().getName();
builder.put(Messages.AbstractRosPresentationProvider_QueueReference, label);
} else if (entryName.equals(AbstractRosStateProvider.QUEUE)) {
topicName = event.getEntry().getParent().getName();
nodeName = event.getEntry().getParent().getParent().getParent().getName();
builder.put(Messages.AbstractRosPresentationProvider_QueueSize, label);
} else if (entryName.equals(AbstractRosStateProvider.SUBSCRIBER_MESSAGE_PROCESSING)) {
topicName = event.getEntry().getParent().getName();
nodeName = event.getEntry().getParent().getParent().getParent().getName();
builder.put(Messages.AbstractRosPresentationProvider_QueueReference, label);
} else if (entryName.equals(AbstractRosStateProvider.DROPS)) {
topicName = event.getEntry().getParent().getName();
nodeName = event.getEntry().getParent().getParent().getParent().getName();
builder.put(Messages.AbstractRosPresentationProvider_QueueReference, label);
} else if (entryName.equals(AbstractRosStateProvider.CALLBACKS)) {
// FIXME get topic name by finding "message processing" entry with matching label
nodeName = event.getEntry().getParent().getParent().getName();
builder.put(Messages.AbstractRosPresentationProvider_QueueReference, label);
}
builder.put(Messages.AbstractRosPresentationProvider_TopicName, topicName);
builder.put(Messages.AbstractRosPresentationProvider_NodeName, nodeName);
return builder.build();
}
}