tmf: Clean up tmf.core.trace package
[deliverable/tracecompass.git] / org.eclipse.linuxtools.tmf.core.tests / stubs / org / eclipse / linuxtools / tmf / tests / stubs / trace / TmfTraceStub.java
index 3267cc1b0b242bf3d808ee8f96fcbcc0200bd5de..8b7b430fcad9445a34a68439a19afdc76316abf8 100644 (file)
@@ -1,13 +1,14 @@
 /*******************************************************************************
- * Copyright (c) 2009, 2010 Ericsson
- * 
+ * Copyright (c) 2009, 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
  * accompanies this distribution, and is available at
  * http://www.eclipse.org/legal/epl-v10.html
- * 
+ *
  * Contributors:
  *   Francois Chouinard - Initial API and implementation
+ *   Patrick Tasse - Updated for removal of context clone
  *******************************************************************************/
 
 package org.eclipse.linuxtools.tmf.tests.stubs.trace;
@@ -17,25 +18,31 @@ import java.io.IOException;
 import java.io.RandomAccessFile;
 import java.util.concurrent.locks.ReentrantLock;
 
+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.core.Activator;
 import org.eclipse.linuxtools.tmf.core.event.ITmfEvent;
-import org.eclipse.linuxtools.tmf.core.event.ITmfTimestamp;
-import org.eclipse.linuxtools.tmf.core.event.TmfEvent;
-import org.eclipse.linuxtools.tmf.core.event.TmfTimeRange;
-import org.eclipse.linuxtools.tmf.core.parser.ITmfEventParser;
+import org.eclipse.linuxtools.tmf.core.exceptions.TmfTraceException;
+import org.eclipse.linuxtools.tmf.core.timestamp.ITmfTimestamp;
+import org.eclipse.linuxtools.tmf.core.timestamp.TmfTimeRange;
 import org.eclipse.linuxtools.tmf.core.trace.ITmfContext;
-import org.eclipse.linuxtools.tmf.core.trace.ITmfLocation;
+import org.eclipse.linuxtools.tmf.core.trace.ITmfEventParser;
 import org.eclipse.linuxtools.tmf.core.trace.ITmfTrace;
 import org.eclipse.linuxtools.tmf.core.trace.TmfContext;
-import org.eclipse.linuxtools.tmf.core.trace.TmfLocation;
 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;
 
 /**
  * <b><u>TmfTraceStub</u></b>
  * <p>
  * Dummy test trace. Use in conjunction with TmfEventParserStub.
  */
-@SuppressWarnings("nls")
-public class TmfTraceStub extends TmfTrace<TmfEvent> {
+@SuppressWarnings("javadoc")
+public class TmfTraceStub extends TmfTrace implements ITmfEventParser {
 
     // ------------------------------------------------------------------------
     // Attributes
@@ -44,90 +51,155 @@ public class TmfTraceStub extends TmfTrace<TmfEvent> {
     // The actual stream
     private RandomAccessFile fTrace;
 
-    // The associated event parser
-    private ITmfEventParser<TmfEvent> fParser;
+//    // The associated event parser
+//    private ITmfEventParser<TmfEvent> fParser;
 
     // The synchronization lock
-    private ReentrantLock fLock = new ReentrantLock();
-    
+    private final ReentrantLock fLock = new ReentrantLock();
+
+    private ITmfTimestamp fInitialRangeOffset = null;
+
     // ------------------------------------------------------------------------
     // Constructors
     // ------------------------------------------------------------------------
 
+    public TmfTraceStub() {
+        super();
+        setParser(new TmfEventParserStub(this));
+    }
+
+    /**
+     * @param path
+     * @throws FileNotFoundException
+     */
+    public TmfTraceStub(final String path) throws TmfTraceException {
+        this(path, ITmfTrace.DEFAULT_TRACE_CACHE_SIZE, false);
+    }
+
+    /**
+     * @param path
+     * @param cacheSize
+     * @throws FileNotFoundException
+     */
+    public TmfTraceStub(final String path, final int cacheSize) throws TmfTraceException {
+        this(path, cacheSize, false);
+    }
+
     /**
-     * @param filename
+     * @param path
+     * @param cacheSize
      * @throws FileNotFoundException
      */
-    public TmfTraceStub(String filename) throws FileNotFoundException {
-        this(filename, DEFAULT_INDEX_PAGE_SIZE, false);
+    public TmfTraceStub(final String path, final int cacheSize, final long interval) throws TmfTraceException {
+        super(null, ITmfEvent.class, path, cacheSize, interval, null, null);
+        try {
+            fTrace = new RandomAccessFile(path, "r"); //$NON-NLS-1$
+        } catch (FileNotFoundException e) {
+            throw new TmfTraceException(e.getMessage());
+        }
+        setParser(new TmfEventParserStub(this));
     }
 
     /**
-     * @param filename
+     * @param path
      * @param cacheSize
      * @throws FileNotFoundException
      */
-    public TmfTraceStub(String filename, int cacheSize) throws FileNotFoundException {
-        this(filename, cacheSize, false);
+    public TmfTraceStub(final String path, final int cacheSize, final ITmfTraceIndexer indexer) throws TmfTraceException {
+        this(path, cacheSize, false, null, indexer);
     }
 
     /**
-     * @param filename
+     * @param path
      * @param waitForCompletion
      * @throws FileNotFoundException
      */
-    public TmfTraceStub(String filename, boolean waitForCompletion) throws FileNotFoundException {
-        this(filename, DEFAULT_INDEX_PAGE_SIZE, waitForCompletion);
+    public TmfTraceStub(final String path, final boolean waitForCompletion) throws TmfTraceException {
+        this(path, ITmfTrace.DEFAULT_TRACE_CACHE_SIZE, waitForCompletion);
     }
-    
+
     /**
-     * @param filename
+     * @param path
      * @param cacheSize
      * @param waitForCompletion
      * @throws FileNotFoundException
      */
-    public TmfTraceStub(String filename, int cacheSize, boolean waitForCompletion) throws FileNotFoundException {
-        super(null, TmfEvent.class, filename, cacheSize, false);
-        fTrace = new RandomAccessFile(filename, "r");
-        fParser = new TmfEventParserStub();
+    public TmfTraceStub(final String path, final int cacheSize, final boolean waitForCompletion) throws TmfTraceException {
+        super(null, ITmfEvent.class, path, cacheSize, 0, null, null);
+        try {
+            fTrace = new RandomAccessFile(path, "r"); //$NON-NLS-1$
+        } catch (FileNotFoundException e) {
+            throw new TmfTraceException(e.getMessage());
+        }
+        setParser(new TmfEventParserStub(this));
+        if (waitForCompletion) {
+            indexTrace(true);
+        }
     }
 
-    
     /**
-     * @param filename
+     * @param path
+     * @param cacheSize
+     * @param waitForCompletion
+     * @throws FileNotFoundException
+     */
+    public TmfTraceStub(final IResource resource,  final String path, final int cacheSize, final boolean waitForCompletion) throws TmfTraceException {
+        super(resource, ITmfEvent.class, path, cacheSize, 0, null, null);
+        try {
+            fTrace = new RandomAccessFile(path, "r"); //$NON-NLS-1$
+        } catch (FileNotFoundException e) {
+            throw new TmfTraceException(e.getMessage());
+        }
+        setParser(new TmfEventParserStub(this));
+    }
+
+    /**
+     * @param path
      * @param cacheSize
      * @param waitForCompletion
      * @param parser
      * @throws FileNotFoundException
      */
-    public TmfTraceStub(String filename, int cacheSize, boolean waitForCompletion, ITmfEventParser<TmfEvent> parser) throws FileNotFoundException {
-        super(filename, TmfEvent.class, filename, cacheSize, false);
-        fTrace = new RandomAccessFile(filename, "r");
-        fParser = parser;
+    public TmfTraceStub(final String path, final int cacheSize, final boolean waitForCompletion,
+            final ITmfEventParser parser, final ITmfTraceIndexer indexer) throws TmfTraceException {
+        super(null, ITmfEvent.class, path, cacheSize, 0, indexer, null);
+        try {
+            fTrace = new RandomAccessFile(path, "r"); //$NON-NLS-1$
+        } catch (FileNotFoundException e) {
+            throw new TmfTraceException(e.getMessage());
+        }
+        setParser((parser != null) ? parser : new TmfEventParserStub(this));
     }
-    
+
     /**
+     * Copy constructor
      */
+    public TmfTraceStub(final TmfTraceStub trace) throws TmfTraceException {
+        super(trace);
+        try {
+            fTrace = new RandomAccessFile(getPath(), "r"); //$NON-NLS-1$
+        } catch (FileNotFoundException e) {
+            throw new TmfTraceException(e.getMessage());
+        }
+        setParser(new TmfEventParserStub(this));
+    }
+
     @Override
-       public TmfTraceStub clone() {
-       TmfTraceStub clone = null;
-               try {
-                       clone = (TmfTraceStub) super.clone();
-               clone.fTrace  = new RandomAccessFile(getPath(), "r");
-               clone.fParser = new TmfEventParserStub();
-               } catch (CloneNotSupportedException e) {
-               } catch (FileNotFoundException e) {
-               }
-       return clone;
+    public void initTrace(final IResource resource, final String path, final Class<? extends ITmfEvent> type) throws TmfTraceException {
+        try {
+            fTrace = new RandomAccessFile(path, "r"); //$NON-NLS-1$
+        } catch (FileNotFoundException e) {
+            throw new TmfTraceException(e.getMessage());
+        }
+        setParser(new TmfEventParserStub(this));
+        super.initTrace(resource, path, type);
     }
+
     @Override
-       public ITmfTrace<TmfEvent> copy() {
-               ITmfTrace<TmfEvent> returnedValue = null;
-               returnedValue = clone();
-               return returnedValue;
-       }
-    
+    public void initialize(final IResource resource, final String path, final Class<? extends ITmfEvent> type) throws TmfTraceException {
+        super.initialize(resource, path, type);
+    }
+
     // ------------------------------------------------------------------------
     // Accessors
     // ------------------------------------------------------------------------
@@ -136,70 +208,86 @@ public class TmfTraceStub extends TmfTrace<TmfEvent> {
         return fTrace;
     }
 
+    public void setInitialRangeOffset(ITmfTimestamp initOffset) {
+        fInitialRangeOffset = initOffset;
+    }
+
+    @Override
+    public ITmfTimestamp getInitialRangeOffset() {
+        if (fInitialRangeOffset != null) {
+            return fInitialRangeOffset;
+        }
+        return super.getInitialRangeOffset();
+    }
+
     // ------------------------------------------------------------------------
     // Operators
     // ------------------------------------------------------------------------
 
-       @Override
-       @SuppressWarnings("unchecked")
-       public TmfContext seekLocation(ITmfLocation<?> location) {
-           fLock.lock();
+    @Override
+    public TmfContext seekEvent(final ITmfLocation location) {
         try {
-            if (fTrace != null) {
-                // Position the trace at the requested location and
-                // returns the corresponding context
-                long loc  = 0;
-                long rank = 0;
-                if (location != null) {
-                    loc = ((TmfLocation<Long>) location).getLocation();
-                    rank = ITmfContext.UNKNOWN_RANK;
-                }
-                if (loc != fTrace.getFilePointer()) {
-                    fTrace.seek(loc);
+            fLock.lock();
+            try {
+                if (fTrace != null) {
+                    // Position the trace at the requested location and
+                    // returns the corresponding context
+                    long loc  = 0;
+                    long rank = 0;
+                    if (location != null) {
+                        loc = (Long) location.getLocationInfo();
+                        rank = ITmfContext.UNKNOWN_RANK;
+                    }
+                    if (loc != fTrace.getFilePointer()) {
+                        fTrace.seek(loc);
+                    }
+                    final TmfContext context = new TmfContext(getCurrentLocation(), rank);
+                    return context;
                 }
-                TmfContext context = new TmfContext(getCurrentLocation(), rank);
-                return context;
+            } catch (final IOException e) {
+                e.printStackTrace();
+            } catch (final NullPointerException e) {
+                e.printStackTrace();
             }
-               } catch (IOException e) {
-                       e.printStackTrace();
-               }
-        finally{
-            fLock.unlock();
+            finally{
+                fLock.unlock();
+            }
+        } catch (final NullPointerException e) {
+            e.printStackTrace();
         }
-               return null;
+        return null;
     }
 
 
-       @Override
-    public TmfContext seekLocation(double ratio) {
-           fLock.lock();
+    @Override
+    public TmfContext seekEvent(final double ratio) {
+        fLock.lock();
         try {
             if (fTrace != null) {
-                ITmfLocation<?> location = new TmfLocation<Long>(Long.valueOf((long) (ratio * fTrace.length())));
-                TmfContext context = seekLocation(location);
+                final ITmfLocation location = new TmfLongLocation(Long.valueOf(Math.round(ratio * fTrace.length())));
+                final TmfContext context = seekEvent(location);
                 context.setRank(ITmfContext.UNKNOWN_RANK);
                 return context;
             }
-        } catch (IOException e) {
+        } catch (final IOException e) {
             e.printStackTrace();
         } finally {
             fLock.unlock();
         }
-        
+
         return null;
     }
 
     @Override
-    @SuppressWarnings("rawtypes")
     public double getLocationRatio(ITmfLocation location) {
         fLock.lock();
         try {
             if (fTrace != null) {
-                if (location.getLocation() instanceof Long) {
-                    return (double) ((Long) location.getLocation()) / fTrace.length();
+                if (location.getLocationInfo() instanceof Long) {
+                    return (double) ((Long) location.getLocationInfo()) / fTrace.length();
                 }
             }
-        } catch (IOException e) {
+        } catch (final IOException e) {
             e.printStackTrace();
         } finally {
             fLock.unlock();
@@ -208,13 +296,13 @@ public class TmfTraceStub extends TmfTrace<TmfEvent> {
     }
 
     @Override
-       public TmfLocation<Long> getCurrentLocation() {
+    public ITmfLocation getCurrentLocation() {
         fLock.lock();
         try {
             if (fTrace != null) {
-                return new TmfLocation<Long>(fTrace.getFilePointer());
+                return new TmfLongLocation(fTrace.getFilePointer());
             }
-        } catch (IOException e) {
+        } catch (final IOException e) {
             e.printStackTrace();
         } finally {
             fLock.unlock();
@@ -222,53 +310,68 @@ public class TmfTraceStub extends TmfTrace<TmfEvent> {
         return null;
     }
 
-       @Override
-       public ITmfEvent parseEvent(ITmfContext context) {
-           fLock.lock();
-               try {
-                       // parseNextEvent will update the context
-                   if (fTrace != null) {
-                       ITmfEvent event = fParser.parseNextEvent(this, context.clone());
-                       return event;
-                   }
-               }
-               catch (IOException e) {
-                       e.printStackTrace();
-               } finally {
-                   fLock.unlock();
-               }
-               return null;
-       }
-
-       @Override
-       public void setTimeRange(TmfTimeRange range) {
-       super.setTimeRange(range);
+    @Override
+    public ITmfEvent parseEvent(final ITmfContext context) {
+        fLock.lock();
+        try {
+            // parseNextEvent will update the context
+            if (fTrace != null && getParser() != null && context != null) {
+                final ITmfEvent event = getParser().parseEvent(context);
+                return event;
+            }
+        } finally {
+            fLock.unlock();
+        }
+        return null;
     }
 
-       @Override
-       public void setStartTime(ITmfTimestamp startTime) {
-       super.setStartTime(startTime);
+    @Override
+    public synchronized void setNbEvents(final long nbEvents) {
+        super.setNbEvents(nbEvents);
     }
 
-       @Override
-       public void setEndTime(ITmfTimestamp endTime) {
-       super.setEndTime(endTime);
+    @Override
+    public void setTimeRange(final TmfTimeRange range) {
+        super.setTimeRange(range);
     }
-       
-       @Override
-       public void dispose() {
-           fLock.lock();
-           try {
-               if (fTrace != null) {
-                   fTrace.close();
-                   fTrace = null;
-               }
-           } catch (IOException e) {
-               // Ignore
-           } finally {
-               fLock.unlock();  
-           }
-           super.dispose();
-       }
-
-}
\ No newline at end of file
+
+    @Override
+    public void setStartTime(final ITmfTimestamp startTime) {
+        super.setStartTime(startTime);
+    }
+
+    @Override
+    public void setEndTime(final ITmfTimestamp endTime) {
+        super.setEndTime(endTime);
+    }
+
+    @Override
+    public void setStreamingInterval(final long interval) {
+        super.setStreamingInterval(interval);
+    }
+
+    @Override
+    public synchronized void dispose() {
+        fLock.lock();
+        try {
+            if (fTrace != null) {
+                fTrace.close();
+                fTrace = null;
+            }
+        } catch (final IOException e) {
+            // Ignore
+        } finally {
+            fLock.unlock();
+        }
+        super.dispose();
+    }
+
+    @Override
+    public IStatus validate(IProject project, String path) {
+        if (fileExists(path)) {
+            return Status.OK_STATUS;
+        }
+        return new Status(IStatus.ERROR, Activator.PLUGIN_ID, "File does not exist: " + path);
+    }
+
+}
This page took 0.030545 seconds and 5 git commands to generate.