tmf: Clean up tmf.core.trace package
[deliverable/tracecompass.git] / org.eclipse.linuxtools.tmf.ui / src / org / eclipse / linuxtools / internal / tmf / ui / parsers / custom / CustomTxtTrace.java
index c9fdfa31601791553b7f6df56e2a864e89f313d9..513fa43ad6a0bd4cca037fda0f0e471e329ed79b 100644 (file)
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * 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
@@ -22,19 +22,27 @@ import java.util.regex.Matcher;
 
 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);
@@ -44,13 +52,35 @@ public class CustomTxtTrace extends TmfTrace implements ITmfEventParser {
     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);
@@ -79,6 +109,11 @@ public class CustomTxtTrace extends TmfTrace implements ITmfEventParser {
         }
     }
 
+    @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);
@@ -280,7 +315,7 @@ public class CustomTxtTrace extends TmfTrace implements ITmfEventParser {
                             }
                         }
                     }
-                    if (! processed) {
+                    if (!processed && currentInput != null) {
                         final Matcher matcher = currentInput.getPattern().matcher(line);
                         if (matcher.find()) {
                             event.processGroups(currentInput, matcher);
@@ -323,10 +358,20 @@ public class CustomTxtTrace extends TmfTrace implements ITmfEventParser {
         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);
@@ -334,15 +379,20 @@ public class CustomTxtTrace extends TmfTrace implements ITmfEventParser {
         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$
     }
 }
This page took 0.026294 seconds and 5 git commands to generate.