blob: beb6e228708fe8ccc029e8bb75d134f1bca28af7 [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2017, 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.analysis.counters.core.aspects;
import java.util.Objects;
import org.eclipse.jdt.annotation.NonNull;
import org.eclipse.jdt.annotation.Nullable;
import org.eclipse.tracecompass.internal.analysis.counters.core.Messages;
import org.eclipse.tracecompass.tmf.core.event.ITmfEvent;
/**
* Numerical aspect, useful for graphs. Not public since it is a trivial
* implementation of {@link ITmfCounterAspect}
*
* @author Matthew Khouzam
* @since 3.1
*/
public abstract class AbstractCounterAspect implements ITmfCounterAspect {
private final String fFieldName;
private final String fLabel;
/**
* Counter aspect
*
* @param fieldName
* The name of the counter field in an event
* @param label
* The label to display in "help"
*/
public AbstractCounterAspect(String fieldName, String label) {
fFieldName = fieldName;
fLabel = label;
}
@Override
public @NonNull String getName() {
return fLabel;
}
@Override
public @NonNull String getHelpText() {
return Messages.CounterAspect_HelpPrefix + ' ' + getName();
}
@Override
public @Nullable Long resolve(@NonNull ITmfEvent event) {
return event.getContent().getFieldValue(Long.class, fFieldName);
}
@Override
public String toString() {
return getClass().getSimpleName() + ' ' + fFieldName;
}
@Override
public int hashCode() {
return Objects.hash(fFieldName, fLabel);
}
/**
* {@inheritDoc}
*
* This is a conservative equals. It only works on very identical aspects.
*/
@Override
public boolean equals(@Nullable Object obj) {
if (this == obj) {
return true;
}
if (obj == null) {
return false;
}
if (getClass() != obj.getClass()) {
return false;
}
AbstractCounterAspect other = (AbstractCounterAspect) obj;
return Objects.equals(fFieldName, other.fFieldName) && Objects.equals(fLabel, other.fLabel);
}
}