package org.eclipse.tracecompass.tmf.core.trace;
-import static org.eclipse.tracecompass.common.core.NonNullUtils.checkNotNull;
-
import java.io.File;
import java.util.Collection;
import java.util.Collections;
import org.eclipse.tracecompass.tmf.core.event.ITmfEvent;
import org.eclipse.tracecompass.tmf.core.event.ITmfLostEvent;
import org.eclipse.tracecompass.tmf.core.event.TmfEvent;
+import org.eclipse.tracecompass.tmf.core.event.aspect.TmfBaseAspects;
import org.eclipse.tracecompass.tmf.core.event.aspect.ITmfEventAspect;
import org.eclipse.tracecompass.tmf.core.exceptions.TmfAnalysisException;
import org.eclipse.tracecompass.tmf.core.exceptions.TmfTraceException;
import org.eclipse.tracecompass.tmf.core.synchronization.ITmfTimestampTransform;
import org.eclipse.tracecompass.tmf.core.synchronization.TimestampTransformFactory;
import org.eclipse.tracecompass.tmf.core.timestamp.ITmfTimestamp;
-import org.eclipse.tracecompass.tmf.core.timestamp.TmfNanoTimestamp;
import org.eclipse.tracecompass.tmf.core.timestamp.TmfTimeRange;
import org.eclipse.tracecompass.tmf.core.timestamp.TmfTimestamp;
import org.eclipse.tracecompass.tmf.core.trace.indexer.ITmfTraceIndexer;
import org.eclipse.tracecompass.tmf.core.trace.location.ITmfLocation;
import com.google.common.collect.ImmutableList;
-import com.google.common.collect.Multimap;
/**
* Abstract implementation of ITmfTrace.
/**
* Basic aspects that should be valid for all trace types.
*/
- public static final @NonNull Collection<ITmfEventAspect> BASE_ASPECTS =
- checkNotNull(ImmutableList.of(
- ITmfEventAspect.BaseAspects.TIMESTAMP,
- ITmfEventAspect.BaseAspects.EVENT_TYPE,
- ITmfEventAspect.BaseAspects.CONTENTS
- ));
+ public static final @NonNull Collection<@NonNull ITmfEventAspect<?>> BASE_ASPECTS =
+ ImmutableList.of(
+ TmfBaseAspects.getTimestampAspect(),
+ TmfBaseAspects.getEventTypeAspect(),
+ TmfBaseAspects.getContentsAspect()
+ );
// ------------------------------------------------------------------------
// Instance attributes
protected IStatus executeAnalysis() {
MultiStatus status = new MultiStatus(Activator.PLUGIN_ID, IStatus.OK, null, null);
- Multimap<String, IAnalysisModuleHelper> modules = TmfAnalysisManager.getAnalysisModules();
+ /* First modules are initialized */
+ Map<String, IAnalysisModuleHelper> modules = TmfAnalysisManager.getAnalysisModules(this.getClass());
for (IAnalysisModuleHelper helper : modules.values()) {
try {
IAnalysisModule module = helper.newModule(this);
continue;
}
fAnalysisModules.put(module.getId(), module);
- if (module.isAutomatic()) {
- status.add(module.schedule());
- }
} catch (TmfAnalysisException e) {
status.add(new Status(IStatus.WARNING, Activator.PLUGIN_ID, e.getMessage()));
}
}
+
+ /* Once all modules are initialized, automatic modules are executed */
+ for (IAnalysisModule module : getAnalysisModules()) {
+ if (module.isAutomatic()) {
+ status.add(module.schedule());
+ }
+ }
return status;
}
}
@Override
- public Iterable<ITmfEventAspect> getEventAspects() {
+ public Iterable<ITmfEventAspect<?>> getEventAspects() {
/* By default we provide only the base aspects valid for all trace types */
return BASE_ASPECTS;
}
@Override
public ITmfTimestamp getInitialRangeOffset() {
final long DEFAULT_INITIAL_OFFSET_VALUE = (1L * 100 * 1000 * 1000); // .1sec
- return new TmfTimestamp(DEFAULT_INITIAL_OFFSET_VALUE, ITmfTimestamp.NANOSECOND_SCALE);
+ return TmfTimestamp.fromNanos(DEFAULT_INITIAL_OFFSET_VALUE);
}
@Override
*
* @param context the current trace context
* @param event the corresponding event
- * @since 2.0
+ * @since 1.1
*/
protected synchronized void updateAttributes(final ITmfContext context, final @NonNull ITmfEvent event) {
ITmfTimestamp timestamp = event.getTimestamp();
@Override
public @NonNull ITmfTimestamp createTimestamp(long ts) {
- return new TmfNanoTimestamp(getTimestampTransform().transform(ts));
+ return TmfTimestamp.fromNanos(getTimestampTransform().transform(ts));
}
// ------------------------------------------------------------------------