blob: f03fdcd64965461bc06922cae717a8820edcc94c [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2015 É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
*
* Contributors:
* Geneviève Bastien - Initial API and implementation
*******************************************************************************/
package org.eclipse.tracecompass.analysis.graph.core.base;
import java.util.Collections;
import java.util.HashMap;
import java.util.Map;
import org.eclipse.jdt.annotation.NonNull;
/**
* Interface that the objects in a graph may implement
*
* @author Geneviève Bastien
*/
public interface IGraphWorker {
/**
* Get the host ID of the trace this worker belongs to
*
* @return The host ID of the trace this worker belongs to
*/
String getHostId();
/**
* Get additional information on this worker at time t. This would be
* textual information, in the form of key, value pairs, that could be
* displayed for instance as extra columns for this worker in a graph view.
*
* @return A key, value map of information this worker provides.
* @since 2.0
*/
default Map<String, String> getWorkerInformation() {
return Collections.emptyMap();
}
/**
* Get additional information on this worker. Unlike
* {@link #getWorkerInformation()}, this method returns unformatted data in
* their original type. It can be used to filter and compare data with other
* model objects.
*
* @return A key, value map of information this worker provides.
* @since 2.1
*/
default Map<@NonNull String, @NonNull Object> getWorkerAspects() {
Map<String, String> workerInformation = getWorkerInformation();
if (workerInformation.isEmpty()) {
return Collections.emptyMap();
}
Map<String, Object> map = new HashMap<>();
map.putAll(workerInformation);
return map;
}
/**
* Get additional information on this worker at time t. This would be
* textual information, in the form of key, value pairs, that could be
* displayed for instance as a tooltip in the graph view.
*
* @param t
* Time at which to get the information
* @return A key, value map of information this worker provides.
* @since 2.0
*/
default Map<String, String> getWorkerInformation(long t) {
return Collections.emptyMap();
}
}