| /******************************************************************************* |
| * Copyright (c) 2016 É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.tmf.core.event.aspect; |
| |
| import java.util.List; |
| |
| import org.eclipse.jdt.annotation.Nullable; |
| import org.eclipse.tracecompass.tmf.core.event.ITmfEvent; |
| import org.eclipse.tracecompass.tmf.core.event.ITmfEventType; |
| import org.eclipse.tracecompass.tmf.core.timestamp.ITmfTimestamp; |
| |
| import com.google.common.collect.ImmutableList; |
| |
| /** |
| * Some basic aspects that all trace types should be able to use, using methods |
| * found in {@link ITmfEvent}. |
| * |
| * @author Alexandre Montplaisir |
| * @author Geneviève Bastien |
| * @since 2.0 |
| */ |
| public final class TmfBaseAspects { |
| |
| private static final ITmfEventAspect<ITmfTimestamp> TIMESTAMP_ASPECT = new ITmfEventAspect<ITmfTimestamp>() { |
| @Override |
| public String getName() { |
| return Messages.getMessage(Messages.AspectName_Timestamp); |
| } |
| |
| @Override |
| public String getHelpText() { |
| return ITmfEventAspect.EMPTY_STRING; |
| } |
| |
| @Override |
| public @Nullable ITmfTimestamp resolve(ITmfEvent event) { |
| return event.getTimestamp(); |
| } |
| }; |
| |
| private static final ITmfEventAspect<String> EVENT_TYPE_ASPECT = new ITmfEventAspect<String>() { |
| @Override |
| public String getName() { |
| return Messages.getMessage(Messages.AspectName_EventType); |
| } |
| |
| @Override |
| public String getHelpText() { |
| return Messages.getMessage(Messages.AspectHelpText_EventType); |
| } |
| |
| @Override |
| public @Nullable String resolve(ITmfEvent event) { |
| ITmfEventType type = event.getType(); |
| if (type == null) { |
| return null; |
| } |
| return type.getName(); |
| } |
| }; |
| |
| private static final TmfEventFieldAspect CONTENTS_ASPECT = new TmfEventFieldAspect(Messages.getMessage(Messages.AspectName_Contents), null, event -> event.getContent()) { |
| @Override |
| public String getHelpText() { |
| return Messages.getMessage(Messages.AspectHelpText_Contents); |
| } |
| }; |
| |
| private static final ITmfEventAspect<String> TRACE_NAME_ASPECT = new ITmfEventAspect<String>() { |
| @Override |
| public String getName() { |
| return Messages.getMessage(Messages.AspectName_TraceName); |
| } |
| |
| @Override |
| public String getHelpText() { |
| return Messages.getMessage(Messages.AspectHelpText_TraceName); |
| } |
| |
| @Override |
| public @Nullable String resolve(ITmfEvent event) { |
| return event.getTrace().getName(); |
| } |
| }; |
| |
| private static final List<ITmfEventAspect<?>> BASE_ASPECTS = ImmutableList.of( |
| getTimestampAspect(), |
| getEventTypeAspect(), |
| getContentsAspect(), |
| getTraceNameAspect()); |
| |
| private TmfBaseAspects() { |
| |
| } |
| |
| /** |
| * Get the aspect for the event timestamp |
| * |
| * @return The timestamp aspect |
| */ |
| public static ITmfEventAspect<ITmfTimestamp> getTimestampAspect() { |
| return TIMESTAMP_ASPECT; |
| } |
| |
| /** |
| * Get the aspect for the event type |
| * |
| * @return The aspect for the event type |
| */ |
| public static ITmfEventAspect<String> getEventTypeAspect() { |
| return EVENT_TYPE_ASPECT; |
| } |
| |
| /** |
| * Get the aspect for the aggregated event contents (fields) |
| * |
| * @return The aspect for the aggregate event contents |
| */ |
| public static TmfEventFieldAspect getContentsAspect() { |
| return CONTENTS_ASPECT; |
| } |
| |
| /** |
| * Get the aspect for the trace's name (for experiments with many traces) |
| * |
| * @return The trace name aspect |
| */ |
| public static ITmfEventAspect<String> getTraceNameAspect() { |
| return TRACE_NAME_ASPECT; |
| } |
| |
| /** |
| * Get the list of all common base aspects |
| * |
| * @return the list of base aspects |
| */ |
| public static List<ITmfEventAspect<?>> getBaseAspects() { |
| return BASE_ASPECTS; |
| } |
| |
| } |