ctf: Fix multiple coding style and typo issues while reading code.
[deliverable/tracecompass.git] / org.eclipse.linuxtools.ctf.core / src / org / eclipse / linuxtools / ctf / core / trace / CTFTraceReader.java
index 70626ed8b6826fa67d5b28ec1bbb5c5291070df0..392900187b5197b79d3fc51559b7a134ae0479ee 100644 (file)
@@ -1,26 +1,26 @@
 /*******************************************************************************
- * Copyright (c) 2011-2012 Ericsson, Ecole Polytechnique de Montreal and others
+ * Copyright (c) 2011, 2013 Ericsson, Ecole Polytechnique de Montreal and others
  *
  * 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: Matthew Khouzam - Initial API and implementation
- * Contributors: Alexandre Montplaisir - Initial API and implementation
+ * Contributors:
+ *     Matthew Khouzam - Initial API and implementation
+ *     Alexandre Montplaisir - Initial API and implementation
  *******************************************************************************/
 
 package org.eclipse.linuxtools.ctf.core.trace;
 
+import java.util.ArrayList;
 import java.util.Collection;
+import java.util.List;
 import java.util.PriorityQueue;
 import java.util.Set;
-import java.util.Vector;
 
 import org.eclipse.linuxtools.ctf.core.event.EventDefinition;
 import org.eclipse.linuxtools.internal.ctf.core.Activator;
-import org.eclipse.linuxtools.internal.ctf.core.trace.Stream;
-import org.eclipse.linuxtools.internal.ctf.core.trace.StreamInput;
 import org.eclipse.linuxtools.internal.ctf.core.trace.StreamInputReaderTimestampComparator;
 
 /**
@@ -44,12 +44,12 @@ public class CTFTraceReader {
     /**
      * Vector of all the trace file readers.
      */
-    private final Vector<StreamInputReader> streamInputReaders = new Vector<StreamInputReader>();
+    private final List<StreamInputReader> streamInputReaders = new ArrayList<StreamInputReader>();
 
     /**
      * Priority queue to order the trace file readers by timestamp.
      */
-    protected PriorityQueue<StreamInputReader> prio;
+    private PriorityQueue<StreamInputReader> prio;
 
     /**
      * Array to count the number of event per trace file.
@@ -94,7 +94,7 @@ public class CTFTraceReader {
          * Get the start Time of this trace bear in mind that the trace could be
          * empty.
          */
-        this.startTime = 0;// prio.peek().getPacketReader().getCurrentPacket().getTimestampBegin();
+        this.startTime = 0;
         if (hasMoreEvents()) {
             this.startTime = prio.peek().getCurrentEvent().getTimestamp();
             this.setEndTime(this.startTime);
@@ -115,6 +115,19 @@ public class CTFTraceReader {
         return newReader;
     }
 
+    /**
+     * Dispose the CTFTraceReader
+     * @since 2.0
+     */
+    public void dispose() {
+        for (StreamInputReader reader : streamInputReaders) {
+            if (reader != null) {
+                reader.dispose();
+            }
+        }
+        streamInputReaders.clear();
+    }
+
     // ------------------------------------------------------------------------
     // Getters/Setters/Predicates
     // ------------------------------------------------------------------------
@@ -134,10 +147,20 @@ public class CTFTraceReader {
      * @param endTime
      *            The end time to use
      */
-    protected void setEndTime(long endTime) {
+    protected final void setEndTime(long endTime) {
         this.endTime = endTime;
     }
 
+    /**
+     * Get the priority queue of this trace reader.
+     *
+     * @return The priority queue of input readers
+     * @since 2.0
+     */
+    protected PriorityQueue<StreamInputReader> getPrio() {
+        return prio;
+    }
+
 
     // ------------------------------------------------------------------------
     // Operations
@@ -183,6 +206,11 @@ public class CTFTraceReader {
      * lower next event timestamp.
      */
     private void populateStreamInputReaderHeap() {
+        if (this.streamInputReaders.isEmpty()) {
+            this.prio = new PriorityQueue<StreamInputReader>();
+            return;
+        }
+
         /*
          * Create the priority queue with a size twice as bigger as the number
          * of reader in order to avoid constant resizing.
@@ -229,9 +257,6 @@ public class CTFTraceReader {
      * @return True if an event was read.
      */
     public boolean advance() {
-        /*
-         * Index the
-         */
         /*
          * Remove the reader from the top of the priority queue.
          */
@@ -278,15 +303,16 @@ public class CTFTraceReader {
     }
 
     /**
-     * Seeks to a given timestamp It will go to the event just after the
-     * timestamp or the timestamp itself. if a if a trace is 10 20 30 40 and
-     * you're looking for 19, it'll give you 20, it you want 20, you'll get 20,
-     * if you want 21, you'll get 30. You want -inf, you'll get the first
-     * element, you want +inf, you'll get the end of the file with no events.
+     * Seeks to a given timestamp. It will seek to the nearest event greater or
+     * equal to timestamp. If a trace is [10 20 30 40] and you are looking for
+     * 19, it will give you 20. If you want 20, you will get 20, if you want 21,
+     * you will get 30. The value -inf will seek to the first element and the
+     * value +inf will seek to the end of the file (past the last event).
      *
      * @param timestamp
      *            the timestamp to seek to
-     * @return true if the trace has more events following the timestamp
+     * @return true if there are events above or equal the seek timestamp,
+     *         false if seek at the end of the trace (no valid event).
      */
     public boolean seek(long timestamp) {
         /*
@@ -302,36 +328,15 @@ public class CTFTraceReader {
             /*
              * Add it to the priority queue if there is a current event.
              */
-
-        }
-        for (StreamInputReader streamInputReader : this.streamInputReaders) {
             if (streamInputReader.getCurrentEvent() != null) {
                 this.prio.add(streamInputReader);
-
             }
         }
         return hasMoreEvents();
     }
 
-//    /**
-//     * Go to the first entry of a trace
-//     *
-//     * @return 0, the first index.
-//     */
-//    private long goToZero() {
-//        long tempIndex;
-//        for (StreamInputReader streamInputReader : this.streamInputReaders) {
-//            /*
-//             * Seek the trace reader.
-//             */
-//            streamInputReader.seek(0);
-//        }
-//        tempIndex = 0;
-//        return tempIndex;
-//    }
-
     /**
-     * gets the stream with the oldest event
+     * Gets the stream with the oldest event
      *
      * @return the stream with the oldest event
      */
@@ -344,7 +349,7 @@ public class CTFTraceReader {
      *
      * @return true if yes.
      */
-    public boolean hasMoreEvents() {
+    public final boolean hasMoreEvents() {
         return this.prio.size() > 0;
     }
 
@@ -377,7 +382,8 @@ public class CTFTraceReader {
             long len = (width * this.eventCountPerTraceFile[se.getName()])
                     / numEvents;
 
-            StringBuilder sb = new StringBuilder(se.getFilename() + "\t["); //$NON-NLS-1$
+            StringBuilder sb = new StringBuilder(se.getFilename());
+            sb.append("\t["); //$NON-NLS-1$
 
             for (int i = 0; i < len; i++) {
                 sb.append('+');
@@ -388,12 +394,12 @@ public class CTFTraceReader {
             }
 
             sb.append("]\t" + this.eventCountPerTraceFile[se.getName()] + " Events"); //$NON-NLS-1$//$NON-NLS-2$
-            Activator.getDefault().log(sb.toString());
+            Activator.log(sb.toString());
         }
     }
 
     /**
-     * gets the last event timestamp that was read. This is NOT necessarily the
+     * Gets the last event timestamp that was read. This is NOT necessarily the
      * last event in a trace, just the last one read so far.
      *
      * @return the last event
@@ -407,9 +413,7 @@ public class CTFTraceReader {
         final int prime = 31;
         int result = 1;
         result = (prime * result) + (int) (startTime ^ (startTime >>> 32));
-        result = (prime * result)
-                + ((streamInputReaders == null) ? 0 : streamInputReaders
-                        .hashCode());
+        result = (prime * result) + streamInputReaders.hashCode();
         result = (prime * result) + ((trace == null) ? 0 : trace.hashCode());
         return result;
     }
@@ -426,11 +430,7 @@ public class CTFTraceReader {
             return false;
         }
         CTFTraceReader other = (CTFTraceReader) obj;
-        if (streamInputReaders == null) {
-            if (other.streamInputReaders != null) {
-                return false;
-            }
-        } else if (!streamInputReaders.equals(other.streamInputReaders)) {
+        if (!streamInputReaders.equals(other.streamInputReaders)) {
             return false;
         }
         if (trace == null) {
@@ -443,11 +443,6 @@ public class CTFTraceReader {
         return true;
     }
 
-    /*
-     * (non-Javadoc)
-     *
-     * @see java.lang.Object#toString()
-     */
     @Override
     public String toString() {
         /* Only for debugging, shouldn't be externalized */
This page took 0.027249 seconds and 5 git commands to generate.