| /******************************************************************************* |
| * Copyright (c) 2014, 2015 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 |
| * |
| * Contributors: |
| * Matthew Khouzam - Initial API and implementation |
| * Alexandre Montplaisir - Update to new Event Table API |
| * Patrick Tasse - Update for renamed target field |
| *******************************************************************************/ |
| |
| package org.eclipse.tracecompass.btf.core.trace; |
| |
| import org.eclipse.jdt.annotation.NonNullByDefault; |
| import org.eclipse.jdt.annotation.Nullable; |
| import org.eclipse.tracecompass.btf.core.event.BtfEvent; |
| import org.eclipse.tracecompass.tmf.core.event.ITmfEvent; |
| import org.eclipse.tracecompass.tmf.core.event.aspect.TmfBaseAspects; |
| import org.eclipse.tracecompass.tmf.core.event.aspect.ITmfEventAspect; |
| import org.eclipse.tracecompass.tmf.core.event.aspect.TmfContentFieldAspect; |
| |
| import com.google.common.collect.ImmutableList; |
| |
| /** |
| * Columns to use in the BTF event table |
| * |
| * @author Alexandre Montplaisir |
| */ |
| @NonNullByDefault |
| public final class BtfEventAspects { |
| |
| private BtfEventAspects() {} |
| |
| private static final Iterable<ITmfEventAspect<?>> BTF_ASPECTS = |
| ImmutableList.of( |
| TmfBaseAspects.getTimestampAspect(), |
| new BtfSourceAspect(), |
| new TmfContentFieldAspect(BtfColumnNames.SOURCE_INSTANCE.toString(), BtfColumnNames.SOURCE_INSTANCE.toString()), |
| TmfBaseAspects.getEventTypeAspect(), |
| new BtfTargetAspect(), |
| new TmfContentFieldAspect(BtfColumnNames.TARGET_INSTANCE.toString(), BtfColumnNames.TARGET_INSTANCE.toString()), |
| new TmfContentFieldAspect(BtfColumnNames.EVENT.toString(), BtfColumnNames.EVENT.toString()), |
| new TmfContentFieldAspect(BtfColumnNames.NOTES.toString(), BtfColumnNames.NOTES.toString()) |
| ); |
| |
| /** |
| * The "source" aspect, whose value comes from {@link ITmfEvent#getSource()} |
| */ |
| private static class BtfSourceAspect implements ITmfEventAspect<String> { |
| |
| @Override |
| public String getName() { |
| return BtfColumnNames.SOURCE.toString(); |
| } |
| |
| @Override |
| public String getHelpText() { |
| return EMPTY_STRING; |
| } |
| |
| @Override |
| public @Nullable String resolve(ITmfEvent event) { |
| if (!(event instanceof BtfEvent)) { |
| return EMPTY_STRING; |
| } |
| String ret = ((BtfEvent) event).getSource(); |
| return (ret == null ? EMPTY_STRING : ret); |
| } |
| } |
| |
| /** |
| * The "target" aspect, taking its value from |
| * {@link ITmfEvent#getTarget()}. |
| */ |
| private static class BtfTargetAspect implements ITmfEventAspect<String> { |
| |
| @Override |
| public String getName() { |
| return BtfColumnNames.TARGET.toString(); |
| } |
| |
| @Override |
| public String getHelpText() { |
| return EMPTY_STRING; |
| } |
| |
| @Override |
| public @Nullable String resolve(ITmfEvent event) { |
| if (!(event instanceof BtfEvent)) { |
| return EMPTY_STRING; |
| } |
| String ret = ((BtfEvent) event).getTarget(); |
| return (ret == null ? EMPTY_STRING : ret); |
| } |
| } |
| |
| /** |
| * Return the event aspects defined for BTF traces. |
| * |
| * @return The aspects |
| */ |
| public static Iterable<ITmfEventAspect<?>> getAspects() { |
| return BTF_ASPECTS; |
| } |
| } |