/*******************************************************************************
- * Copyright (c) 2010 Ericsson
+ * Copyright (c) 2010, 2013 Ericsson
*
* All rights reserved. This program and the accompanying materials are
* made available under the terms of the Eclipse Public License v1.0 which
import org.eclipse.core.resources.IProject;
import org.eclipse.core.resources.IResource;
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.core.runtime.Status;
import org.eclipse.linuxtools.internal.tmf.ui.Activator;
import org.eclipse.linuxtools.internal.tmf.ui.parsers.custom.CustomTxtTraceDefinition.InputLine;
import org.eclipse.linuxtools.tmf.core.event.ITmfEvent;
-import org.eclipse.linuxtools.tmf.core.event.TmfTimestamp;
import org.eclipse.linuxtools.tmf.core.exceptions.TmfTraceException;
import org.eclipse.linuxtools.tmf.core.io.BufferedRandomAccessFile;
+import org.eclipse.linuxtools.tmf.core.timestamp.TmfTimestamp;
import org.eclipse.linuxtools.tmf.core.trace.ITmfContext;
import org.eclipse.linuxtools.tmf.core.trace.ITmfEventParser;
-import org.eclipse.linuxtools.tmf.core.trace.ITmfLocation;
import org.eclipse.linuxtools.tmf.core.trace.TmfContext;
-import org.eclipse.linuxtools.tmf.core.trace.TmfLongLocation;
import org.eclipse.linuxtools.tmf.core.trace.TmfTrace;
+import org.eclipse.linuxtools.tmf.core.trace.indexer.ITmfTraceIndexer;
+import org.eclipse.linuxtools.tmf.core.trace.location.ITmfLocation;
+import org.eclipse.linuxtools.tmf.core.trace.location.TmfLongLocation;
+/**
+ * Base class for custom plain text traces.
+ *
+ * @author Patrick Tassé
+ */
public class CustomTxtTrace extends TmfTrace implements ITmfEventParser {
private static final TmfLongLocation NULL_LOCATION = new TmfLongLocation((Long) null);
private final CustomTxtEventType fEventType;
private BufferedRandomAccessFile fFile;
+ /**
+ * Basic constructor.
+ *
+ * @param definition
+ * Text trace definition
+ */
public CustomTxtTrace(final CustomTxtTraceDefinition definition) {
fDefinition = definition;
fEventType = new CustomTxtEventType(fDefinition);
setCacheSize(DEFAULT_CACHE_SIZE);
}
- public CustomTxtTrace(final IResource resource, final CustomTxtTraceDefinition definition, final String path, final int cacheSize) throws TmfTraceException {
+ /**
+ * Full constructor.
+ *
+ * @param resource
+ * Trace's resource.
+ * @param definition
+ * Text trace definition
+ * @param path
+ * Path to the trace file
+ * @param cacheSize
+ * Cache size to use
+ * @throws TmfTraceException
+ * If we couldn't open the trace at 'path'
+ */
+ public CustomTxtTrace(final IResource resource,
+ final CustomTxtTraceDefinition definition, final String path,
+ final int cacheSize) throws TmfTraceException {
this(definition);
setCacheSize((cacheSize > 0) ? cacheSize : DEFAULT_CACHE_SIZE);
initTrace(resource, path, CustomTxtEvent.class);
}
}
+ @Override
+ public ITmfTraceIndexer getIndexer() {
+ return super.getIndexer();
+ }
+
@Override
public synchronized TmfContext seekEvent(final ITmfLocation location) {
final CustomTxtTraceContext context = new CustomTxtTraceContext(NULL_LOCATION, ITmfContext.UNKNOWN_RANK);
}
}
}
- if (! processed) {
+ if (!processed && currentInput != null) {
final Matcher matcher = currentInput.getPattern().matcher(line);
if (matcher.find()) {
event.processGroups(currentInput, matcher);
return event;
}
+ /**
+ * @return The first few lines of the text file
+ */
public List<InputLine> getFirstLines() {
return fDefinition.inputs;
}
+ /**
+ * Parse the first line of the trace (to recognize the type).
+ *
+ * @param context
+ * Trace context
+ * @return The first event
+ */
public CustomTxtEvent parseFirstLine(final CustomTxtTraceContext context) {
final CustomTxtEvent event = new CustomTxtEvent(fDefinition, this, TmfTimestamp.ZERO, "", fEventType, ""); //$NON-NLS-1$ //$NON-NLS-2$
event.processGroups(context.inputLine, context.firstLineMatcher);
return event;
}
+ /**
+ * Get the trace definition.
+ *
+ * @return The trace definition
+ */
public CustomTraceDefinition getDefinition() {
return fDefinition;
}
- /* (non-Javadoc)
- * @see org.eclipse.linuxtools.tmf.core.trace.ITmfTrace#validate(org.eclipse.core.resources.IProject, java.lang.String)
- */
@Override
- public boolean validate(IProject project, String path) {
- return fileExists(path);
+ public IStatus validate(IProject project, String path) {
+ if( fileExists(path)) {
+ return Status.OK_STATUS;
+ }
+ return new Status(IStatus.ERROR, Activator.PLUGIN_ID ,Messages.CustomTrace_FileNotFound + ": " + path); //$NON-NLS-1$
}
}